From 81afabba3f77fcac3172368542b9e75b231a21e1 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Wed, 17 Apr 2002 15:04:16 +0000 Subject: [PATCH] Synthetic commit for tag v_2_9_14 --- ChangeLog | 30 +- GNUmakefile.in | 104 +- Makefile | 7 +- README | 27 +- acconfig.h | 8 - cgi.c | 9 +- config | 6 +- configure.in | 22 +- default.action | 389 +-- doc/source/buildsource.sgml | 41 +- doc/source/contacting.sgml | 28 +- doc/source/developer-manual.sgml | 816 ++--- doc/source/faq.sgml | 9 +- doc/source/newfeatures.sgml | 22 +- doc/source/p-authors.sgml | 36 +- doc/source/privoxy-man-page.sgml | 22 +- doc/source/privoxy.sgml | 17 +- doc/source/readme.sgml | 6 +- doc/source/supported.sgml | 8 +- doc/source/user-manual.sgml | 2753 +++++++---------- doc/source/webserver/index.sgml | 68 +- doc/text/developer-manual.txt | 214 +- doc/text/faq.txt | 23 +- doc/text/user-manual.txt | 70 +- doc/webserver/actions/index.php | 17 +- doc/webserver/actions/step2.php | 7 +- doc/webserver/actions/step3.php | 24 +- doc/webserver/developer-manual/coding.html | 54 +- doc/webserver/developer-manual/contact.html | 27 +- doc/webserver/developer-manual/copyright.html | 4 +- .../developer-manual/documentation.html | 50 +- doc/webserver/developer-manual/index.html | 17 +- .../developer-manual/newrelease.html | 114 +- .../developer-manual/quickstart.html | 42 +- doc/webserver/faq/contact.html | 27 +- doc/webserver/faq/copyright.html | 4 +- doc/webserver/faq/index.html | 6 +- doc/webserver/faq/misc.html | 2 +- doc/webserver/index.html | 53 +- doc/webserver/team/01stefanw.jpg | Bin 10327 -> 0 bytes doc/webserver/team/01stefanw_t.jpg | Bin 1896 -> 0 bytes doc/webserver/team/02jon.jpg | Bin 85888 -> 0 bytes doc/webserver/team/02jon_t.jpg | Bin 2039 -> 0 bytes doc/webserver/team/03andreas.jpg | Bin 15453 -> 0 bytes doc/webserver/team/03andreas_t.jpg | Bin 2159 -> 0 bytes doc/webserver/team/04rodney.jpg | Bin 57055 -> 0 bytes doc/webserver/team/04rodney_t.jpg | Bin 2138 -> 0 bytes doc/webserver/team/05david.jpg | Bin 62834 -> 0 bytes doc/webserver/team/05david_t.jpg | Bin 3950 -> 0 bytes doc/webserver/team/05member.jpg | Bin 932 -> 0 bytes doc/webserver/team/05member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/06member.jpg | Bin 932 -> 0 bytes doc/webserver/team/06member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/07member.jpg | Bin 932 -> 0 bytes doc/webserver/team/07member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/08member.jpg | Bin 932 -> 0 bytes doc/webserver/team/08member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/09member.jpg | Bin 932 -> 0 bytes doc/webserver/team/09member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/10member.jpg | Bin 932 -> 0 bytes doc/webserver/team/10member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/11member.jpg | Bin 932 -> 0 bytes doc/webserver/team/11member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/12member.jpg | Bin 932 -> 0 bytes doc/webserver/team/12member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/13member.jpg | Bin 932 -> 0 bytes doc/webserver/team/13member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/14member.jpg | Bin 932 -> 0 bytes doc/webserver/team/14member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/15member.jpg | Bin 932 -> 0 bytes doc/webserver/team/15member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/16member.jpg | Bin 932 -> 0 bytes doc/webserver/team/16member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/17member.jpg | Bin 932 -> 0 bytes doc/webserver/team/17member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/18member.jpg | Bin 932 -> 0 bytes doc/webserver/team/18member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/19member.jpg | Bin 932 -> 0 bytes doc/webserver/team/19member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/20member.jpg | Bin 932 -> 0 bytes doc/webserver/team/20member_t.jpg | Bin 1049 -> 0 bytes doc/webserver/team/index.html | 83 - doc/webserver/user-manual/appendix.html | 20 +- doc/webserver/user-manual/configuration.html | 24 +- doc/webserver/user-manual/contact.html | 27 +- doc/webserver/user-manual/copyright.html | 2 +- doc/webserver/user-manual/index.html | 30 +- doc/webserver/user-manual/installation.html | 67 + doc/webserver/user-manual/quickstart.html | 2 +- icons/os2.ico | Bin 2968 -> 2456 bytes privoxy-rh.spec | 11 +- privoxy-suse.spec | 37 +- privoxy.1 | 10 +- project.h | 7 +- templates/mod-support-and-service | 5 +- testdrive.status | 22 +- 96 files changed, 2226 insertions(+), 3304 deletions(-) delete mode 100644 doc/webserver/team/01stefanw.jpg delete mode 100644 doc/webserver/team/01stefanw_t.jpg delete mode 100644 doc/webserver/team/02jon.jpg delete mode 100644 doc/webserver/team/02jon_t.jpg delete mode 100644 doc/webserver/team/03andreas.jpg delete mode 100644 doc/webserver/team/03andreas_t.jpg delete mode 100644 doc/webserver/team/04rodney.jpg delete mode 100644 doc/webserver/team/04rodney_t.jpg delete mode 100644 doc/webserver/team/05david.jpg delete mode 100644 doc/webserver/team/05david_t.jpg delete mode 100644 doc/webserver/team/05member.jpg delete mode 100644 doc/webserver/team/05member_t.jpg delete mode 100644 doc/webserver/team/06member.jpg delete mode 100644 doc/webserver/team/06member_t.jpg delete mode 100644 doc/webserver/team/07member.jpg delete mode 100644 doc/webserver/team/07member_t.jpg delete mode 100644 doc/webserver/team/08member.jpg delete mode 100644 doc/webserver/team/08member_t.jpg delete mode 100644 doc/webserver/team/09member.jpg delete mode 100644 doc/webserver/team/09member_t.jpg delete mode 100644 doc/webserver/team/10member.jpg delete mode 100644 doc/webserver/team/10member_t.jpg delete mode 100644 doc/webserver/team/11member.jpg delete mode 100644 doc/webserver/team/11member_t.jpg delete mode 100644 doc/webserver/team/12member.jpg delete mode 100644 doc/webserver/team/12member_t.jpg delete mode 100644 doc/webserver/team/13member.jpg delete mode 100644 doc/webserver/team/13member_t.jpg delete mode 100644 doc/webserver/team/14member.jpg delete mode 100644 doc/webserver/team/14member_t.jpg delete mode 100644 doc/webserver/team/15member.jpg delete mode 100644 doc/webserver/team/15member_t.jpg delete mode 100644 doc/webserver/team/16member.jpg delete mode 100644 doc/webserver/team/16member_t.jpg delete mode 100644 doc/webserver/team/17member.jpg delete mode 100644 doc/webserver/team/17member_t.jpg delete mode 100644 doc/webserver/team/18member.jpg delete mode 100644 doc/webserver/team/18member_t.jpg delete mode 100644 doc/webserver/team/19member.jpg delete mode 100644 doc/webserver/team/19member_t.jpg delete mode 100644 doc/webserver/team/20member.jpg delete mode 100644 doc/webserver/team/20member_t.jpg delete mode 100644 doc/webserver/team/index.html diff --git a/ChangeLog b/ChangeLog index b14964ef..82ff82b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,48 +17,48 @@ ChangeLog for Privoxy *** Version 2.9.13 Beta *** - *NEWS*: The project has been renamed to Privoxy! The new name is - reflected throughout (file locations, etc). +reflected throughout (file locations, etc). - ijb.action is now default.action. re_filterfile is now - default.filter. +default.filter. - http://i.j.b/ is now http://p.p/ - The 'logo' option for replacing ad iamges is removed now. 'Pattern' - (checkerboard) is now the default. +(checkerboard) is now the default. - RPM spec file make over. *** Version 2.9.12 Beta *** - **READ**: The default listening PORT is NOW 8118!!! Changed from - 8000 due to conflict with NAS (Network Audio Server, whatever that - is.) +8000 due to conflict with NAS (Network Audio Server, whatever that +is.) - More CGI actions editor fixes and improvements. - Win32 command line fix ups. - re_filterfile now has modular sections that can be activated on a - per site basis. Some new goodies there too. +per site basis. Some new goodies there too. - +filter now takes arguments to match FILTER sections in re_filterfile - for even more flexibility. +for even more flexibility. - Added a new image blocker option: +image-blocker{pattern}, which - displays a checkerboard patthern and scales better than the logo. +displays a checkerboard patthern and scales better than the logo. - PNG images will be used in place of GIF for JB built-in images - if configured with --enable-no-gif. +if configured with --enable-no-gif. - Clean up compiler warnings (mostly). - Improved handling of failed DNS lookups & diagnostics for failed bind - to listen socket +to listen socket - Made --no-daemon mode log to tty instead of logfile. - Various spec file and init script cleanups and improvements (Redhat and - SuSE). +SuSE). - CGI Editor works on OS/2 now. - Fix restart failure where sockets were in TIME_WAIT. - Fixes for actions cgi editor, make sure we have right file. - A --pidfile command line option now, in addition to --help, - --version, --no-daemon, --user and configfile. --no-daemon replaces - the former -d option and _DEBUG define. --user will drop privileges - to the specified user. +--version, --no-daemon, --user and configfile. --no-daemon replaces +the former -d option and _DEBUG define. --user will drop privileges +to the specified user. - Signal handling cleanups (*nix). - CGI actions editor improvements and fixes. - Error handling improvements, especially out of memory. - Default re_filterfile fix that caused spurious IJB logos - (instead of 'blank'). +(instead of 'blank'). - configure.in threading fixes for Solaris. - Various other minor fixes. diff --git a/GNUmakefile.in b/GNUmakefile.in index 42094352..1965a857 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -1,6 +1,6 @@ # Note: Makefile is built automatically from Makefile.in # -# $Id: GNUmakefile.in,v 1.85 2002/04/14 01:05:34 hal9 Exp $ +# $Id: GNUmakefile.in,v 1.78 2002/04/09 13:37:11 sarantis Exp $ # # Written by and Copyright (C) 2001 the SourceForge # Privoxy team. http://www.privoxy.org/ @@ -82,7 +82,7 @@ LN = ln WDUMP = @WDUMP@ -dump JADECAT = @JADECAT@ JADEBIN = @JADEBIN@ -DB = $(JADEBIN) $(JADECAT) -ihtml -t sgml -D.. -d ldpOK.dsl\#html +DB = $(JADEBIN) $(JADECAT) -t sgml -ihtml -D.. -d ldpOK.dsl\#html DB2HTML = @DB2HTML@ DKPREFIX = @DKPREFIX@ MAN2HTML = @MAN2HTML@ @@ -263,7 +263,7 @@ dist-check: $(ECHO) "*** ***"; \ $(ECHO) "***************************************************"; \ $(ECHO) "Type \"yes i am sure\" if you are sure that you"; \ - $(ECHO) -n "really want to proceed: "; \ + $(ECHO) -n "want to continue: "; \ read answer; \ if [ "$$answer" != "yes i am sure" ]; then exit 1; fi \ fi; @@ -464,35 +464,50 @@ win-dist: ############################################################################# -# Tarball distribution: No CVS dirs, dotfiles, debian build dir, -# (FIXME:) only parts of the static / generated docs mix in doc/webserver +# Tarball distribution. Only source files. No binaries. ############################################################################# -tarball-dist: dist-check clean clobber - $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS) - - for i in `find . -type f -a -not \( -path "*/CVS*" -o -name ".*" \ - -o -path "*/debian/*" -o -path "*/actions/*" -o -name "*.php" \)`; do \ - files="$$files privoxy-$(VERSION)-$(CODE_STATUS)/$$i"; \ - done && \ - cd .. && $(TAR) cvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar $$files ; \ +MISC_FILES = install-sh config.sub configure.in GNUmakefile.in config.h.in config.guess privoxy* +tarball-dist: dist-check + $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS) +# add source files + for foo in `find . -name "*.c"`; do \ + (cd .. && $(TAR) -uvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \ + done; +# add header files + for foo in `find . -name "*.h"`; do \ + (cd .. && $(TAR) -uvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \ + done; +# add config files + for foo in $(CONFIG_FILES); do \ + (cd .. && $(TAR) -uvhf privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \ + done; +# add misc files + for foo in $(MISC_FILES); do \ + (cd .. && $(TAR) -uvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \ + done; +# add documentation + for foo in $(DOC_FILES); do \ + (cd .. && $(TAR) -uvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \ + done; # and zip the archive - $(RM) ../privoxy-$(VERSION)-$(CODE_STATUS) + $(RM) ../privoxy-$(VERSION)-$(CODE_STATUS) $(GZIP_PROG) ../privoxy-$(VERSION)-$(CODE_STATUS)-src.tar @$(ECHO) Tarball distribution created. # anonymously ncftps the tarball to sourceforge tarball-upload: - ncftpput -u anonymous -p ijbswa-developers@lists.sourceforge.net upload.sourceforge.net /incoming ../privoxy-$(VERSION)-$(CODE_STATUS)-src.tar.gz + ncftpput -u anonymous -p ijbswa-developers@lists.sourceforge.net upload.sourceforge.net /incoming privoxy-$(VERSION)-$(CODE_STATUS)-src.tar.gz @$(ECHO) ------------------------------------------------------- @$(ECHO) Now goto @$(ECHO) http://sourceforge.net/project/admin/editpackages.php?group_id=11118 @$(ECHO) ... and release the files. @$(ECHO) ------------------------------------------------------- +# handle with care tarball-clean: - $(RM) ../privoxy-$(VERSION)-$(CODE_STATUS)-src.tar.gz + $(RM) privoxy-$(VERSION)-$(CODE_STATUS)-src.tar.gz ############################################################################# # @@ -557,12 +572,13 @@ dok-readme: doc/source/ldpOK.dsl # webserver files dok-webserver: doc/source/ldpOK.dsl cd doc/source/webserver && $(DB) -V nochunks index.sgml > ../../webserver/index.html - $(PERL) -pi.bak -e 's/..\/p_doc.css/p_web.css/;\ + $(PERL) -pi -e 's/..\/p_doc.css/p_web.css/;\ s/<\/HEAD/\n<\/HEAD/;\ s/<\/HEAD/\n<\/HEAD/'\ - doc/webserver/index.html && rm -f doc/source/webserver/*.bak + doc/webserver/index.html -# Main documentation target. +# Removed dok-man 04/08/02, hal. Added authors and dok-release. And +# dok-webserver! dok: dok-release dok-devel dok-user dok-faq dok-readme dok-webserver authors # kludge to force recreation on next run. Rodgrigo? @rm -f doc/source/ldpOK.dsl @@ -581,10 +597,10 @@ man2html: mkdir -p doc/webserver/man-page ifneq ($(MAN2HTML),false) $(MAN2HTML) privoxy.1 |grep -v "^Content-type" > tmp.html - $(PERL) -pi.bak -e 's///; s//man2html/' tmp.html - $(PERL) -pi.bak -e 's/(<\/HEAD>)/<\/HEAD>/' tmp.html -# Get rid of spurious  from conversion. (How to do this with perl?) - $(SED) -e 's///g' tmp.html > doc/webserver/man-page/privoxy-man-page.html && rm -f tmp.* + $(PERL) -pi -e 's///; s//man2html/' tmp.html + $(PERL) -pi -e 's/(<\/HEAD>)/<\/HEAD>/' tmp.html +# Get rid of spurious  from converion. (How to do this with perl?) + $(SED) -e 's///g' tmp.html > doc/webserver/man-page/privoxy-man-page.html && rm -f tmp.html else $(MAKE) groff2html endif @@ -604,13 +620,14 @@ authors: doc/source/ldpOK.dsl @rm -f doc/source/ldpOK.dsl # make a man page, and then (lousy) HTML version. -# Requires docbook2man (short perl script), see comments -# in privoxy-man-page.sgml. This target is not invoked from other dok targets. -# It is built separately due to dependencies on perl scripts. +# Requires docbook2man (short perl script), see CVS +# http://sources.redhat.com/docbook-tools/. Also requires openjade and SGMLSpm +# perl module. This target is not invoked from other dok targets. It is +# built separately due to dependencies on perl scripts. man: doc/source/ldpOK.dsl mkdir -p doc/source/man cd doc/source/man && docbook2man ../privoxy-man-page.sgml &&\ - perl -pi.bak -e 's/ //; s/\[ /\[/g' privoxy.1 + perl -pi -e 's/ //; s/\[ /\[/g' privoxy.1 cd doc/source/man && $(DB) ../privoxy-man-page.sgml &&\ mv -f index.html privoxy-man-page.html # This html is not used. See make man2html. @@ -621,24 +638,21 @@ man: doc/source/ldpOK.dsl # Set doc entities for VERSION and CODE_STATUS in sgml docs. Toggle content # exceptions accordingly. This needs to go before any doc building (doh). -dok-release: +make dok-release: @$(ECHO) Setting doc version and status to $(VERSION), $(CODE_STATUS) - @$(PERL) -pi.bak -e 's///;\ + @$(PERL) -pi -e 's///;\ s///' \ doc/source/*sgml doc/source/*/*sgml - rm -fr doc/source/*bak doc/source/*/*bak ifeq ($(CODE_STATUS),stable) @$(ECHO) Setting docs to stable $(VERSION) - @$(PERL) -pi.bak -e 's///;\ + @$(PERL) -pi -e 's///;\ s///' \ doc/source/*sgml doc/source/*/*sgml - rm -fr doc/source/*bak doc/source/*/*bak else @$(ECHO) Setting docs to not stable $(VERSION) - @$(PERL) -pi.bak -e 's///;\ + @$(PERL) -pi -e 's///;\ s///' \ doc/source/*sgml doc/source/*/*sgml - rm -fr doc/source/*bak doc/source/*/*bak endif ############################################################################# @@ -787,28 +801,6 @@ install: all ## end: # $Log: GNUmakefile.in,v $ -# Revision 1.85 2002/04/14 01:05:34 hal9 -# Revert dok-webserver change for SF logo. -# -# Revision 1.84 2002/04/13 22:43:25 hal9 -# -Fix dok-webserver for SF logo (more perl). -# -Change all perl -pi to perl -pi.bak for Cygwin problem. -# -# Revision 1.83 2002/04/12 09:39:25 oes -# Excluding yet more files from tarball; making dist warning yet more scary -# -# Revision 1.82 2002/04/11 21:07:11 oes -# Excluding more files from tarball build -# -# Revision 1.81 2002/04/11 14:40:27 oes -# Fixed typo -- Thanks, Moritz! -# -# Revision 1.80 2002/04/11 12:50:00 oes -# Fixed tarball-dist target -# -# Revision 1.79 2002/04/11 06:49:28 oes -# webserver target: silenced timestamp warnings resulting from uploading westwards, made permissions fixing independant of screwed local dir permissions, suppress (false alarm) make error if not owner of feedback log -# # Revision 1.78 2002/04/09 13:37:11 sarantis # fix tar options typo # diff --git a/Makefile b/Makefile index 5529111b..29812431 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.4 2002/04/09 16:38:10 oes Exp $ +# $Id: Makefile,v 1.3 2002/03/26 22:29:54 swa Exp $ # # Written by and Copyright (C) 2001 the SourceForge # Privoxy team. http://www.privoxy.org/ @@ -26,9 +26,6 @@ # Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # $Log: Makefile,v $ -# Revision 1.4 2002/04/09 16:38:10 oes -# Added option to run the whole build process -# # Revision 1.3 2002/03/26 22:29:54 swa # we have a new homepage! # @@ -56,7 +53,7 @@ error: echo "***"; \ echo -n "*** Shall I do this for you now? (y/n) "; \ read answer; \ - if [ $$answer = "y" ]; then \ + if [ $$answer == "y" ]; then \ autoheader && autoconf && ./configure && make;\ fi; \ fi diff --git a/README b/README index 0d738817..bb5bb1d8 100644 --- a/README +++ b/README @@ -33,7 +33,7 @@ *********************************************************************/ -This README is included with the development version of Privoxy 2.9.14, which +This README is included with the development version of Privoxy 2.9.13, which will eventually become Privoxy v3.0 (and soon we hope!). See http:// www.privoxy.org/ for more information. The current code level is beta, and seems stable to us :). @@ -76,8 +76,8 @@ There are several ways to install Privoxy. To build Privoxy from source, autoconf and GNU make (gmake) are required. Source is available as gzipped tar archives. For this, first unpack the source: - tar xzvf privoxy-2.9.14-beta-src* [.tgz or .tar.gz] - cd privoxy-2.9.14-beta + tar xzvf privoxy-2.9.13-beta-src* [.tgz or .tar.gz] + cd privoxy-2.9.13-beta For retrieving the current CVS sources, you'll need the CVS package installed @@ -174,12 +174,12 @@ Included documentation may vary according to platform and packager. We value your feedback. However, to provide you with the best support, please note: - * Use the Sourceforge Support Forum to get help: + * Use the Sourceforge Support Forum to get help: http://sourceforge.net/tracker/?group_id=11118&atid=211118 - * Submit bugs only through our Sourceforge Bug Forum: + * Submit bugs only through our Sourceforge Bug Forum: http://sourceforge.net/tracker/?group_id=11118&atid=111118. @@ -193,29 +193,30 @@ note: platform, browser, any pertinent log data, any other relevant details (please be specific) and, if possible, some way to reproduce the bug. - * Submit feature requests only through our Sourceforge feature request forum: + * Submit feature requests only through our Sourceforge feature request forum: http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse. - * You can also send feedback on websites that Privoxy has problems with. Please bookmark - the following link: "Privoxy - Submit Filter Feedback" - . Once you surf to a page with problems, use the - bookmark to send us feedback. We will look into the issue as soon as possible. + * Submit missed ads and banners, and incorrectly blocked images, popups, etc: + + http://p.p/, and select "actions file feedback system" - * For any other issues, feel free to use the mailing lists: + This page can also be reached from many of the internal CGI pages. + + * For any other issues, feel free to use the mailing lists: http://sourceforge.net/mail/?group_id=11118. Anyone interested in actively participating in development and related discussions can also join the appropriate mailing list. Archives are - available, too. + available too. ------------------------------------------------------------------------- ijbswa-developers@lists.sourceforge.net -$Id: readme.sgml,v 1.8 2002/04/12 10:09:50 swa Exp $ +$Id: readme.sgml,v 1.6 2002/04/08 22:59:26 hal9 Exp $ diff --git a/acconfig.h b/acconfig.h index 28ab8e1b..d06eb107 100644 --- a/acconfig.h +++ b/acconfig.h @@ -37,9 +37,6 @@ * * Revisions : * $Log: acconfig.h,v $ - * Revision 1.25 2002/04/06 20:38:01 jongfoster - * Renaming VC++ versions of config.h - * * Revision 1.24 2002/04/04 00:36:36 gliptak * always use pcre for matching * @@ -384,11 +381,6 @@ #undef HAVE_GMTIME_R #undef HAVE_LOCALTIME_R -/* Define to 'int' if doesn't have it. - */ -#undef socklen_t - - @BOTTOM@ /* diff --git a/cgi.c b/cgi.c index 062b9761..08caddeb 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,4 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.62 2002/04/10 19:59:46 jongfoster Exp $"; +const char cgi_rcs[] = "$Id: cgi.c,v 1.61 2002/04/10 13:37:48 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -38,11 +38,6 @@ const char cgi_rcs[] = "$Id: cgi.c,v 1.62 2002/04/10 19:59:46 jongfoster Exp $"; * * Revisions : * $Log: cgi.c,v $ - * Revision 1.62 2002/04/10 19:59:46 jongfoster - * Fixes to #include in templates: - * - Didn't close main file if loading an included template fails. - * - I'm paranoid and want to disallow "#include /etc/passwd". - * * Revision 1.61 2002/04/10 13:37:48 oes * Made templates modular: template_load now recursive with max depth 1 * @@ -560,7 +555,7 @@ static struct map *parse_cgi_parameters(char *argstring); * Function : dispatch_cgi * * Description : Checks if a request URL has either the magical - * hostname CGI_SITE_1_HOST (usually http://p.p/) or + * hostname CGI_SITE_1_HOST (usully http://i.j.b/) or * matches CGI_SITE_2_HOST CGI_SITE_2_PATH (usually * http://ijbswa.sourceforge.net/config). If so, it passes * the (rest of the) path onto dispatch_known_cgi, which diff --git a/config b/config index ebe260fa..abac7e79 100644 --- a/config +++ b/config @@ -1,7 +1,7 @@ # Sample Configuration file for Privoxy # -# $Id: config,v 1.32 2002/04/02 20:11:35 oes Exp $ +# $Id: config,v 1.31 2002/03/24 12:58:57 swa Exp $ # # Table of Contents @@ -308,9 +308,9 @@ toggle 1 # require up to buffer-limit Kbytes *each*, unless you have set # single-threaded below. # -# Default: 4096, i.e. 4 MB +# Default: 4069, i.e. 4 MB # -buffer-limit 4096 +buffer-limit 4069 # diff --git a/configure.in b/configure.in index c1748fcc..d8422e59 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl $Id: configure.in,v 1.62 2002/04/11 10:09:20 oes Exp $ +dnl $Id: configure.in,v 1.61 2002/04/10 18:14:45 morcego Exp $ dnl dnl Written by and Copyright (C) 2001, 2002 the SourceForge dnl Privoxy team. http://www.privoxy.org/ @@ -28,9 +28,6 @@ dnl or write to the Free Software Foundation, Inc., 59 dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl dnl $Log: configure.in,v $ -dnl Revision 1.62 2002/04/11 10:09:20 oes -dnl Version 2.9.14 -dnl dnl Revision 1.61 2002/04/10 18:14:45 morcego dnl - (privoxy-rh.spec only) Relisting template files on the %%files section dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5 @@ -344,7 +341,7 @@ dnl ================================================================= dnl AutoConf Initialization dnl ================================================================= -AC_REVISION($Revision: 1.62 $) +AC_REVISION($Revision: 1.61 $) AC_INIT(jcc.c) if test ! -f config.h.in; then @@ -806,10 +803,6 @@ AC_CHECK_FUNC(localtime_r, [ dnl ================================================================= dnl Solaris specific dnl FIXME: Not tested on Solaris yet... -dnl ISFIXED: Have tested it on Solaris, but there are other ways to -dnl make these checks generic, e.g.: -dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt)) -dnl (Moritz Barsnick ) dnl ================================================================= @@ -832,17 +825,6 @@ esac AC_SUBST(SOCKET_LIB) -dnl ================================================================= -dnl Solaris problem, and others perhaps (socklen_t is undefined) -dnl ================================================================= - -AC_MSG_CHECKING([for socklen_t]) -AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]), - AC_MSG_RESULT([no]) - AC_DEFINE(socklen_t,int, - [ Define to 'int' if doesn't have it. ])) - - dnl ================================================================= dnl OS/2 specific dnl ================================================================= diff --git a/default.action b/default.action index 40317fc7..7e0250b0 100644 --- a/default.action +++ b/default.action @@ -5,389 +5,15 @@ # For information, see http://www.oesterhelt.org/testdrive # ############################################################################# - -###################################################################### -# -# File : $Source: /cvsroot/ijbswa/current/default.action,v $ -# -# $Id: default.action,v 1.14 2002/04/08 20:47:24 swa Exp $ -# -# Purpose : Default actions file, see -# http://www.privoxy.org/faq/questions.html#CONFIGFILES -# -# Copyright : Written by and Copyright -# 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 -# -# We value your feedback. However, to provide you with the best support, -# please note: -# -# * Use the support forum to get help: -# http://sourceforge.net/tracker/?group_id=11118&atid=211118 -# * Submit feedback for this actions file only through our -# actions file feedback script: http://www.privoxy.org/actions -# * Submit bugs only through our bug forum: -# http://sourceforge.net/tracker/?group_id=11118&atid=111118 -# Make sure that the bug has not already been submitted. Please try -# to verify that it is a Privoxy 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. -# * Submit feature requests only through our feature request forum: -# http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse -# -# For any other issues, feel free to use the mailing lists: -# http://sourceforge.net/mail/?group_id=11118 -# -# Anyone interested in actively participating in development and related -# discussions can join the appropriate mailing list here: -# http://sourceforge.net/mail/?group_id=11118. Archives are available -# here too. -# -############################################################################# -# Syntax -############################################################################# -# -# 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 this URL is incrementally updated. You can trace -# this process by visiting http://i.j.b/show-url-info -# -# There are 4 types of lines in this file: comments (like this line), -# actions, aliases and patterns, all of which are explained below. -# -############################################################################# -# Pattern Syntax -############################################################################# -# -# 1. On Domains and Paths -# ----------------------- -# -# Generally, a pattern has the form /, where both the -# and part are optional. If you only specify a domain part, the "/" -# can be left out: -# -# www.example.com -# is a domain-only pattern and will match any request to www.yahoo.com -# -# www.example.com/ -# means exactly the same (but is slightly less efficient) -# -# www.example.com/index.html -# matches only the document /index.html on www.example.com -# -# /index.html -# matches the document /index.html, regardless of the domain -# -# index.html -# matches nothing, since it would be interpreted as a domain name and -# there is no top-level domain called ".html". -# -# 2. Domain Syntax -# ---------------- -# -# 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: -# -# www.example.com -# matches only www.example.com -# -# .example.com -# matches any domain that ENDS in .example.com -# -# www. -# matches any domain that STARTS with www. -# -# Additionally, there are wildcards that you can use in the domain names -# themselves. They work pretty similar to shell wildcards: "*" stands for -# zero or more arbitrary characters, "?" stands for one, and you can define -# charachter classes in square brackets and they can be freely mixed: -# -# ad*.example.com -# matches adserver.example.com, ads.example.com, etc but not sfads.example.com -# -# *ad*.example.com -# matches all of the above -# -# .?pix.com -# matches www.ipix.com, pictures.epix.com, a.b.c.d.e.upix.com etc -# -# www[1-9a-ez].example.com -# matches www1.example.com, www4.example.com, wwwd.example.com, -# wwwz.example.com etc, but not wwww.example.com -# -# You get the idea? -# -# 2. Path Syntax -# -------------- -# -# Paths are specified as regular expressions. A comprehensive discussion of -# regular expressions wouldn't fit here, but (FIXME) someone should paste -# a concise intro to the regex language here. -# -# If Privoxy was compiled with pcre support (default), Perl compatible -# regular expressions are used. See the pcre/docs/ direcory or man perlre -# (also available on http://www.perldoc.com/perl5.6/pod/perlre.html) for -# details. -# -# Please note that matching in the path is CASE INSENSITIVE by default, but -# you can switch to case sensitive by starting the pattern with the "(?-i)" -# switch: -# -# www.example.com/(?-i)PaTtErN.* -# will match only documents whose path starts with PaTtErN in exactly this -# capitalization. -# -# Partially case-sensetive and partially case-insensitive patterns are -# possible, but the rules about splitting them up are extremely complex -# - see the PCRE documentation for more information. -# -############################################################################# -# Action Syntax -############################################################################# -# -# There are 3 kinds of action: -# -# Boolean (e.g. "block"): -# +name # enable -# -name # disable -# -# Parameterized (e.g. "hide-user-agent"): -# +name{param} # enable and set parameter to "param" -# -name # disable -# -# Multi-value (e.g. "add-header", "wafer"): -# +name{param} # enable and add parameter "param" -# -name{param} # remove the parameter "param" -# -name # disable totally -# -# The default (if you don't specify anything in this file) is not to take -# any actions - i.e completely disabled, so Privoxy will just be a -# normal, non-blocking, non-anonymizing proxy. You must specifically -# enable the privacy and blocking features you need (although the -# provided default actions file will do that for you). -# -# Later actions always override earlier ones. For multi-valued actions, -# the actions are applied in the order they are specified. -# -############################################################################# -# Valid actions are: -############################################################################# -# -# +add-header{Name: value} -# Adds the specified HTTP header, which is not checked for validity. -# You may specify this many times to specify many headers. -# -# +block -# Block this URL -# -# +deanimate-gifs{last} -# +deanimate-gifs{first} -# Deanimate 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 "first" is given, the first frame of the animation -# is used as the replacement. If "last" is given, the last frame of -# the animation is used instead, which propably 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). -# -# +downgrade -# 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 Privoxy currently can't handle yet. -# -# +fast-redirects -# 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: -# http://some.place/some_script?http://some.where-else -# -# Sometimes, there are even multiple consecutive redirects encoded -# in the URL. These redirections via scripts make your web browing -# 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 aks the server for one redirect -# after the other. Plus, it feeds the advertisers. -# -# The +fast-redirects option enables interception of these requests -# by Privoxy, 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 sites. -# -# +filter{name} -# Filter the website through one or more regular expression filters. -# Repeat for multiple filters. -# -# Filters predefined in the supplied re_filterfile include: -# -# html-annoyances: Get rid of particularly annoying HTML abuse -# js-annoyances: Get rid of particularly annoying JavaScript abuse -# no-poups: Kill all popups in JS and HTML -# frameset-borders: Give frames a border -# webbugs: Squish WebBugs (1x1 invisible GIFs used for user tracking) -# no-refresh: Automatic refresh sucks on auto-dialup lines -# fun: Text replacements for subversive browsing fun! -# nimda: Remove (virus) Nimda code. -# banners-by-size: Kill banners by size -# crude-parental: Kill all web pages that contain the words "sex" or "warez" -# -# -# +hide-forwarded -# Block any existing X-Forwarded-for header, and do not add a new one. -# -# +hide-from{block} -# +hide-from{spam@sittingduck.xqq} -# If the browser sends a "From:" header containing your e-mail address, -# either completely removes the header ("block"), or change it to the -# specified e-mail address. -# -# +hide-referer{block} -# +hide-referer{forge} -# +hide-referer{http://nowhere.com} -# Don't send the "Referer:" (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 string. -# -# +hide-referrer{...} -# Alternative spelling of +hide-referer. Has the same parameters, -# and can be freely mixed with, "+hide-referer". ("referrer" is the -# correct English spelling, however the HTTP specification has a -# bug - it requires it to be spelt "referer"). -# -# +hide-user-agent{browser-type} -# Change the "User-Agent:" header so web servers can't tell your -# browser type. (Breaks many web sites). Specify the user-agent -# value you want - e.g., to pretend to be using Netscape on Linux: -# +hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)} -# Or to identify yourself explicitly as a Privoxy user: -# +hide-user-agent{Privoxy/1.0} -# (Don't change the version number from 1.0 - after all, why tell them?) -# -# +image -# Treat this URL as an image. This only matters if it's also "+block"ed, -# in which case a "blocked" image can be sent rather than a HTML page. -# See +image-blocker{} for the control over what is actually sent. -# -# +image-blocker{blank} -# +image-blocker{pattern} -# +image-blocker{} with being any valid image URL -# Decides what to do with URLs that end up tagged with {+block +image}. -# There are 4 options: -# * "-image-blocker" will send a HTML "blocked" page, usually -# resulting in a "broken image" icon. -# * "+image-blocker{blank}" will send a 1x1 transparent image -# * "+image-blocker{pattern}" will send a 4x4 grey/white pattern -# which is less intrusive than the logo but easier to recognize -# than the transparent one. -# * "+image-blocker{}" will send a HTTP temporary redirect -# to the specified image URL. -# -# -# +limit-connect{portlist} -# 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 cliant and to the remote proxy. -# This can be a big security hole, since CONNECT-enabled proxies can -# be abused as TCP relays very easily. -# By default, i.e. in the absence of a +limit-connect action, Privoxy -# will only allow CONNECT requests to port 443, which is the standard port -# for https. -# If you want to allow CONNECT for more ports than that, 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): -# -# +limit-connect{443} # This is the default and need no be specified. -# +limit-connect{80,443} # Ports 80 and 443 are OK. -# +limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to 100, and above 500 are OK. -# -# +no-compression -# Prevent the website from compressing the data. Some websites do -# that, which is a problem for Privoxy, since +filter, +no-popup -# and +gif-deanimate will not work on compressed data. Will slow down -# connections to those websites, though. -# -# +no-cookies-keep -# If the website sets cookies, 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 -# or for transactions. -# -# +no-cookies-read -# Prevent the website from reading cookies -# -# +no-cookies-set -# Prevent the website from setting cookies -# -# +no-popup -# +no-popups -# Filter the website through a built-in filter to disable -# 1;''.concat() etc. The two alternative spellings are -# equivalent. -# -# +vanilla-wafer -# This action only applies if you are using a jarfile. 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. -# -# +wafer{name=value} -# This allows you to add an arbitrary cookie. Specify it multiple -# times in order to add several cookies. -# -############################################################################# - - -############################################################################# -# Aliases -############################################################################# {{alias}} -############################################################################# -# -# You can define a short form for a list of permissions - e.g., instead -# of "-no-cookies-set -no-cookies-read -filter -fast-redirects", you can -# just write "shop". This is called an alias. -# -# Currently, an alias can contain any character except space, tab, '=', '{' -# or '}'. -# But please use only 'a'-'z', '0'-'9', '+', and '-'. -# -# Alias names are not case sensitive. -# -# Aliases beginning with '+' or '-' may be used for system permission names -# in future releases - so try to avoid alias names like this. (e.g. -# "+no-cookies" below is not a good name) -# -# Aliases must be defined before they are used. -# - # Useful aliases -+no-cookies = +no-cookies-set +no-cookies-read --no-cookies = -no-cookies-set -no-cookies-read +imageblock = +block +image # Fragile sites should have the minimum changes -fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer -no-cookies -no-popups +fragile = -block -deanimate-gifs -fast-redirects -filter -hide-referer -no-cookies-keep -no-popups # Shops should be allowed to set persistent cookies -shop = -filter -no-cookies -no-cookies-keep - -# Your favourite blend of filters: -# -myfilters = +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups}\ - +filter{webbugs} +filter{nimda} +filter{banners-by-size} #+filter{fun} - -#... etc. Customize to your heart's content. +shop = -filter -no-cookies-keep ############################################################################# # Defaults @@ -404,13 +30,13 @@ myfilters = +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups} +filter{webbugs} \ +filter{nimda} \ +filter{banners-by-size} \ ++no-compression \ +hide-forwarded \ +hide-from{block} \ +hide-referer{forge} \ -hide-user-agent \ -image \ +image-blocker{pattern} \ -+no-compression \ +no-cookies-keep \ -no-cookies-read \ -no-cookies-set \ @@ -420,6 +46,10 @@ myfilters = +filter{html-annoyances} +filter{js-annoyances} +filter{no-popups} } / # Match all URLs +{+filter{noflash}} +.moorhuhn.de +[+filter{reorder}} +.oesterhelt.org ############################################################################# # Needed for automatic feedback evaluation; Please don't delete! @@ -489,11 +119,6 @@ ar.atwola.com #BLOCK-REFERRER: http://www.altavista.com/ .ad.doubleclick.net -.a.yimg.com/(?:(?!/i/).)*$ -.a[0-9].yimg.com/(?:(?!/i/).)*$ - - - #BLOCK-REFERRER: bs*.gsanet.com bs*.einets.com diff --git a/doc/source/buildsource.sgml b/doc/source/buildsource.sgml index cc1d0fc1..d180c027 100644 --- a/doc/source/buildsource.sgml +++ b/doc/source/buildsource.sgml @@ -3,7 +3,7 @@ Purpose : Entity included in other project documents. - $Id: buildsource.sgml,v 1.2 2002/04/06 05:07:28 hal9 Exp $ + $Id: buildsource.sgml,v 1.1 2002/04/04 06:48:37 hal9 Exp $ Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ @@ -28,14 +28,13 @@ --> - To build Privoxy from source, - autoheader, autoconf,GNU make (gmake), and, of course, a C - compiler are required. + There are several ways to install Privoxy. - When building from a source tarball (either release version or - nightly CVS tarball), first unpack the source: + To build Privoxy from source, + autoconf and GNU make (gmake) are required. Source is available as gzipped + tar archives. For this, first unpack the source: @@ -45,10 +44,11 @@ + - 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 tested. To download CVS source: + 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: @@ -72,29 +72,14 @@ autoheader autoconf - ./configure # (--help to see options) - make # (the make from gnu, gmake for *BSD) + ./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) - - - - - If you have gnu make, you can have the first four steps - automatically done for you by just typing - - - - - make + make -n install (to see where all the files will go) + make install (to really install) - - in the freshly downloaded or unpacked source directory. - - Redhat and SuSE src and binary RPMs can be built with make redhat-dist or diff --git a/doc/source/contacting.sgml b/doc/source/contacting.sgml index 2c6e3f62..d226b597 100644 --- a/doc/source/contacting.sgml +++ b/doc/source/contacting.sgml @@ -3,7 +3,7 @@ Purpose : Entity included in other project documents. - $Id: contacting.sgml,v 1.7 2002/04/10 04:06:57 hal9 Exp $ + $Id: contacting.sgml,v 1.5 2002/04/09 23:29:41 hal9 Exp $ Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ @@ -37,7 +37,7 @@ -Use the Sourceforge Support Forum to get help: + Use the Sourceforge Support Forum to get help: http://sourceforge.net/tracker/?group_id=11118&atid=211118 @@ -45,7 +45,7 @@ Use the Sourceforge Support Forum to get help: -Submit bugs only through our Sourceforge Bug Forum: + Submit bugs only through our Sourceforge Bug Forum: http://sourceforge.net/tracker/?group_id=11118&atid=111118. @@ -65,7 +65,7 @@ Submit bugs only through our Sourceforge Bug Forum: -Submit feature requests only through our Sourceforge feature request forum: + Submit feature requests only through our Sourceforge feature request forum: . @@ -73,24 +73,34 @@ Submit feature requests only through our Sourceforge feature request forum: + + + -You can also send feedback on websites that Privoxy has problems with. Please bookmark -the following link: Privoxy - Submit Filter Feedback. Once you surf to a page with problems, use the -bookmark to send us feedback. We will look into the issue as soon as possible. + Submit missed ads and banners, and incorrectly blocked images, popups, etc: + + http://p.p/, and select actions file feedback system + + This page can also be reached from many of the internal CGI pages. + -For any other issues, feel free to use the mailing lists: + For any other issues, feel free to use the mailing lists: http://sourceforge.net/mail/?group_id=11118. + Anyone interested in actively participating in development and related discussions can also join the appropriate mailing list. Archives are - available, too. + available too. diff --git a/doc/source/developer-manual.sgml b/doc/source/developer-manual.sgml index 0920b764..c783e936 100644 --- a/doc/source/developer-manual.sgml +++ b/doc/source/developer-manual.sgml @@ -7,7 +7,7 @@ - + @@ -21,7 +21,7 @@ This file belongs into ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/ - $Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $ + $Id: developer-manual.sgml,v 1.30 2002/04/11 09:24:53 oes Exp $ Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ @@ -44,7 +44,7 @@ Privoxy Developer Manual - $Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $ + $Id: developer-manual.sgml,v 1.30 2002/04/11 09:24:53 oes Exp $ @@ -72,16 +72,14 @@ - + &p-intro; 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. + Please see the Contact section on how to contact the developers. @@ -126,112 +124,38 @@ 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. - - - For the time being (read, this section is under construction), please - refer to the extensive comments in the source code. - - - - - 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. - - - Access to CVS - - The project's CVS repository is hosted on - SourceForge. - Please refer to the chapters 6 and 7 in - SF's site - documentation for the technical access details for your - operating system. For historical reasons, the CVS server is - called cvs.ijbswa.sourceforge.net, the repository is - called ijbswa, and the source tree module is called - current. - - - - CVS Commit Guideline - - 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 guidelines: - - - 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. - - - Your commit message should give a concise overview of what you - changed (no big details) and why you changed it - Just check previous messages for good examples. - - - Don't use the same message on multiple files, unless it equally applies to - all those files. - - - If your changes span multiple files, and the code won't recompile unless - all changes are commited (e.g. when changing the signature of a function), - then commit all files one after another, without long delays in beween. - If 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). - - - - +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. + - Discussing Changes First - - We don't have a too formal policy on this, just use common sense. Hints: If it is.. - - - ..a bugfix / clean-up / cosmetic thing: shoot - - - ..a new feature that can be turned off: shoot - - - ..a clear improvement w/o side effects on other parts of the code: shoot - - - ..a matter of taste: ask the list - - - ..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. - - - + +For the time being (read, this section is under construction), please note the +following guidelines for changing stuff in the code. If it is + + + A bugfix / clean-up / cosmetic thing: shoot + + + A new feature that can be turned off: shoot + + + A clear improvement w/o side effects on other parts of the code: shoot + + + A matter of taste: ask the list + + + A major redesign of some part of the code: ask the list + + + + Documentation Guidelines - All formal documents are maintained in Docbook SGML and located in the + All formal documents are maintained in docbook SGML and located in the doc/source/* directory. You will need Docbook, the Docbook DTD's and the Docbook modular stylesheets (or comparable alternatives), @@ -253,7 +177,7 @@ Other, less formal documents (e.g. LICENSE, INSTALL) are maintained as plain text files in the - top-level source directory. At least for the time being. + toplevel source directory. At least for the time being. Packagers are encouraged to include this documentation. For those without @@ -272,7 +196,7 @@ Documentation writers should please make sure documents build - successfully before committing to CVS, if possible. + successfully before committing to CVS. How do you update the webserver (i.e. the pages on privoxy.org)? @@ -291,15 +215,6 @@ - - Finished docs should be occasionally submitted to CVS - (doc/webserver/*/*.html) so that those without - the ability to build them locally, have access to them if needed. - This is especially important just prior to a new release! Please - do this after the $VERSION and - other release specific data in configure.in has been - updated (this is done just prior to a new release). - @@ -345,45 +260,43 @@ Some common elements that you likely will use: - - - - <para></para>, paragraph delimiter. Most - text needs to be within paragraph elements (there are some exceptions). - - - <emphasis></emphasis>, the stylesheets - make this italics. - - - <filename></filename>, files and directories. - - - <command></command>, command examples. - - - <literallayout></literallayout>, like - <pre>, more or less. - - - <itemizedlist></itemizedlist>, list with bullets. - - - <listitem></listitem>, member of the above. - - - <screen></screen>, screen output, implies - <literallayout>. - - - <ulink url="example.com"></ulink>, like - HTML <a> tag. - - - <quote></quote>, for, doh, quoting text. - - - + + + <para></para>, paragraph delimiter. Most + text needs to be within paragraph elements (there are some exceptions). + + + <emphasis></emphasis>, the stylesheets make this + italics. + + + <filename></filename>, files and directories. + + + <command></command>, command examples. + + + <literallayout></literllayout>, like + <pre>, more or less. + + + <itemizedlist></itemizdelist>, list with bullets. + + + <listitem></listitem>, member of the above. + + + <screen></screen>, screen output, implies + <literallayout>. + + + <ulink url="example.com"></ulink>, like + HTML <a> tag. + + + <quote></quote>, for, doh, quoting text. + + Look at any of the existing docs for examples of all these and more. @@ -391,6 +304,7 @@ + <application>Privoxy</application> Documentation Style @@ -460,14 +374,13 @@ We have an international audience. Refrain from slang, or English - idiosyncrasies (too many to list :). Humor also does not translate - well sometimes. + idiosyncrasies (too many to list :). Try to keep overall line lengths in source files to 80 characters or less - for obvious reasons. This is not always possible, with lengthy URLs for + for obvious reasons. This is not always possible, with lenghty URLs for instance. @@ -535,7 +448,7 @@ - Re- boilerplate text entities are defined like: + Re-cyclable boilerplate text entities are defined like: <!entity supported SYSTEM "supported.sgml"> @@ -556,15 +469,15 @@ p-version: the Privoxy - version string, e.g. &p-version;. + version string, e.g. 2.9.13. p-status: the project status, either - alpha, beta, or stable. + ALPHA, BETA, or STABLE. p-not-stable: use to conditionally include - text in not stable releases (e.g. beta). + text in not stable releases (e.g. BETA). p-stable: just the opposite. @@ -684,7 +597,7 @@ if ( thisVariable == thatVariable ) /* this may not either */ Exception: If you are trying to add a small logic comment and do not - wish to "disrupt" the flow of the code, feel free to use a 1 + 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. @@ -830,7 +743,7 @@ if ( 1 == X ) Explanation: - Use all lowercase, and separate words via an underscore + 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. @@ -857,7 +770,7 @@ int msiis5hack = 0; int msIis5Hack = 0; Explanation: - Use all lowercase, and separate words via an underscore + 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. @@ -999,11 +912,11 @@ if ( this == that ) Note: In the special case that the if-statement is inside a loop, and it is trivial, i.e. it tests for a - condition that is obvious from the purpose of the block, + 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. - Status: developer-discretion. + Status: developer-discrection. Example exception: @@ -1065,7 +978,7 @@ structure->flag = ( condition ); if ( condition ) { structure->flag = 1; } else { structure->flag = 0; } - Note: The former is readable and concise. The later + Note: 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-) @@ -1146,14 +1059,14 @@ int function2( ... ) function2( ... ) { } Note: Use 1 blank line before the closing brace and 2 - lines afterward. This makes the end of function standout to + lines afterwards. This makes the end of function standout to the most casual viewer. Although function comments help - separate functions, this is still a good coding practice. In + 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! - Status: developer-discretion on the number of blank + Status: developer-discrection on the number of blank lines. Enforced is the end of function comments. @@ -1221,7 +1134,7 @@ struct *ptr = NULL; and not 129FA012; or arrayPtr[20] causes a SIGSEV vs. arrayPtr[0]. - Status: developer-discretion if and only if the + Status: developer-discrection if and only if the variable is assigned a value "shortly after" declaration. @@ -1374,7 +1287,7 @@ for ( size_t cnt = 0; cnt < len; cnt ++ ) Note: Please! do not add "-I." to the Makefile without a _very_ good reason. This duplicates the #include - "file.h" behavior. + "file.h" behaviour. @@ -1447,9 +1360,9 @@ extern file_list *xyz; Note: If you declare "file_list xyz;" (without the pointer), then including the proper header file is necessary. If you only want to prototype a pointer, however, the header - file is unnecessary. + file is unneccessary. - Status: Use with discretion. + Status: Use with discrection. @@ -1495,7 +1408,7 @@ switch( hash_string( cmd ) ) default : log_error( ... ); - ... anomaly code goes here ... + ... anomly code goes here ... continue; / break; / exit( 1 ); / etc ... } /* end switch( hash_string( cmd ) ) */ @@ -1506,7 +1419,7 @@ switch( hash_string( cmd ) ) This API call *should* be included in a default statement. Another Note: This is not so much a readability issue - as a robust programming issue. The "anomaly code goes here" may + 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. @@ -1603,7 +1516,7 @@ long c = 0; on 1 line. You should, although, provide a good comment on their functions. - Status: developer-discretion. + Status: developer-discrection. @@ -1613,7 +1526,7 @@ long c = 0; Explanation: - Create a local struct (on the stack) if the variable will + Create a local stuct (on the stack) if the variable will live and die within the context of one function call. Only "malloc" a struct (on the heap) if the variable's life @@ -1622,7 +1535,7 @@ long c = 0; Example: If a function creates a struct and stores a pointer to it in a -list, then it should definitely be allocated via `malloc'. +list, then it should definately be allocated via `malloc'. @@ -1638,7 +1551,7 @@ list, then it should definitely be allocated via `malloc'. 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 accommodate this. + free/unload/destuctor type function to accomodate this. Example: @@ -1651,7 +1564,7 @@ static void unload_re_filterfile( void *f ) { ... } functions for C run-time library functions ... such as `strdup'. - Status: developer-discretion. The "main" use of this + Status: developer-discrection. The "main" use of this standard is for allocating and freeing data structures (complex or nested). @@ -1678,16 +1591,16 @@ static void unload_re_filterfile( void *f ) { ... } "Uncertain" new code and/or changes to - existing code, use FIXME + exitinst code, use FIXME Explanation: If you have enough confidence in new code or confidence in - your changes, but are not *quite* sure of the repercussions, + your changes, but are not *quite* sure of the reprocussions, add this: /* FIXME: this code has a logic error on platform XYZ, * - attempting to fix */ #ifdef PLATFORM ...changed code here... + attempthing to fix */ #ifdef PLATFORM ...changed code here... #endif or: @@ -1702,7 +1615,7 @@ static void unload_re_filterfile( void *f ) { ... } Note: If you make it clear that this may or may not be a "good thing (tm)", it will be easier to identify and - include in the project (or conversely exclude from the + include in the project (or conversly exclude from the project). @@ -1715,7 +1628,7 @@ static void unload_re_filterfile( void *f ) { ... } Example for file comments: -const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $"; +const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.30 2002/04/11 09:24:53 oes Exp $"; /********************************************************************* * * File : $Source$ @@ -1767,7 +1680,7 @@ const char FILENAME_h_rcs[] = FILENAME_H_VERSION; Note: The formfeed character that is present right after the comment flower box is handy for (X|GNU)Emacs users to - skip the verbiage and get to the heart of the code (via + skip the verbige and get to the heart of the code (via `forward-page' and `backward-page'). Please include it if you can. @@ -1775,7 +1688,7 @@ const char FILENAME_h_rcs[] = FILENAME_H_VERSION; #ifndef _FILENAME_H #define _FILENAME_H -#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.33 2002/04/12 03:49:53 hal9 Exp $" +#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.30 2002/04/11 09:24:53 oes Exp $" /********************************************************************* * * File : $Source$ @@ -1871,6 +1784,13 @@ int FUNCTION_NAME( void *param1, const char *x ) + + Version Control Guidelines + To be filled. note on cvs comments. Don't only comment what you did, + but also why you did it! + + + Testing Guidelines To be filled. @@ -1927,29 +1847,20 @@ at sourceforge. Three simple steps: - Releasing a New Version + Releasing a new version - When we release versions of Privoxy, - our work leaves our cozy secret lab and has to work in the cold - RealWorld[tm]. Once it is released, there is no way to call it - back, so it is very important that great care is taken to ensure - that everything runs fine, and not to introduce problems in the - very last minute. + 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. - - So when releasing a new version, please adhere exactly to the - procedure outlined in this chapter. - - The following programs are required to follow this process: - ncftpput (ncftp), scp, ssh (ssh), - gmake (GNU's version of make), autoconf, cvs. + ncftpput (ncftp), scp (ssh), +gmake (GNU's version of make), autoconf, cvs, ???. - - In the following text, replace X, Y and Z with the actual version number - (X = major, Y = minor, Z = point): + Replace X, Y and Z with the actual version number (X = major, Y = minor, Z = point): @@ -1969,14 +1880,20 @@ at sourceforge. Three simple steps: - Increment the version number and increase or reset the RPM release number - in configure.in as appropriate. + Increment the version number in configure.in in + CVS. Also, inrease or reset the RPM release number in + configure.in as appropriate. Do NOT + touch version information after export from CVS. + All packages will use the version and release data + from configure.in. + Local files should not be changed, except prior to a CVS commit!!! + This way we are all on the same page! - If the default actionsfile has changed since last - release, bump up its version info in this line: + If the default actionsfile has changed since last release, + bump up its version info in this line: @@ -1987,13 +1904,6 @@ at sourceforge. Three simple steps: Then change the version info in doc/webserver/actions/index.php, line: '$required_actions_file_version = "A.B";' - - - - If the HTML documentation is not in sync with the SGML sources - you need to regenerate it. (If in doubt, just do it.) See the - Section "Updating the webserver" in this manual for details. - @@ -2007,88 +1917,63 @@ at sourceforge. Three simple steps: Don't use vX_Y_Z, ver_X_Y_Z, v_X.Y.Z (won't work) etc. + + + The first package uploaded should be the official + tarball release. This is built with the + make tarball-dist Makefile + target, and then can be uploaded with + make tarball-upload (see below). + + - - Building and Releasing the Packages - - Now the individual packages can be built and released. Note that for - GPL reasons the first package to be released is always the source tarball. - - - - For all types of packages, including the source tarball, - you must make sure that you build from clean sources by exporting - the right version from CVS into an empty directory:. - - - - - mkdir dist # delete or choose different name if it already exists - cd dist - 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 - - - - - Do NOT change a single bit, including, but not limited to - version information after export from CVS. This is to make sure that - all release packages, and with them, all future bug reports, are based - on exactly the same code. - - - - Please find additional instructions for the source tarball and the - individual platform dependent binary packages below. - - - Source Tarball - - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: - - - - cd current - autoheader && autoconf && ./configure - - - - Then do: + Update the webserver + + 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 doc/webserver directory (or + create new directories under doc/webserver), then do - - make tarball-dist + + make webserver - To upload the package to Sourceforge, simply issue + Note that make dok + (or make redhat-dok) creates + doc/webserver/user-manual, + doc/webserver/developer-manual, + doc/webserver/faq and + doc/webserver/man-page automatically. + + + Please do NOT use any other means of transferring files to the + webserver. make webserver not only + uploads, but will make sure that the appropriate permissions are + preserved for shared group access. + + + + SuSE or Red Hat + + Ensure that you have the latest code version. Hence run: - make tarball-upload + 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 current - Go to the displayed URL and release the file publicly on Sourceforge. - For the change log field, use the relevant section of the - ChangeLog file. - - - - SuSE or Red Hat - - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + first. - cd current autoheader && autoconf && ./configure @@ -2097,7 +1982,7 @@ at sourceforge. Three simple steps: - make suse-dist (or make redhat-dist) + make suse-dist or make redhat-dist @@ -2105,23 +1990,23 @@ at sourceforge. Three simple steps: - make suse-upload (or make redhat-upload) + make suse-upload or make redhat-upload Go to the displayed URL and release the file publicly on Sourceforge. - Use the release notes and çhange log from the source tarball package. - + - OS/2 + OS/2 - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then get the OS/2 Setup module: + Ensure that you have the latest code version. Hence run: + 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 @@ -2139,41 +2024,29 @@ at sourceforge. Three simple steps: Change directory to the os2setup directory. Edit the os2build.cmd file to set the final executable filename. For example, - - installExeName='privoxyos2_setup_X.Y.Z.exe' - - Next, edit the IJB.wis file so the release number matches in the PACKAGEID section: - - - + PACKAGEID="Privoxy Team\Privoxy\Privoxy Package\X\Y\Z" - - You're now ready to build. Run: - - os2build + And in the ./files directory you will have the + WarpIN-installable executable. + Upload this anonymously to + uploads.sourceforge.net/incoming, create a release + for it, and you're done. - - You will find the WarpIN-installable executable in the - ./files directory. Upload this anonymously to - uploads.sourceforge.net/incoming, create a release - for it, and you're done. Use the release notes and Change Log from the - source tarball package. - - + - Solaris + Solaris - Login to Sourceforge's compilefarm via ssh: + Login to Sourceforge's compilefarm via ssh @@ -2181,14 +2054,23 @@ at sourceforge. Three simple steps: - Choose the right operating system (not the Debian one). - When logged in, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + Choose the right operating system (not the Debian one). If you have + downloaded Privoxy before, + 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 current + + + + If not, please checkout + Privoxy via CVS first. Run: + + + autoheader && autoconf && ./configure @@ -2204,80 +2086,73 @@ at sourceforge. Three simple steps: which creates a gzip'ed tar archive. Sadly, you cannot use make solaris-upload on the Sourceforge machine (no ncftpput). You now have to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. + the file publicly. - + - Windows - - You should ensure you have the latest version of Cygwin (from - http://www.cygwin.com/). - Run the following commands from within a Cygwin bash shell. - - - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then get the Windows setup module: - - - - cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co winsetup - - - - Then you can build the package. This is fully automated, and is - controlled by winsetup/GNUmakefile. - All you need to do is: - - - - cd winsetup - make - - + Windows - Now you can manually rename privoxy_setup.exe to - privoxy_setup_X_Y_Z.exe, and upload it to - SourceForge. When releasing the package on SourceForge, use the release notes - and Change Log from the source tarball package. - - + Ensure that you have the latest code version. Hence run + + + + 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 current + + + + Run: + + + + autoheader && autoconf && ./configure + + + + Then do FIXME. + + - Debian + Debian - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then, run: + Ensure that you have the latest code version. Hence run: + 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 current + + + + first. Run: + + + autoheader && autoconf && ./configure Then do FIXME. - + - Mac OSX + Mac OSX - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then get the Mac OSX setup module: + Ensure that you have the latest code version. Hence run: + 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 - Then run: - - + From the osxsetup directory, run: - cd osxsetup build @@ -2292,21 +2167,24 @@ at sourceforge. Three simple steps: 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: - - zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg - - You can then upload privoxyosx_setup_x.y.z.zip anonymously to uploads.sourceforge.net/incoming, - create a release for it, and you're done. Use the release notes - and Change Log from the source tarball package. + create a release for it, and you're done. - + - FreeBSD + FreeBSD + + Change the version number of Privoxy in the + configure.in file. Run: + + autoheader && autoconf && ./configure + + Then ... + Login to Sourceforge's compilefarm via ssh: @@ -2317,13 +2195,19 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg Choose the right operating system. - When logged in, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + 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 current + + + + Run: + + + autoheader && autoconf && ./configure @@ -2339,46 +2223,99 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg which creates a gzip'ed tar archive. Sadly, you cannot use make freebsd-upload on the Sourceforge machine (no ncftpput). You now have to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. + the file publicly. - + - HP-UX 11 + Tarball - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + Ensure that you have the right code version. Hence run: + 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 current + + + + first. Run: + + + + autoheader && autoconf && ./configure + + + + Then do: + + + + make tarball-dist + + + + To upload the package to Sourceforge, simply issue + + + + make tarball-upload + + + + Goto the displayed URL and release the file publicly on Sourceforge. + + + + HP-UX 11 + + Ensure that you have the latest code version. Hence run: + + + + 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 current + + + + first. Run: + + + autoheader && autoconf && ./configure Then do FIXME. - + - Amiga OS + Amiga OS - First, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + Ensure that you have the latest code version. Hence run: + 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 current + + + + first. Run: + + + autoheader && autoconf && ./configure Then do FIXME. - + - AIX + AIX Login to Sourceforge's compilefarm via ssh: @@ -2388,14 +2325,23 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg - Choose the right operating system. - When logged in, make sure that you have freshly exported the right - version into an empty directory. (See "Building and releasing - packages" above). Then run: + Choose the right operating system. If you have downloaded Privoxy + before: + 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 current + + + + If not, please checkout + Privoxy via CVS first. Run: + + + autoheader && autoconf && ./configure @@ -2411,79 +2357,12 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg which creates a gzip'ed tar archive. Sadly, you cannot use make aix-upload on the Sourceforge machine (no ncftpput). You now have to manually upload the archive to Sourceforge's ftp server and release - the file publicly. Use the release notes and Change Log from the - source tarball package. + the file publicly. - - - - - After the Release - - When all (or: most of the) packages have been uploaded and made available, - send an email to the announce - mailing list, Subject: "Version X.Y.Z available for download". Be sure to - include the - download - location, the release notes and the change log. - - + - - Update the Webserver - - When updating the webserver, please follow these steps to make - sure that no broken links, incosistent contents or permission - problems will occur: - - - If you have changed anything in the documentation source SGML files, - do: - - - - make dok # (or make redkat-dok if make dok doesn't work for you) - - - - That will generate doc/webserver/user-manual, - doc/webserver/developer-manual, - doc/webserver/faq and - doc/webserver/index.html automatically. - - - If you changed the manual page source, generate - doc/webserver/man-page/privoxy-man-page.html - by running make man. (This is - a separate target due to dependencies on some obscure perl scripts. - See comments in GNUmakefile.) - - - If you want to add new files to the webserver, create them locally in - the doc/webserver/* directory (or - create new directories under doc/webserver). - - - Next, commit any changes from the above steps to CVS. All set? Then do - - - - make webserver - - - - This will do the upload to the - webserver (www.privoxy.org) and ensure all files and directories - there are group writable. - - - Please do NOT use any other means of transferring - files to the webserver to avoid permission problems. - - - Contacting the developers, Bug Reporting and Feature Requests @@ -2537,15 +2416,6 @@ zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg Temple Place - Suite 330, Boston, MA 02111-1307, USA. $Log: developer-manual.sgml,v $ - Revision 1.33 2002/04/12 03:49:53 hal9 - Spell checked. Clarification on where docs are kept. - - Revision 1.32 2002/04/11 21:29:58 jongfoster - Documenting Win32 release procedure - - Revision 1.31 2002/04/11 09:32:52 oes - more nits - Revision 1.30 2002/04/11 09:24:53 oes nits diff --git a/doc/source/faq.sgml b/doc/source/faq.sgml index 80d8d265..e80e5706 100644 --- a/doc/source/faq.sgml +++ b/doc/source/faq.sgml @@ -7,7 +7,7 @@ - + @@ -22,7 +22,7 @@ This file belongs into ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/ - $Id: faq.sgml,v 1.48 2002/04/10 18:45:15 swa Exp $ + $Id: faq.sgml,v 1.47 2002/04/10 04:05:32 hal9 Exp $ Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ @@ -60,7 +60,7 @@ Privoxy Frequently Asked Questions -$Id: faq.sgml,v 1.48 2002/04/10 18:45:15 swa Exp $ +$Id: faq.sgml,v 1.47 2002/04/10 04:05:32 hal9 Exp $ @@ -1443,9 +1443,6 @@ FIXME: Commented out until we have something to put here. HB 03/18/02. Temple Place - Suite 330, Boston, MA 02111-1307, USA. $Log: faq.sgml,v $ -Revision 1.48 2002/04/10 18:45:15 swa -generated - Revision 1.47 2002/04/10 04:05:32 hal9 More on BML, etc. diff --git a/doc/source/newfeatures.sgml b/doc/source/newfeatures.sgml index f32f6e26..7624f2c0 100644 --- a/doc/source/newfeatures.sgml +++ b/doc/source/newfeatures.sgml @@ -3,7 +3,7 @@ Purpose : Entity included in other project documents. - $Id: newfeatures.sgml,v 1.3 2002/04/06 05:07:29 hal9 Exp $ + $Id: newfeatures.sgml,v 1.2 2002/04/02 00:55:46 hal9 Exp $ Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ @@ -32,7 +32,7 @@ Integrated browser based configuration and control utility (http://p.p). Browser-based tracing of rule - and filter effects. Remote toggling. + and filter effects. At present, Privoxy is known to run on Win32, Mac - OSX, OS/2, AmigaOS, Linux (RedHat, Suse, Debian), FreeBSD, BeOS, and many flavors - of Unix. + 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 http://sourceforge.net/project/showfiles.php?group_id=11118. @@ -45,7 +47,7 @@ Privoxy User Manual -$Id: user-manual.sgml,v 1.76 2002/04/16 04:25:51 hal9 Exp $ +$Id: user-manual.sgml,v 1.73 2002/04/10 18:45:15 swa Exp $ @@ -68,13 +70,13 @@ The user manual gives users information on how to install, configure and use - Privoxy. + Privoxy. - + &p-intro; - You can find the latest version of the user manual at - + New Features In addition to Internet Junkbuster's traditional feature of ad and banner blocking and cookie management, Privoxy provides new features: - &newfeatures; + @@ -146,212 +148,222 @@ Installation - Privoxy is available both in convenient pre-compiled - packages for a wide range of operating systems, and as raw source code. - For most users, we recommend using the packages, which can be downloaded from our - Privoxy Project Page. - - - If you like to live on the bleeding edge and are not afraid of using - possibly unstable development versions, you can check out the up-to-the-minute - version directly from the - CVS repository or simply download the nightly CVS - tarball. + Privoxy is available as raw source code (tarball + or via CVS), or pre-compiled binaries for various platforms. See the Privoxy Project Page for + the most up to date release information. + Privoxy is also available via CVS. + But + please be aware that CVS is constantly changing, and it may break in + mysterious ways. -&supported; + &supported; -Binary Packages - - The packages can be downloaded from our Privoxy Project Page. - +Source + + + + &buildsource; + - How to install them depends on your operating system: + For Redhat and SuSE Linux RPM packages, see below. + -Redhat and SuSE RPMs +Red Hat + + To build Redhat RPM packages from source, install source as above. Then: + - RPMs can be installed with rpm -i <name-of-rpm.rpm>, - and will use /etc/privoxy for configuration files. + + autoheader + autoconf + ./configure + make redhat-dist + - Note that if you have a Junkbuster RPM installed on your system, you - need to remove it first, because the packages conflict. + This will create both binary and src RPMs in the usual places. Example: - - -Solaris, NetBSD, HP-UX + +    /usr/src/redhat/RPMS/i686/privoxy-&p-version;-1.i686.rpm + + +    /usr/src/redhat/SRPMS/privoxy-&p-version;-1.src.rpm + - Create a new directory, cd to it, then unzip and - untar the archive. For the most part, you'll have to figure out where - things go. FIXME. + To install, of course: - - -Windows + + + rpm -Uvv /usr/src/redhat/RPMS/i686/privoxy-&p-version;-1.i686.rpm + + - Just double-click the installer, which will guide you through - the installation process. + This will place the Privoxy configuration + files in /etc/privoxy/, and log files in + /var/log/privoxy/. Run + chkconfig privoxy on to have + Privoxy start automatically during init. + + -OS/2 - +SuSE - Just double-click the WarpIN self-installing archive, which will guide - you through the installation process. A shadow of the - Privoxy executable will be placed in your - startup folder so it will start automatically whenever OS/2 starts. + To build SuSE RPM packages, install source as above. Then: - The directory you choose to install Privoxy - into will contain all of the configuration files. + + autoheader + autoconf + ./configure + make suse-dist + - - -Debian - FIXME. + This will create both binary and src RPMs in the usual places. Example: - - -AmigaOS - Unpack the .lha archive, then FIXME. +    /usr/src/packages/RPMS/i686/privoxy-&p-version;-1.i686.rpm + + +    /usr/src/packages/SRPMS/privoxy-&p-version;-1.src.rpm - - - - -Building from Source - -&buildsource; - + + To install, of course: + - For more detailed instructions, on how to build Redhat and SuSE RPMs, - Windows self-extracting installers etc, please consult the developer manual. + + rpm -Uvv /usr/src/packages/RPMS/i686/privoxy-&p-version;-1.i686.rpm + - - + + This will place the Privoxy configuration + files in /etc/privoxy/, and log files in + /var/log/privoxy/. + - + +OS/2 -Quickstart to Using <application>Privoxy</application> - + - - -Note to Upgraders - There are very significant changes from older versions of - Junkbuster to the current - Privoxy. Configuration is substantially - changed. Junkbuster 2.0.x and earlier - configuration files will not migrate. The functionality of the old - blockfile, cookiefile and - imagelist, are now combined into the - actions file (default.action - for most installations). + Privoxy is packaged in a WarpIN self- + installing archive. The self-installing program will be named depending + on the release version, something like: + privoxyos2_setup_&p-version;.exe. 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 Privoxy + executable will be placed in your startup folder so it will start + automatically whenever OS/2 starts. + - A filter file (typically default.filter) - is new with Privoxy 2.9.x, and provides some - of the new sophisticaton (explained below). config is - much the same as before. + The directory you choose to install Privoxy + into will contain all of the configuration files. + - If upgrading from a 2.0.x version, you will have to use the new config - files, and possibly adapt any personal rules from your older files. - When porting personal rules over from the old blockfile - to the new actions file, please note that even the pattern syntax has - changed. - If upgrading from 2.9.x development versions, it is still recommended - to use the new configuration files. + 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 + select() socket call. + - A quick list of things to be aware of before upgrading: + In addition to needing the source code distribution as outlined earlier, + you will want to extract the os2seutp directory from CVS: + + cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login + cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup + + This will create a directory named os2setup/, which will contain the + Makefile.vac makefile and os2build.cmd + which is used to completely create the binary distribution. The sequence + of events for building the executable for yourself goes something like this: + + cd current + autoheader + autoconf + sh configure + cd ..\os2setup + nmake -f Makefile.vac + + You will see this sequence laid out in os2build.cmd. - - + - - - The default listening port is now 8118 due to a conflict with another - service (NAS). - - - - - Some installers may remove earlier versions completely. Save any - important configuration files! - - - - - Privoxy is controllable with a web browser - at the special URL: http://config.privoxy.org/ - (Shortcut: http://p.p/). Many - aspects of configuration can be done here, including temporarily disabling - Privoxy. - - - - - The primary configuration file for cookie management, ad and banner - blocking, and many other aspects of Privoxy - configuration is default.action. It is strongly - recommended to make oneself familiar with the new actions concept below - before modifying that file. - - - - - - - Some installers may not automatically start - Privoxy after installation. - - - + +Windows +Click-click. (I need help on this. Not a clue here. Also for +configuration section below. HB.) + + + + +Other + + Some quick notes on other Operating Systems. + + + + For FreeBSD (and other *BSDs?), the build will require gmake + instead of the included make. gmake is + available from http://www.gnu.org. + The rest should be the same as above for Linux/Unix. + + + + + + - -Starting <application>Privoxy</application> + +Quickstart to Using <application>Privoxy</application> Before launching Privoxy for the first time, you will want to configure your browser(s) to use Privoxy as a HTTP and HTTPS proxy. The default is localhost for the proxy address, - and port 8118 (earlier versions used port 8000). This is the one required + and port 8118 (earlier versions used port 800). This is the one required configuration that must be done! @@ -392,7 +404,7 @@ - For for SuSE: rcprivoxy start + For for SuSE: /etc/rc.d/privoxy start @@ -412,42 +424,33 @@ The included default configuration files should give a reasonable starting - point. Most of the per site configuration is done in the - actions files. These are where various cookie actions are - defined, ad and banner blocking, and other aspects of - Privoxy configuration. There are several such - files included, with varying levels of aggressiveness. + point, though may be somewhat aggressive in blocking junk. Most of the + per site configuration is done in the actions files. These + are where various cookie actions are defined, ad and banner blocking, + and other aspects of Privoxy configuration. There + are several such files included, with varying levels of aggressiveness. You will probably want to keep an eye out for sites that require persistent cookies, and add these to default.action as needed. By default, most of these will be accepted only during the current browser - session (aka session cookies), until you add them to the - configuration. If you want the browser to handle this instead, you will need - to edit default.action and disable this feature. If you - use more than one browser, it would make more sense to let - Privoxy handle this. In which case, the - browser(s) should be set to accept all cookies. - - - - Another feature where you will propably want to define exceptions for trusted - sites is the popup-killing (through the +popup and - +filter{popups} actions), because your favourite shopping, - banking, or leisure site may need popups. + session, until you add them to the configuration. If you want the browser to + handle this instead, you will need to edit + default.action and disable this feature. If you use more + than one browser, it would make more sense to let + Privoxy handle this. In which case, the browser(s) + should be set to accept all cookies. - Privoxy is HTTP/1.1 compliant, but not all of - the optional 1.1 features are as yet supported. In the unlikely event that - you experience inexplicable problems with browsers that use HTTP/1.1 per default - (like Mozilla or recent versions of I.E.), you might - try to force HTTP/1.0 compatibility. For Mozilla, look under Edit -> - Preferences -> Debug -> Networking. - Alternatively, set the +downgrade config option in - default.action which will downgrade you brower's HTTP - requests from HTTP/1.1 to HTTP/1.0 before processing them. + Privoxy is HTTP/1.1 compliant, but not all 1.1 + features are as yet implemented. If browsers that support HTTP/1.1 (like + Mozilla or recent versions of I.E.) experience + problems, you might try to force HTTP/1.0 compatibility. For Mozilla, look + under Edit -> Preferences -> Debug -> Networking. + Or set the +downgrade config option in + default.action. @@ -456,8 +459,7 @@ preferences and requirements. There are many, many aspects that can be customized. Actions (as specified in default.action) can be adjusted by pointing your browser to - http://config.privoxy.org/ - (shortcut: http://p.p/), + http://p.p/, and then follow the link to edit the actions list. (This is an internal page and does not require Internet access.) @@ -469,36 +471,27 @@ the browser's request headers, and actions that apply to a given URL. In addition to the default.action file editor mentioned above, Privoxy can also - be turned on and off (toggled) from this page. - - - - If you encounter problems, try loading the page without - Privoxy. If that helps, enter the URL where - you have the problems into the browser - based rule tracing utility. Watch out which rules apply and why, and - then try turning them off for that site one after the other, until the problem - is gone. When you have found the culprit, you might want to turn the rest on - again. + be turned on and off from this page. - If the above paragraph sounds gibberish to you, you might want to read more about the actions concept - or even dive deep into the Appendix - on actions. + If you encounter problems, please verify it is a + Privoxy bug, by disabling + Privoxy, 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 + {fragile} section of default.action. + This will turn off most actions for this site. For more on troubleshooting + problem sites, see the Appendix. If a bug, please report it + to the developers (see below). - - If you can't get rid of the problem at all, think you've found a bug in - Privoxy, want to propose a new feature or smarter rules, please see the - chapter "Contacting the Developers, .." below. - - - - + Command Line Options @@ -596,11 +589,10 @@ Controlling <application>Privoxy</application> with Your Web Browser - Privoxy's user interface can be reached through the special - URL http://config.privoxy.org/ - (shortcut: http://p.p/), - which is a built-in page and works without internet access. - You will see the following section: + Privoxy can be reached by the special + URL http://p.p/ (or alternately + http://config.privoxy.org/), + which is an internal page. You will see the following section: @@ -609,10 +601,9 @@ Please choose from the following options: - * Privoxy main page * Show information about the current configuration * Show the source code version numbers - * Show the request headers. + * Show the client's request headers. * Show which actions apply to a URL and why * Toggle Privoxy on or off * Edit the actions list @@ -627,16 +618,16 @@ Please choose from the following options: Privoxy. This is an easy way to adjust various aspects of Privoxy configuration. The actions file, and other configuration files, are explained in detail below. + Privoxy will automatically detect any changes + to these files. Toggle Privoxy On or Off is handy for sites that might - have problems with your current actions and filters. You can in fact use - it as a test to see whether it is Privoxy + have problems with your current actions and filters, or just to test if + a site misbehaves, whether it is Privoxy causing the problem or not. Privoxy continues - to run as a proxy in this case, but all filtering is disabled. There - is even a toggle Bookmarklet offered, so that you can toggle - Privoxy with one click from your browser. + to run as a proxy in this case, but all filtering is disabled. @@ -679,52 +670,36 @@ Please choose from the following options: - default.action (the actions file) is used to define - which of a set of various actions relating to images, banners, - pop-ups, access restrictions, banners and cookies are to be applied where. - There is a web based editor for this file that can be accessed at http://config.privoxy.org/edit-actions/ - (Shortcut: http://p.p/edit-actions/). - (Other actions files are included as well with differing levels of filtering + The default.action file is used to define various + actions 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 http://p.p. (Other actions + files are included as well with differing levels of filtering and blocking, e.g. basic.action.) - default.filter (the filter file) can be used to re-write the raw + The default.filter 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. The filtering jobs are only - pre-defined here; whether to apply them or not is up to the actions file. + and whatever else lurks on any given web page. - - All files use the # character to denote a - comment (the rest of the line will be ignored) and understand line continuation - through placing a backslash ("\") as the very last character - in a line. If the # is preceded by a backslash, it looses - its special function. Placing a # in front of an otherwise - valid configuration line to prevent it from being interpreted is called "commenting - out" that line. - - default.action and default.filter - can use Perl style regular expressions for maximum flexibility. - - - - After making any changes, there is no need to restart + can use Perl style regular expressions for maximum flexibility. All files use + the # character to denote a comment. Such + lines are not processed by Privoxy. After + making any changes, there is no need to restart Privoxy in order for the changes to take - effect. Privoxy detects such changes - automatically. Note, however, that it may take one or two additional - requests for the change to take effect. When changing the listening address - of Privoxy, these wake up requests - must obviously be sent to the old listening address. + effect. Privoxy should detect such changes + automatically. - confdir /etc/privoxy + blockfile blocklist.ini - - + + + + + + Indicates that the blockfile is named blocklist.ini. (A + default installation does not use this.) + + + + A # indicates a comment. Any part of a + line following a # is ignored, except if + the # is preceded by a + \. - Assigns the value /etc/privoxy to the option - confdir and thus indicates that the configuration - directory is named /etc/privoxy/. + Thus, by placing a # 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 commenting out an + option and can be useful to turn off features: If you comment out the + logfile line, Privoxy will not + log to a file at all. Watch for the default: section in each + explanation to see what happens if the option is left unset (or commented + out). - All options in the config file except for confdir and - logdir are optional. Watch out in the below description - for what happens if you leave them unset. + Long lines can be continued on the next line by using a + \ as the very last character. - The main config file controls all aspects of Privoxy's - operation that are not location dependent (i.e. that apply invariantly no matter - where in the web you are surfing). + There are various aspects of Privoxy behavior + that can be tuned. -Configuration and Log File Locations +Defining Other Configuration Files - Privoxy can (and normally does) use a number of - other files for addidtional configuration and logging. - This section of the configuration file tells Privoxy - where to find those other files. + Privoxy 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 Privoxy + where to find all those other files. + + On Windows and AmigaOS, + Privoxy looks for these files in the same + directory as the executable. On Unix and OS/2, + Privoxy looks for these files in the current + working directory. In either case, an absolute path name can be used to + avoid problems. + -confdir + + When development goes modular and multi-user, the blocker, filter, and + per-user config will be stored in subdirectories of confdir. + For now, only confdir/templates is used for storing HTML + templates for CGI results. + - - - Specifies: - - The directory where the other configuration files are located - - - - Type of value: - - Path name - - - - Default value: - - /etc/privoxy (Unix) or Privoxy installation dir (Windows) - - - - Effect if unset: - - Mandatory - - - - Notes: - - - No trailing /, please - - - When development goes modular and multi-user, the blocker, filter, and - per-user config will be stored in subdirectories of confdir. - For now, the configuration dir structure is flat, except for - confdir/templates, where the HTML templates for CGI - output reside. - - - - - + + The location of the configuration files: + + + + + + confdir /etc/privoxy # No trailing /, please. + + + + -logdir + + The directory where all logging (i.e. logfile and + jarfile) takes place. No trailing + /, please: + - - - Specifies: - - - The directory where all logging takes place (i.e. where logfile and - jarfile are located) - - - - - Type of value: - - Path name - - - - Default value: - - /var/log/privoxy (Unix) or Privoxy installation dir (Windows) - - - - Effect if unset: - - Mandatory - - - - Notes: - - - No trailing /, please - - - - - + + + + + logdir /var/log/privoxy + + + + -actionsfile + + Note that all file specifications below are relative to + the above two directories! + - - - Specifies: - - - The actions file to use - - - - - Type of value: - - File name, relative to confdir - - - - Default value: - - default.action (Unix) or default.action.txt (Windows) - - - - Effect if unset: - - - No action is taken at all. Simple neutral proxying. - - - - - Notes: - - - There is no point in using Privoxy without - an actions file. - - - - - + + The default.action 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 default.filter. No sites + are blocked. Privoxy displays a checkboard type + pattern for filtered ads and other images. The syntax of this file is + explained in detail below. Other + actions files are included, and you are free to use any of + them. They have varying degrees of aggressiveness. + -actionsfile + + + + + actionsfile default.action + + + + - - - Specifies: - - - The actions file to use - - - - - Type of value: - - File name, relative to confdir - - - - Default value: - - default.action (Unix) or default.action.txt (Windows) - - - - Effect if unset: - - - No action is taken at all. Simple neutral proxying. - - - - - Notes: - - - There is no point in using Privoxy without - an actions file. There are three diffrent actions files included in the - distribution, with varying degrees of aggressiveness: - default.action, intermediate.action and - advanced.action. - - - - - + + The default.filter file contains content modification rules + that use regular expressions. 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 Microsoft with MicroSuck wherever + it appears on a Web page. Default: whatever the developers are playing with + :-/ + -filterfile + + 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. - - - Specifies: - - - The filter file to use - - - - - Type of value: - - File name, relative to confdir - - - - Default value: - - default.filter (Unix) or default.filter.txt (Windows) - - - - Effect if unset: - - - No textual content filtering takes place, i.e. all - +filter{name} - actions in the actions file are turned off - - - - - Notes: - - - The default.filter file contains content modification rules - that use regular expressions. 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 Microsoft with MicroSuck wherever - it appears on a Web page. - - - - - + -logfile + + + + + filterfile default.filter + + + + - - - Specifies: - - - The log file to use - - - - - Type of value: - - File name, relative to logdir - - - - Default value: - - logfile (Unix) or privoxy.log (Windows) - - - - Effect if unset: - - - No log file is used, all log messages go to the console (stderr). - - - - - 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., it's not blocking an ad you - think it should block) but in most cases you probably will never look at it. - - - 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 man cron). For Redhat, a logrotate - script has been included. - - - On SuSE Linux systems, you can place a line like /var/log/privoxy.* - +1024k 644 nobody.nogroup in /etc/logfiles, with - the effect that cron.daily will automatically archive, gzip, and empty the - log, when it exceeds 1M size. - - - - - + + The logfile is where all logging and error messages are written. The logfile + can be useful for tracking down a problem with + Privoxy (e.g., it's not blocking an ad you + think it should block) but in most cases you probably will never look at it. + -jarfile + + 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 man cron). For Redhat, a logrotate + script has been included. + - - - Specifies: - - - The file to store intercepted cookies in - - - - - Type of value: - - File name, relative to logdir - - - - Default value: - - jarfile (Unix) or privoxy.jar (Windows) - - - - Effect if unset: - - - Intercepted cookies are not stored at all. - - - - - Notes: - - - The jarfile may grow to ridiculous sizes over time. - - - - - + + On SuSE Linux systems, you can place a line like /var/log/privoxy.* + +1024k 644 nobody.nogroup in /etc/logfiles, with + the effect that cron.daily will automatically archive, gzip, and empty the + log, when it exceeds 1M size. + -trustfile + + Default: Log to the a file named logfile. + Comment out to disable logging. + - - - Specifies: - - - The trust file to use - - - - - Type of value: - - File name, relative to confdir - - - - Default value: - - Unset (commented out). When activated: trust (Unix) or trust.txt (Windows) - - - - Effect if unset: - - - The whole trust mechansim is turned off. - - - - - Notes: - - - The trust mechansim is an experimental feature for building whitelists and 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. - - - If you use + operator in the trust file, it may grow considerably over time. - - - - - + + + + + logfile logfile + + + + + + + The jarfile defines where + Privoxy stores the cookies it intercepts. Note + that if you use a jarfile, it may grow quite large. Default: + Don't store intercepted cookies. + + + + + + + #jarfile jarfile + + + + + + + If you specify a trustfile, + Privoxy 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 + trustfile. This is a very restrictive feature that typical + users most probably want to leave disabled. Default: Disabled, don't use the + trust mechanism. + + + + + + + #trustfile trust + + + + + + + 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 untrusted info page. + + + + + + + trust-info-url http://www.example.com/why_we_block.html + trust-info-url http://www.example.com/what_we_allow.html + + + + @@ -1184,714 +986,538 @@ Please choose from the following options: -Local Setup Documentation +Other Configuration Options - - If you intend to operate Privoxy for more users - that just yourself, it might be a good idea to let them know how to reach - you, what you block and why you do that, your policies etc. - + + This part of the configuration file contains options that control how + Privoxy operates. + -trust-info-url + + Admin-address 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. + - - - Specifies: - - - A URL to be displayed in the error page that users will see if access to an untrusted page is denied. - - - - - Type of value: - - URL - - - - Default value: - - Two example URL are provided - - - - Effect if unset: - - - No links are displayed on the "untrusted" error page. - - - - - Notes: - - - The value of this option only matters if the experimental trust mechanism has been - activated. (See trustfile above.) - - - If you use the trust mechanism, it is a good idea to write up some online - documentation about your trust policy and to specify the URL(s) here. - Use multiple times for multiple URLs. - - - The URL(s) should be added to the trustfile as well, so users don't end up - locked out from the information on why they were locked out in the first place! - - - - - + + + + + #admin-address fill@me.in.please + + + + -admin-address + + Proxy-info-url can be set to a URL that contains more info + about this Privoxy 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. + - - - Specifies: - - - An email address to reach the proxy administrator. - - - - - Type of value: - - Email address - - - - Default value: - - Unset - - - - Effect if unset: - - - No email address is displayed on error pages and the CGI user interface. - - - - - Notes: - - - If both admin-address and proxy-info-url - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. - - - - - - -proxy-info-url - - - - Specifies: - - - A URL to documentation about the local Privoxy setup, - configuration or policies. - - - - - Type of value: - - URL - - - - Default value: - - Unset - - - - Effect if unset: - - - No link to local documentation is displayed on error pages and the CGI user interface. - - - - - Notes: - - - If both admin-address and proxy-info-url - are unset, the whole "Local Privoxy Support" box on all generated pages will - not be shown. - - - This URL shouldn't be blocked ;-) - - - - - + + + + + proxy-info-url http://www.example.com/proxy.html + + + + - - + + Listen-address specifies the address and port where + Privoxy 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 localhost and the + port as 8118). + - + + 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 + listen-address [<ip-address>]:<port>. If you leave + out the IP address, Privoxy 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 + aclfile above), or a firewall. + - -Debugging + + For example, suppose you are running Privoxy 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: + - - These options are mainly useful when tracing a problem. - Note that you might also want to invoke - Privoxy with the --no-daemon - command line option when debugging. - + + + + + listen-address 192.168.0.1:8118 + + + + -debug + + If you want it to listen on all addresses (including the outside + connection): + - - - Specifies: - - - Keys that determine what information gets logged. - - - - - Type of value: - - Integer values - - - - Default value: - - 12289 (i.e.: URLs plus informational and warning messages) - - - - Effect if unset: - - - Nothing gets logged. - - - - - Notes: - - - The available debug levels are: - - - - debug 1 # show each GET/POST/CONNECT request - debug 2 # show each connection status - debug 4 # show I/O status - debug 8 # show header parsing - debug 16 # log all data into the logfile - debug 32 # debug force feature - debug 64 # debug regular expression filter - debug 128 # debug fast redirects - debug 256 # debug GIF de-animation - debug 512 # Common Log Format - debug 1024 # debug kill pop-ups - debug 4096 # Startup banner and warnings. - debug 8192 # Non-fatal errors - - - - To select multiple debug levels, you can either add them or use - multiple debug lines. - - - A debug level of 1 is informative because it will show you each request - as it happens. 1, 4096 and 8192 are highly recommended - so that you will notice when things go wrong. The other levels are probably - only of interest if you are hunting down a specific problem. They can produce - a hell of output (especially 16). - - - The reporting of fatal errors (i.e. ones which crash - Privoxy) is always on and cannot be disabled. - - - If you want to use CLF (Common Log Format), you should set debug - 512 ONLY and not enable anything else. - - - - - + + + + + listen-address :8118 + + + + -single-threaded + + If you do this, consider using ACLs (see aclfile 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). + - - - Specifies: - - - Whether to run only one server thread - - - - - Type of value: - - None - - - - Default value: - - Unset - - - - Effect if unset: - - - Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to - serve multiple requests simultaneously. - - - - - Notes: - - - This option is only there for debug purposes and you should never - need to use it. It will drastically reduce performance. - - - - - + + 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. + - + + + + + debug 1 # GPC = show each GET/POST/CONNECT request + debug 2 # CONN = show each connection status + debug 4 # IO = show I/O status + debug 8 # HDR = show header parsing + debug 16 # LOG = log all data into the logfile + debug 32 # FRC = debug force feature + debug 64 # REF = debug regular expression filter + debug 128 # = debug fast redirects + debug 256 # = debug GIF de-animation + debug 512 # CLF = Common Log Format + debug 1024 # = debug kill pop-ups + debug 4096 # INFO = Startup banner and warnings. + debug 8192 # ERROR = Non-fatal errors + + + + - + + It is highly recommended that you enable ERROR + reporting (debug 8192), at least until v3.0 is released. + +]]> - -Access Control and Security + + The reporting of FATAL errors (i.e. ones which crash + Privoxy) is always on and cannot be disabled. + - - This section of the config file controls the security-relevant aspects - of Privoxy's configuration. - + + If you want to use CLF (Common Log Format), you should set debug + 512 ONLY, do not enable anything else. + -listen-address + + Multiple debug directives, are OK - they're logical-OR'd + together. + - - - Specifies: - - - The IP address and TCP port on which Privoxy will - listen for client requests. - - - - - Type of value: - - [IP-Adddress]:Port - - - - Default value: - - localhost:8118 - - - - Effect if unset: - - - Bind to localhost (127.0.0.1), port 8118. This is suitable and recommended for - home users who run Privoxy on the same machine as - their browser. - - - - - Notes: - - - You will need to configure your browser(s) to this proxy address and port. - - - 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. - - - If you leave out the IP address, Privoxy 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 Acls below), or a firewall. - - - - - Example: - - - Suppose you are running Privoxy 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: - - - - listen-address 192.168.0.1:8118 - - - - - - + + + + + debug 15 # same as setting the first 4 listed above + + + + -toggle + + Default: + - - - Specifies: - - - Initial state of "toggle" status - - - - - Type of value: - - 1 or 0 - - - - Default value: - - 1 - - - - Effect if unset: - - - Act as if toggled on - - - - - Notes: - - - If set to 0, Privoxy will start in - toggled off mode, i.e. behave like a normal, content-neutral - proxy. See enable-remote-toggle - below. This is not really useful anymore, since toggling is much easier - via the web - interface then via editing the conf file. - - - The windows version will only display the toggle icon in the system tray - if this option is present. - - - - - + + + + + debug 1 # URLs + debug 4096 # Info + debug 8192 # Errors - *we highly recommended enabling this* + + + + + + Privoxy normally uses + multi-threading, 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 + single-threaded option forces + Privoxy to handle requests sequentially. + Default: Multi-threaded mode. + -enable-remote-toggle - - - Specifies: - - - Whether or not the web-based toggle - feature may be used - - - - - Type of value: - - 0 or 1 - - - - Default value: - - 1 - - - - Effect if unset: - - - The web-based toggle feature is disabled. - - - - - Notes: - - - When toggled off, Privoxy acts like a normal, - content-neutral proxy, i.e. it acts as if none of the actions applied to - any URL. - - - For the time being, access to the toggle feature can not be - controlled separately by Acls or HTTP authentication, - so that everybody who can access Privoxy (see - Acls and listen-address above) can - toggle it for all users. So this option is not recommended - for multi-user environments with untrusted users. - - - Note that you must have compiled Privoxy with - support for this feature, otherwise this option has no effect. - - - - - + + + + + #single-threaded + + + + + + toggle allows you to temporarily disable all + Privoxy's filtering. Just set toggle + 0. + -enable-edit-actions - - - Specifies: - - - Whether or not the web-based actions - file editor may be used - - - - - Type of value: - - 0 or 1 - - - - Default value: - - 1 - - - - Effect if unset: - - - The web-based actions file editor is disabled. - - - - - Notes: - - - For the time being, access to the editor can not be - controlled separately by Acls or HTTP authentication, - so that everybody who can access Privoxy (see - Acls and listen-address above) can - modify its configuration for all users. So this option is not - recommended for multi-user environments with untrusted users. - - - Note that you must have compiled Privoxy with - support for this feature, otherwise this option has no effect. - - - - - - -Acls: permit-access and deny-access - - - Specifies: - - - Who can access what. - - - - - Type of value: - - - src_addr[/src_masklen] - [dst_addr[/dst_masklen]] - - - Where src_addr and - dst_addr are IP addresses in dotted decimal notation or valid - DNS names, and src_masklen and - dst_masklen are subnet masks in CIDR notation, i.e. integer - values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole - destination part are optional. - - - - - Default value: - - Unset - - - - Effect if unset: - - - Don't restrict access further than implied by listen-address - - - - - Notes: - - - Access controls are included at the request of ISPs and systems - administrators, and are not usually needed by individual users. - For a typical home user, it will normally suffice to ensure that - Privoxy only listens on the localhost or internal (home) - network address by means of the listen-address option. - - - Please see 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. - - - Multiple acl lines are OK. - If any acls are specified, then the Privoxy - talks only to IP addresses that match at least one permit-access line - and don't match any subsequent deny-access line. In other words, the - last match wins, with the default being deny-access. - - - If Privoxy is using a forwarder (see forward below) - for a particular destination URL, the dst_addr - that is examined is the address of the forwarder and NOT the address - of the ultimate target. This is necessary because it may be impossible for the local - Privoxy to determine the IP address of the - ultimate target (that's often what gateways are used for). - - - You should prefer using IP addresses over DNS names, because the address lookups take - time. All DNS names must resolve! You can not use domain patterns - like *.org or partial domain names. If a DNS name resolves to multiple - IP addresses, only the first one is used. - - - Denying access to particular sites by acl may have undesired side effects - if the site in question is hosted on a machine which also hosts other sites. - - - - - Examples: - - - Explicitly define the defauklt behaviour if no acl and - listen-address are set: localhost - is OK. The absence of a dst_addr implies that - all destination addresses are OK: - - - - permit-access localhost - - - - Allow any host on the same class C subnet as www.privoxy.org access to - nothing but www.example.com: - - - - permit-access www.privoxy.org/24 www.example.com/32 - - - - Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere, - with the exception that 192.168.45.73 may not access www.dirty-stuff.example.com: - - - - permit-access 192.168.45.64/26 - deny-access 192.168.45.73 www.dirty-stuff.example.com - - - - - - + + The Windows version of Privoxy 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 Options menu), one + choice is Enable. Clicking on enable toggles + Privoxy on and off. This is useful if you want + to temporarily disable Privoxy, 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 Privoxy + internal address of http://p.p on + any platform. + + + + toggle 1 means Privoxy runs + normally, toggle 0 means that + Privoxy becomes a non-anonymizing non-blocking + proxy. Default: 1 (on). + + + + + + + toggle 1 + + + + + + + For content filtering, i.e. the +filter and + +deanimate-gif actions, it is necessary that + Privoxy 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. + + + + The buffer-limit 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 buffer-limit + Kbytes each, unless you have enabled + single-threaded above. + + + + + + + buffer-limit 4069 + + + + + + + To enable the web-based default.action file editor set + enable-edit-actions to 1, or 0 to disable. Note + that you must have compiled Privoxy with + support for this feature, otherwise this option has no effect. This + internal page can be reached at http://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. + + + + + + + enable-edit-actions 1 + + + + + + + Allow Privoxy to be toggled on and off + remotely, using your web browser. Set enable-remote-toggleto + 1 to enable, and 0 to disable. Note that you must have compiled + Privoxy with support for this feature, + otherwise this option has no effect. + + + + Security note: If this is enabled, anyone who can use the proxy can toggle + it on or off (see http://p.p), and + their changes will affect all users. For shared proxies, you probably want to + disable this. Default: enabled. + + + + + + + enable-remote-toggle 1 + + + + + + + + + + + + + +Access Control List (ACL) + + 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. + + + + 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. + + + + Summary -- if using an ACL: + + + + + Client must have permission to receive service. + + + + + LAST match in ACL wins. + + + + + Default behavior is to deny service. + + + + + The syntax for an entry in the Access Control List is: + + + + + + + ACTION SRC_ADDR[/SRC_MASKLEN] [ DST_ADDR[/DST_MASKLEN] ] + + + + + + + Where the individual fields are: + + + + + + + ACTION = permit-access or deny-access + + SRC_ADDR = client hostname or dotted IP address + SRC_MASKLEN = number of bits in the subnet mask for the source + + DST_ADDR = server or forwarder hostname or dotted IP address + DST_MASKLEN = number of bits in the subnet mask for the target + + + + + + + + The field separator (FS) is whitespace (space or tab). + + + + IMPORTANT NOTE: If Privoxy is using a + forwarder (see below) or a gateway for a particular destination URL, the + DST_ADDR that is examined is the address of the forwarder + or the gateway and NOT the address of the ultimate + target. This is necessary because it may be impossible for the local + Privoxy to determine the address of the + ultimate target (that's often what gateways are used for). + + + + Here are a few examples to show how the ACL features work: + + + + localhost is OK -- no DST_ADDR implies that + ALL destination addresses are OK: + + + + + + + permit-access localhost + + + + + + + A silly example to illustrate permitting any host on the class-C subnet with + Privoxy to go anywhere: + + + + + + + permit-access www.privoxy.com/24 + + + + + + + Except deny one particular IP address from using it at all: + + + + + + + deny-access ident.privoxy.com + + + + + + + You can also specify an explicit network address and subnet mask. + Explicit addresses do not have to be resolved to be used. + + + + + + + permit-access 207.153.200.0/24 + + + + + + + A subnet mask of 0 matches anything, so the next line permits everyone. + + + + + + + permit-access 0.0.0.0/0 + + + + + + + Note, you cannot say: + + + + + + + permit-access .org + + + + -buffer-limit + + to allow all *.org domains. Every IP address listed must resolve fully. + - - - Specifies: - - - Maximum size of the buffer for content filtering. - - - - - Type of value: - - Size in Kbytes - - - - Default value: - - 4096 - - - - Effect if unset: - - - Use a 4MB (4096 KB) limit. - - - - - Notes: - - - For content filtering, i.e. the +filter and - +deanimate-gif actions, it is necessary that - Privoxy buffers the entire document body. - This can be potentially dangerous, since a server could just keep sending - data indefinitely and wait for your RAM to exhaust -- with nasty consequences. - Hence this option. - - - When a document buffer size reaches the buffer-limit, it is - flushed to the client unfiltered and no further attempt to - filter the rest of the document is made. Remember that there may be multiple threads - running, which might require up to buffer-limit Kbytes - each, unless you have enabled single-threaded - above. - - - - - + + An ISP may want to provide a Privoxy that is + accessible by the world 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: + + + + + + + permit-access 0.0.0.0/0 0.0.0.0/0 # other clients can go anywhere + # with the following exceptions: + + deny-access 0.0.0.0/0 123.124.0.0/16 # block all external requests for + # sites on the ISP's network + + permit 0.0.0.0/0 www.my_isp.com # except for the ISP's main + # web site + + permit 123.124.0.0/16 0.0.0.0/0 # the ISP's clients can go + # anywhere + + + + + + + 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. + @@ -1904,231 +1530,250 @@ Please choose from the following options: Forwarding - This feature allows routing of HTTP requests through a chain of - multiple proxies. + 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 - through an anonymous public proxy (see e.g. http://www.multiproxy.org/anon_list.htm) - Or to use a caching proxy to speed up browsing. Or chaining to a parent - proxy may be necessary because the mackine that Privoxy - runs on has no direct internet access. + to a special purpose filtering proxy such as lpwa.com. Or to use + a caching proxy to speed up browsing. + + + + 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. Also specified here are SOCKS proxies. Privoxy - supports the SOCKS 4 and SOCKS 4A protocols. + 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. -forward - - - Specifies: - - - To which parent HTTP proxy specific requests should be routed. - - - - - Type of value: - - - target_domain[:port] - http_parent[/port] - - - Where target_domain is a domain name pattern (see the - chapter on domain matching in the actions file), - http_parent is the address of the parent HTTP proxy - as an IP addresses in dotted decimal notation or as a valid DNS name (or . to denote - no forwarding, and the optional - port parameters are TCP ports, i.e. integer - values from 1 to 64535 - - - - - Default value: - - Unset - - - - Effect if unset: - - - Don't use parent HTTP proxies. - - - - - Notes: - - - If http_parent is ., then requests are not - forwarded to another HTTP proxy but are made directly to the web servers. - - - Multiple lines are OK, they are checked in sequence, and the last match wins. - - - - - Examples: - - - Everything goes to an example anonymizing proxy, except SSL on port 443 (which it doesn't handle): - - - - forward .* anon-proxy.example.org:8080 - forward :443 . - - - - Everything goes to our example ISP's caching proxy, except for requests - to that ISP's sites: - - - - forward .*. caching-proxy.example-isp.net:8000 - forward .example-isp.net . - - - - - - - -forward-socks4 and forward-socks4a - - - Specifies: - - - Through which SOCKS proxy (and to which parent HTTP proxy) specific requests should be routed. - - - - - Type of value: - - - target_domain[:port] - socks_proxy[/port] - http_parent[/port] - - - Where target_domain is a domain name pattern (see the - chapter on domain matching in the actions file), - http_parent and socks_proxy - are IP addresses in dotted decimal notation or valid DNS names (http_parent - may be . to denote no HTTP forwarding), and the optional - port parameters are TCP ports, i.e. integer values from 1 to 64535 - - - - - Default value: - - Unset - - - - Effect if unset: - - - Don't use SOCKS proxies. - - - - - Notes: - - - Multiple lines are OK, they are checked in sequence, and the last match wins. - - - The difference between forward-socks4 and forward-socks4a - is that in the SOCKS 4A protocol, the DNS resolution of the target hostname happens on the SOCKS - server, while in SOCKS 4 it happens locally. - - - If http_parent is ., then requests are not - forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through - a SOCKS proxy. - - - - - Examples: - - - From the company example.com, direct connections are made to all internal - domains, but everything outbound goes through their ISP's proxy by way example.com's - corporate SOCKS 4A gateway to the Internet. - - - - forward-socks4a .*. socks-gw.example.com:1080 www-cache.example-isp.net:8080 - forward .example.com . - - - - A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this: - - - - forward-socks4 .*. socks-gw.example.com:1080 . - - - - - - + + The syntax of each line is: + -Advanced Forwarding Examples + + + + + forward target_domain[:port] http_proxy_host[:port] + forward-socks4 target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port] + forward-socks4a target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port] + + + + - If you have links to multiple ISPs that provide various special content - only to their subscribers, you can configure multiple Privoxies - which have connections to the respective ISPs to act as forwarders to each other, so that - your users can see the internal content of all ISPs. + If http_proxy_host is ., then requests are not forwarded to a + HTTP proxy but are made directly to the web servers. - Assume that host-a has a PPP connection to isp-a.net. And host-b has a PPP connection to - isp-b.net. Both run Privoxy. Their forwarding - configuration can look like this: + Lines are checked in sequence, and the last match wins. - host-a: + 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: - - forward .*. . - forward .isp-b.net host-b:8118 - + + + + forward .* . # implicit + + + - host-b: + In the following common configuration, everything goes to Lucent's LPWA, + except SSL on port 443 (which it doesn't handle): - - forward .*. . - forward .isp-a.net host-a:8118 - + + + + forward .* lpwa.com:8000 + forward :443 . + + + + + + + + Some users have reported difficulties related to LPWA's use of + . as the last element of the domain, and have said that this + can be fixed with this: + + + + + + + forward lpwa. lpwa.com:8000 + + + + + + + (NOTE: the syntax for specifying target_domain has changed since the + previous paragraph was written -- it will not work now. More information + is welcome.) + + + + In this fictitious example, everything goes via an ISP's caching proxy, + except requests to that ISP: + + + + + + + forward .* caching.myisp.net:8000 + forward myisp.net . + + + + + + + For the @home network, we're told the forwarding configuration is this: + + + + + + + + forward .* proxy:8080 + + + + + + + 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. + + + + In this example direct connections are made to all internal + domains, but everything else goes through Lucent's LPWA by way of the + company's SOCKS gateway to the Internet. + + + + + + + forward-socks4 .* lpwa.com:8000 firewall.my_company.com:1080 + forward my_company.com . + + + + + + + This is how you could set up a site that always uses SOCKS but no forwarders: + + + + + + + forward-socks4a .* . firewall.my_company.com:1080 + + + + + + + An advanced example for network administrators: + + + + 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. + + + + This is a bit tricky, but here's an example: + + + + + 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 Privoxy proxy with + forwarding like this: + + + + + + + forward .* . + forward isp-b.com host-b:8118 + + + + + + + host-b can run a Privoxy proxy with forwarding + like this: + + + + + + + forward .* . + forward isp-a.com host-a:8118 + + + + + + + Now, anyone on the Internet (including users on host-a + and host-b) can set their browser's proxy to either + host-a or host-b and be able to browse the content on isp-a or isp-b. + + + + 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. - Now, you users can set their browser's proxy to use either - host-a or host-b and be able to browse the internal content - on both isp-a or isp-b. + + + + forward *. ssbcache.ukc.ac.uk:3128 # Use the proxy, except for: + forward .ukc.ac.uk . # Anything on the same domain as us + forward * . # Host with no domain specified + forward 129.12.*.* . # A dotted IP on our /16 network. + forward 127.*.*.* . # Loopback address + forward localhost.localdomain . # Loopback address + forward www.ukc.mirror.ac.uk . # Specific host + + + @@ -2138,33 +1783,45 @@ Please choose from the following options: - Assuming that Privoxy and squid - run on the same box, your squid configuration could then look like this: +Your squid configuration could then look like this (assuming that the IP +address of the box is 192.168.0.1 ): - - # Define Privoxy as parent proxy (without ICP) - cache_peer 127.0.0.1 parent 8118 7 no-query + + + + # Define Privoxy as parent cache + + cache_peer 192.168.0.1 parent 8118 0 no-query + + # don't listen to the whole world + http_port 192.168.0.1:3128 + + # define the local lan + acl mylocallan src 192.168.0.1-192.168.0.5/255.255.255.255 + # grant access for http to local lan + http_access allow mylocallan + # Define ACL for protocol FTP - acl ftp proto FTP + acl FTP proto FTP - # Do not forward FTP requests to Privoxy - always_direct allow ftp + # Do not forward ACL FTP to privoxy + always_direct allow FTP - # Forward all the rest to Privoxy - never_direct allow all - - + # Do not forward ACL CONNECT (https) to privoxy + always_direct allow CONNECT - - You would then need to change your browser's proxy settings to squid's address and port. - Squid normally uses port 3128. If unsure consult http_port in squid.conf. + # Forward the rest to privoxy + never_direct allow all + + + - - @@ -2382,8 +2039,7 @@ Removed references to Win32. HB 09/23/01 The easiest way to edit the actions file is with a browser by - loading http://config.privoxy.org/ - (shortcut: http://p.p/), and then select + loading http://p.p/, and then select Edit Actions List. A text editor can also be used. @@ -2805,14 +2461,6 @@ Removed references to Win32. HB 09/23/01 - - Note: 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. - - @@ -3550,12 +3198,11 @@ Requests To do this, point your browser to Privoxy - at http://config.privoxy.org/ - (shortcut: http://p.p/), and then select + at http://p.p/, and then select Actions file feedback system, near the bottom of the page. Paste in the URL that is the cause of the unwanted behavior, and follow the prompts. The developers will - try to incorporate a fix for the problem you reported into future versions. + try to incorporate your submission into future versions. @@ -3653,72 +3300,72 @@ Requests and then some examples: - + . - Matches any single character, e.g. a, A, 4, :, or @. - + - + ? - The preceding character or expression is matched ZERO or ONE times. Either/or. - + - + + - The preceding character or expression is matched ONE or MORE times. - + - + * - The preceding character or expression is matched ZERO or MORE times. - + - + \ - The escape character denotes that the following character should be taken literally. This is used where one of the special characters (e.g. .) needs to be taken literally and not as a special meta-character. - + - + [] - Characters enclosed in brackets will be matched if any of the enclosed characters are encountered. - + - + () - parentheses are used to group a sub-expression, or multiple sub-expressions. - + - + | - The bar character works like an or conditional statement. A match is successful if the sub-expression on either side of | matches. - + - + s/string1/string2/g - This is used to rewrite strings of text. string1 is replaced by string2 in this example. - + These are just some of the ones you are likely to use when matching URLs with @@ -4338,16 +3985,6 @@ Requests Temple Place - Suite 330, Boston, MA 02111-1307, USA. $Log: user-manual.sgml,v $ - Revision 1.76 2002/04/16 04:25:51 hal9 - -Added 'Note to Upgraders' and re-ordered the 'Quickstart' section. - -Note about proxy may need requests to re-read config files. - - Revision 1.75 2002/04/12 02:08:48 david__schmidt - Remove OS/2 building info... it is already in the developer-manual - - Revision 1.74 2002/04/11 00:54:38 hal9 - Add small section on submitting actions. - Revision 1.73 2002/04/10 18:45:15 swa generated diff --git a/doc/source/webserver/index.sgml b/doc/source/webserver/index.sgml index 8c82f28e..def88340 100644 --- a/doc/source/webserver/index.sgml +++ b/doc/source/webserver/index.sgml @@ -4,7 +4,7 @@ - + @@ -19,9 +19,9 @@ This file belongs into ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/ - $Id: index.sgml,v 1.7 2002/04/12 10:11:53 swa Exp $ + $Id: index.sgml,v 1.3 2002/04/07 20:27:18 hal9 Exp $ - Written by and Copyright (C) 2001, 2002 the SourceForge + Written by and Copyright (C) 2001 the SourceForge Privoxy team. http://www.privoxy.org/ Based on the Internet Junkbuster originally written @@ -31,11 +31,12 @@ ======================================================================== NOTE: Please read developer-manual/documentation.html before touching - anything in this, or other Privoxy documentation. + anything in this, or other Privoxy documentation. You have been warned! + Failure to abide by this rule will result in the revocation of your license + to live a peaceful existence! ======================================================================== - Note: This is the privoxy home page. The Makefile is adding additional - meta data and content via perl. + Note: This is the privoxy home page. --> @@ -72,8 +73,8 @@ - -More info + +More infos @@ -150,11 +151,6 @@ page on Sourceforge - Pictures of the Privoxy Team - - - - Developer Manual @@ -183,39 +179,6 @@ page on Sourceforge - - - - - - - - - - - - - - - - - - - - - - - - - - - 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

QnSYkT-r$(c8uYb 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 aU9;RVNW_WJPaF?Q>gvT!n)u`NfB)HambjS! diff --git a/doc/webserver/team/02jon_t.jpg b/doc/webserver/team/02jon_t.jpg deleted file mode 100644 index 32e470b58b3ea309ae8f997a3df352a7c1e70e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2039 zcmb7s8N=&^*N zY)STxETs&xMY1$uR8%IBxpVL9cJBT6JkNj6`}2B#zF*0pWE_yE?xO4hKp+qhC|y7@ z0yqM2C=3pR!r?GD0s%*&<Acz7;@)Xbj z05BLLeeK@^gF~PI7y&{`sgpbafe<-!6f&gj5|5X4|D;NrsB0U9ZJs1Rq{Evdb z3Xlyns4kJIxPzr983xu%q4cHz*aP!5ctH=7&8EiVck=)Q5(xR$fBJBaFk`z>U3lpG z<>-T7>MBF39VoSfBbYezxE2nE~vX3tgN_ni_PMt` zdLFvO7hpzG8w!fiGPtuy5>%nBSTnTfnR-dW2~nO}D{a{Hu_fKH=8ei}>b$2?mLM)Y zOM_nDq$s-UqfX9nb?Um(w=sx~yDCb6YL6M6t5+7d36$cww?noiy(#tgw||Re+Sdno z)WV~Bu366$x#K3^P4QMT8sp%TtK76(julSY?k1_d8(hfn!x;N%8cC+NuJu{zji9lp z%#UtcG4E7e$Wa6#_)ObCGW__0hLulmX*Di0?=Q1glNq@LY^B3lFJi6J;R)CwJ1=BI zn&EjIDf*A@Sl<2Wm)}n9jLAHJ8hwc5y&N3z9UC;S>U-Kc6H3M&8MIswdy@%GVNCJw zUaTSkrG@FpDLXH0UQ@2(nB>e%T@4cH*oUm}c83He9^czdJWwkE^nThpKRh9Cl#=sD zYGmVM&(s|AXUmpJq!2d~;$+6nr7Z_f@WMRD7TPUN1-Q zG_4%auu608{g7N#&_96hMmaL6sEV!c$cYI8?no>{m@$TQgoiUc41%dNtR3) z+amG;NPAkdK%X#mmcB?773;n6n%X_G4sYY*pGCZS$z6@hrkYio9~7d^lRo3HMRfsf z^J}EMY!q!c1i5g_@1?RPJJECQJcY&I{M@l~kD{i5KdEViw8rKi_U`PvRvLWCGvYHn zBbGAvz=F~lJv4{MHJ?P)GF{?YZa7f0h#4Hs;Mn;7Cy!oQDs|zHvPN^yHQH@6xV%v4 z;3rfDrR2)Rq4}ZLyS~&K(une8Do1xyWxfPJQ7MffybKFA_j5tQ#c)HdR^O>a9hi05 zF!N{rlX~C#11ik7vUoxr|Sa z?{xEIX7f7Pf>13ps@tTG$^Fnj7rAX67XBQN1PGA;0Vk)tHjdc!sBSLVzoQB!e9(^Y zc4ySsC~wRhC5}Z{MBcuVlG1XTV_ROCKApTTf!rh3={!`Sq}yyfokdOAm3+BljN(R_ z<3%1Y>P;HqCu=#vGMB?+#J&;t2I{VCh*7?gJ)AzF!RX){ID62b^4{q?KJe^TX7*7; z3EKzy1CCwxJx-LzCNio4H|LL-xZ9hr>@~Hu1Z4dg2LT~`o#Emu)1O}-6fD`_j+`y| z^p^U=J$QMkfrkee9^(XE<0?NdR+IWEtX#9-(U=OvH}l&G+WpU?SCzCIZ9-?j6eZGoB!wmhf3k1=}RppBE{ni=TjI6?fuSO7T!uv$=r^0x{ z^3|1n-eISI{4O}9{j%yCjW$Uyl7`PJhagRkcz<<@ys zUQ|0Tz@&3AvPv6}?bt($uYdmi%ipTrm-W(*ZO;#~$gi+nsh&YHs^3=@5_T2>0J;PF LmBw2aCK>t{r4x{g diff --git a/doc/webserver/team/03andreas.jpg b/doc/webserver/team/03andreas.jpg deleted file mode 100644 index d3989e41aa9fb5cbc353d140ec8a8a4340212632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15453 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 diff --git a/doc/webserver/team/04rodney_t.jpg b/doc/webserver/team/04rodney_t.jpg deleted file mode 100644 index bba4f154096761632d45c00767f3b2af8b564ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2138 zcmbV`dpy&N8^^yhHdbV4Zgbn_GR~&b(NZ{Wu`RbTa_vVg4U>sXjyjS`KX<|_5<6Qa zw{n?MA-RMfYMa)`rA!wr9Tn-Q{q*~z|9|Is{&}9~{XCz~BY!TR1=L9ghz9@=2n76V zGXeP|-~vDtl^{xr5Qq{43WX@c)L}3c6_}RVwyo;gS~@z~S_p)mfvJ(6J{pNY82@67 zHZ#XsVs(vhJ8%{|Of9e$KSV%KC={j)(}ck^E%Xq27XNq1y8*Z|-~;%8K`1~04g$kL z@?Jn602IJKzWo`BP(TR+R#w=AuIc~?351s_1}#O^2WQKMIh7B6yP+!#B+V zh0OqIN%7JdQn4m>!$? zg>Z1~`e{UpmY%PodV(^#v3}9M)qDJV%{Q^tI=KqeX4c{w=IsEr*6wkAqpOM#dFT&4 zG*3mcQjeG5TeSPcsMdmKT-$ok_XWSjEY;imEyKC_8dHNL%N4+>?#^1t>#@6p7y112 zX(IEXv#T+x?OwZjN3IC9wfadkVhTJ^<6u;IT1a(hx{hxDnHjxzXAA2vmtu#@5Ve+5 zN<2#+clBLOqe)DIpqny_ISc-z)~lZ2m@MD@5Z1VDZKr2Pw6oCbk*mj1+=DrRCBdF^ z^yoGQHJL=@yDpH3XeS;%H|PX^^2n%m>F%n82G_THIv@1D!JlJ&o<+jypOxmgMRv5S zN#ZUh5VLEyB=wcOBoL;M)WVoo(#7_eY^*>UH+;Dmhdmx)4nt(MpG0p|y{Fsbc6Wb%94Msz z9Vuv-z%k#LX4(w>!pYPWEYFe3$*~tj()<+TbM9NE&n}G+qir0Bb4cDsbq#O!-P^$* zhi(HC(rXb4pJ@g3NSg$lwo*dFeSfDo^r)KRsp2Ec9Dh+wk8`kxiVF0P2Kmyt4tQ0ic#Mg@@ zzh3M2e{Q?RDf@8Eq@DVpLQVLBo}Q8kw>;8)Rn46NRQK5>UpeP7xIBVM97WA&)H1ly zv!K8=FL$zGz3>^q?WxqZV4XWpHa?=VoqbbW^kINj_?H|=T+iT5tA~jLE}C z$ejZ@Ve~99viR03|L|A`ez8LFG;zRV-93uQUGT3lWFDMdfmsEpv7(I5h8;hZk`S^+ z&fl`{-n~l(Rp`MfL1W98wj{}@qow%Wrzrjt(LgD@HqVajA1K6d)SB)!mP`XZdO09 zU&gXdrwi^TgrKgR;+l9h&|yQ)8XW7Tb?>y`*l(ri={SpccsWk2YfuS7-JLNXDaG5^ zpipoIEXkae^Dc^v7^ zt(Dof1bk-@>0EnqHzBZY(3uhGa6LJw$Bx*p>lCY9!I)YJ@D5LiXNo;#wB~QvGvk`? z_v{W6V+Tas^PVK%)jXh3(*6GCpgvmQP4s(Am1XBU>y`*8*L|dP9)7e!Y8Dk7cIR=V zM#H~@Xio(5yJxg=N9GkA^#q66I?;aCSO}UxCtqH;#%%k8RU(uu-k2_b(s8D@eQ0~i z)k%&aDO6Oe?BIW%Ut#!lr(L92FEJ~iG_Iu2!^9i4uO5rH8cI3fe{yX+wy^gkQ_R*g z3w13z##nda=UKJ_LxqJq*cA7`c=jjL=^6Z&vIyyo5Ev!I!-#H*;YpKLQ?X5nk{d-G zjxRM2-NO_2`t`&UePtNP8fy&{MvGnZ>N=hi2U!}9wcy!_E>ISliLV;n>vDpd!`n1p zh3)iZU8>6+!>f|_UD(>ULVJG+JB>kBJ}M%gI<{|i$(3&10}Aq+%)}b6vzSI{r%wx8 zM(j_dTk1E4*YxKfSTXw#qZ?QP7wTvk4AZVgMn5LEKYlvo{JU<}!Ij^Vm3A>@T=UKW zorrmvOZ*w?!(%S}#}-qwf`wo5q8On|GEtT`;;s^OZ{06Drt=Mv-LLk)WlhJ%!^s5QvC-Yil6nhOC$$6=Fei2_9qKEi=KbCZ@S5Adwokt iNpxUG+Ok{r|IL4=%;3Ln<>K79000}rtolIZlK%pS620#L diff --git a/doc/webserver/team/05david.jpg b/doc/webserver/team/05david.jpg deleted file mode 100644 index 429723f1cece4b5f2734eb0ba5066003d0a31a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62834 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 diff --git a/doc/webserver/team/05david_t.jpg b/doc/webserver/team/05david_t.jpg deleted file mode 100644 index c04aa55f51618b926e49db64a99a12fd3df820b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3950 zcmbW2XHXMdm&X$lxDbl5jbfie{ zy%#|`gc<@wKp=sDp)bDg&hE^9+TH&-_k6kM-1-0J&YgQceZB;MsH>`}0)RjO0C*9A z^I3oj07OOgCocrPNNPH2YA~3ZftHqr?h?bLON`fRzrQ4bTPw1p!p7KoBeNyb~aB z;gcHpF9H5jK&lImG_-W|42%~IRS*Cb5CozEgZ{X_==Q$Y2Y^|r*{!Vi z$KQU@nRM{GWo?{KMu-Rrb7y~g1}GQzWgekx!XnpiNJ`z2mXVcHxp!X`^*~KsM_2Eu zzJZ~Uh2={tYa82FF0O8G-=W<-0s@0D!6BhxF|l#+35lPQlD}kS=j7()7ZjFPR902j z)YjFvcXW1j_w@GlkB*H`OioSDU~$X%mDM%E&-D$`?jCvn;5X&)=noeV0Qxu9Mg2F} z|KMW1;GzP9L15ZHTtKRK7YoD+roMWchE4e~?Ta_;f`9wbaomm0ENi2OOFSWRnmdm$ zKoOESA<`eTf06y~!2JJTWd8;B-&|P0B@po9@<6NrCBVLoo7H5q;QCRZ8lw8_UatcK z+vj+d@EX}AvT&Z%uX=E8buGY2_!VhOw#prgUE8>Z)$us2HT{$)q>M<{B9DozP*#oaVcHylH53 zIj`(S!s<9KLHbH!Tkjl=%u;&Ql+U=2=tQF!QJ^c4hrPdkYlS}7cG3DAVBjE*Fwhk~ zHn3{j3O^{t_`W;`fNam8#Dt3F42bQo*c40!(&;dZz5}4feR(H+-Yye29zQG5t}?6l z*lvEqn?wvgC?eK$)kUPT&i(W#u;7{A@YG9d?b9`L(vJNdKdQ_~YJg?ie*05NGSAZ`oqUBAcE5QPnT5wSzOCA0Y)@;@AY25rN%csCHr|h3X+tu#fO-`e} zZOC9@;a6_wfV?r|{nLz&MP9T-n_B+K{U4R0eUBe$}?>Wg@x+cx6e-9Sxa#QM z)DTffUdy4&%ZaqmCq1vIigTXh*s}x;XiCS>g3T z)M3m(nZAP(+ICY0LJdZC8{uhn&v^7<>rfbk=4vqO^%dM-irje4m2&_Lc?}Kk@EH7N zY8Ro{oB}n1DU?A)K%FTM26}7xP;glQ4)%DPN3Le|>uWW$^9WS2VrwVKbRIw5TU(nt{CY-WOK&NRInN_U#(^Ze1m_ zk9nAE6!NnxGJr40v*qb(l!P@i=u7w8QKQ6Jjf<|#wD9~$)2~S#XqNmgM#C_ z4Qb}gJ}P&s|L);D=p|{U@Qq+Jrn6EXSln)S-?sPLNz2rsin4`22ZYpTo3a-di*1!k zez<2-3guL4Oqx+aUB@yn0l81KXqvxK9ut>4Iz7C@v1fG%kD$?=;5F=&3K)M`zI6kA zly2A4IhLP>WB&;w9tLR|_V>#f!*@g+q4z}nQTI3c1O0|%Tlbe!r)pK@EwM$9QwCns zz&M5ZTxN^Cf^yLxw7QEkZ-s0XOZM{9K8?m4BJHOa=q`b-$Xq#~{akX>h%!ao!+js* zhfFlS+8ZqA-Mg7R{90iS!#qOM5gnUO*PlA6-Qm)ad~~4TL7re3il1o6czarBXi(VS zYROh6+XjP?x}=0f`TEtVQrXPCKtIu&rrZWzI>ed~SNC78J0VD(UGd&M!OD7r6%oD% zI*H)ZuAx==y5V9+n;IkgYX4*l%4q*NKzjIXx;G_UqLX$Nr(``$}CTq7B3^T%RjI3r98b9y&i=RT zOLN&@+6RiB`hDjBPA??^4DuSKM%7;h!Q=4Nq=u(H@;uuMjM271I0%Ip?BfNd=)>(bE-Z zWSD32ei$DWns+U2gsikBU;GoA!FtAzuE4G3V&jW{2Nyev1#aZ7(NDUMcia%>jmCU$ zYL9Hv8dm~0YLqV*Dbt$_qLy!>DVdv!0{Q%YSKA4)gi5DzhDC>%uQ=vOJ>}cCI_#kkX(f1qbjtLwn0;AT} zfS?h(Tna4Cc0JwdaaSGkrdAdW-ZYjk?2u*j?nriYF{~-L$eEla+IFjq*6xW^%IRb>)D(w;*FgS${v+ zT*w)WsDaDuY~0)n(547nJmZ<*<>#hs4mm%hn8bTSGbga9UAQ~n3oI)JC-M|QMc0iV z8jE`2$ajJwU2C%TwO=k+s~k>DNmju?lvvHf-O_;}?yJgy5ak?)<~>QC31#_Xd*F8!o%&k;_7 zmh$H~O(lmdJQR1hJdpH~S*1)kM#FMtzqI~Lo|2+XQ7-k8Cr!q_t`C|D7Mom@)@}_6>>uZH?^3>TE z788OnAM5c~fLf!H_8Of=aXdarwnF>AvJaiw>#SP)PG}^ObEBG2v`#0R>pRoOxUPw+ zc|znq_d_G+)`JA3S!+@#zh!_@d*)k0o$!yTuO?Z6umnPce@EdyUh|n7S<(8ymxv0J zyhUe-T22|sHk!WI8*TJZZ$Ysu?g9SuWjKR79(h)W%ix$p6HF2an)M0Kc%RrW*QTx- z6QyDAKrPOiG_q2=rCW^04+}89EEH#)WvskaUHGcbIE#^Et3YG~5sw;?+_LI7tV|*p zVt1ju%hpPF_Js+W!Lq$QKJh*8wGaBy%?xRZW zvp#(PPfmECU;GWOn>Avotfo}28!+G?hEH=A=Rxwm&VcA=I#IMKQMG?^_AaBaR2 zwWNG%M=0Yy;tt(ij2)UHBhLXharM&%E?SFEjZCon=K%P~Il#_db!e{*f;N$Nn(}b{ zsyG-_u?l_C;4=U1IMVy;UgWZHO}at0K%=V2%swqm^9so-)~mWcJ)=-XQZ8f^Z&Bz0I7lcdLun%677&yVUwHX@O__ zS7pT8q0J{_vHIV_{uwh=2m%+%g-6=WASHap6Vv6##K=laM$*A#nJ)%2+H~`Am%!S2 zbnoBvteZdv#=?)M9C2DyRdX6{u9@Z12t_AF17EG7<}eP$#+V0(w)nFgwT2m`#+4#+ zU5Q_OYb5ny(xP9KqtQXc^-4Z#l_)LgjnGQ72Px{LVWWOIHaYv3Pm1o~>b-CJw)y}^ z2R)K%%eg@G-=L1MJJt>?d@btBLw_-+2{`0r`|7k{_R#vBr;po^z9Y}cQNg}Y2QR)? zXRrp$Ugv;Re;=&e_)A_47u7YF*x!DNEJnw%?PqX`lyI=?A!1xo!&Cm)Oq{&=lhpw( z|F*s!j0j(W(1T%--7T^TsN8iEX!`e)t-IZ7FXoSvvag275UvJEJft)UU|#OwNs6oC zwf!gsLG5YspxdreOYtLPX#rL5Ga;ONysX-FRE3c^HvNMw`jY9k_wrh90ASD0p$f1Ms z?SV$|$@MYQ|jh&KJy^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/06member.jpg b/doc/webserver/team/06member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/07member.jpg b/doc/webserver/team/07member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/08member.jpg b/doc/webserver/team/08member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/09member.jpg b/doc/webserver/team/09member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/10member.jpg b/doc/webserver/team/10member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/11member.jpg b/doc/webserver/team/11member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/12member.jpg b/doc/webserver/team/12member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/13member.jpg b/doc/webserver/team/13member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/14member.jpg b/doc/webserver/team/14member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/15member.jpg b/doc/webserver/team/15member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/16member.jpg b/doc/webserver/team/16member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/17member.jpg b/doc/webserver/team/17member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/18member.jpg b/doc/webserver/team/18member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/19member.jpg b/doc/webserver/team/19member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/20member.jpg b/doc/webserver/team/20member.jpg deleted file mode 100644 index 97042aaa9b30fd95c9316e2ab62fe40e71825413..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmex=^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-1h5&{DW=16jCP7AKLB{__7$iVW1v(Z9uye4n0%c4E7#LWXS($m5 zn3$omj7&fQHg*nE^I}1vO=999VI`%LrfuAO@v@<#qH$p2M4&cNG}C}uLH39WqFMqL zzQw@9%m{P~vmk>#!?rW?tzC{@3V3A|G-H*LQb&qQwEy3pn|a?RMg(uYxM|WA|68VJ z8y?A+9Jv*JEKAw`dHxT@MbBo;KAZYc;>7hCXPVvw>VACpFN&GgdZ?s7hRKgJLbw&n_VkHewBTEHS1_v zfS=MgDNdKi)oEwv&%N@W;gE>dr+lMa=PQA?ec~MZxndp`JaX<^vXV=~%gD&cc1cR= zPr=zs5~ohv%qOn2F=J+Z@b~ETnMp_c)@63?xfURV`U%B#Gkt&d#eQ#Bc=p$5_Gg*h?*(NRU=?RP#qjDUyZOs0_h&r4 zUs1%De_3l&1c@e+xx7r~Rt8 vwpZT1UYjfPEPtRwZlLF4_inv{j)I4KTbAm&bGo>=c-=}%|0SkV|NkZc(teRB diff --git a/doc/webserver/team/index.html b/doc/webserver/team/index.html deleted file mode 100644 index fe12d905..00000000 --- a/doc/webserver/team/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - -Privoxy - Team page - - - - - - - diff --git a/doc/webserver/user-manual/appendix.html b/doc/webserver/user-manual/appendix.html index 928e238e..e5356f36 100644 --- a/doc/webserver/user-manual/appendix.html +++ b/doc/webserver/user-manual/appendix.html @@ -702,7 +702,7 @@ CLASS="SECT2" >

9.2. Privoxy
Short cuts. Turn off, then on:

5.1. Controlling Privoxy

5.2. Configuration Files Overview

5.3. The Main Configuration File

5.3.1. Defining Other Configuration Files

5.3.2. Other Configuration Options

5.3.3. Access Control List (ACL)

5.3.5. Windows GUI Options

5.4.1. URL Domain and Path Syntax

5.4.2. Actions

include:

5.4.3. Aliases

5.6. Templates

  • Use the Sourceforge Support Forum to get help:
    +> Use the Sourceforge Support Forum to get help:
       
        

  • Submit bugs only through our Sourceforge Bug Forum:
    +> Submit bugs only through our Sourceforge Bug Forum:
     
        

  • Submit feature requests only through our Sourceforge feature request forum:
    +> Submit feature requests only through our Sourceforge feature request forum:
     
        

  • You can also send feedback on websites that Privoxy has problems with. Please bookmark
    -the following link: 
     Submit missed ads and banners, and incorrectly blocked images, popups, etc:
    +      
    +    
    http://p.p/, and select "Privoxy - Submit Filter Feedback""actions file feedback system". Once you surf to a page with problems, use the
    -bookmark to send us feedback. We will look into the issue as soon as possible.
    +>
       

    This page can also be reached from many of the internal CGI pages. +

  • For any other issues, feel free to use the mailing lists:
    +> For any other issues, feel free to use the mailing lists:
     
        

    Anyone interested in actively participating in development and related discussions can also join the appropriate mailing list. Archives are - available, too. + available too.

  • 7.1. Copyright

    $Id: user-manual.sgml,v 1.75 2002/04/12 02:08:48 david__schmidt Exp $

    $Id: user-manual.sgml,v 1.73 2002/04/10 18:45:15 swa Exp $

    4.1. Command Line Options
    5.1. Controlling Privoxy
    5.2. Configuration Files Overview
    5.3. The Main Configuration File
    5.3.1. Defining Other Configuration Files
    5.3.2. Other Configuration Options
    5.3.3. Access Control List (ACL)
    5.3.5. Windows GUI Options
    5.4.1. URL Domain and Path Syntax
    5.4.2. Actions
    5.4.3. Aliases
    5.6. Templates
    7.1. Copyright
    9.2. PrivoxyPrivoxy into will contain all of the configuration files.

    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 + select() socket call.

    In addition to needing the source code distribution as outlined earlier, + you will want to extract the os2seutp directory from CVS: +
     cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login          
    + cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup
    + 
    + This will create a directory named os2setup/, which will contain the + Makefile.vac makefile and os2build.cmd + which is used to completely create the binary distribution. The sequence + of events for building the executable for yourself goes something like this: +
     cd current
    + autoheader
    + autoconf
    + sh configure
    + cd ..\os2setup
    + nmake -f Makefile.vac
    + 
    + You will see this sequence laid out in os2build.cmd.

    4.1. Command Line Options

    6nx4Guxtph3RP*8Qe|#n#HrHd7%o$$GmoHFmD?PH2Us9iaOqM=WdTB% znRz75T?B;|4{R?=f z^qU3zEChCf7^6nXlG4$!3cqXV?wB>T&g(91X*X|NcWs}a>C*o&E&g@Ug`D&V(4}$+ zecwYoe^oK~p?lkiHVf z9OhzmeIJR~nV#_dAS2`4G4_sd$xlp)k;EiC^bO9PkEq8uFYf{frrtd3(k|^sHp(Ij z7XSakkcCGWqw@uEoz%wY?8|$cm0H23QhKzNE_Ad`2w%co_zAoP9)MR7XAN8d`LZs7 z_rNn81WfB13>Z&vLIcFPf=1zI7&Gsf-MC7kEBff9J|LQ>KgI|S%kp^x@9~{w3F-U1&f|bp%hEpH|8jdom z)^Z3`ot8u35zZ$vh}--vr*eb2I5V8z>74#pOPWv&x|aMMw{HSVT$_BHW7ge3#P{V? zuHCf22@BaahT&&@f8;Vko+ixY)2cVUgZ<0Wc_Gs>se{CAws#=r%fl4xuBcbYYlz zZ+1syY{v)?A#O6laCT?j{C3G*U4EI1NC_r={q_;h48JQCd5`hAd=|wI)OFp!{>JU+ zu)d|eGOkQim{p|hcH2SU!J7h-ak}o(^6sI7^C-qWl~cJwDCV8Y{7GKgPu{tG`WJbb zw$D37w!0K}F5jQzrM*0fdFNIaiWGE6u1r8;1o~aSz`iQkqVLAsh3;PD;!flYt3TO^ zjL933k#i-Yf5MKZ+@&~-$=J-nTpe?Q)}!n8azEM&e>=IBjeIh$aCW`Kj-wBK8H2H2B3rHqXsQD+Ybt-& zRGZpgBMnXMFJZvg-$0ISqYxmpT=(b=Jt(FKd2{;%`@N8*el?N+Ce_Zjoom2nV8(j$YdpI5(Q8`fN#J!ALRm!vr^8$d+=l+ zcNmYskL3os5%^eghgi?$d0daz>2-S_?8(^s^uB!^d|lEd;Ohmqe?(ap58y#Mp6SpI zFB8p*;u_!W@Tn!=U)UA1K)o6f8&>DPkYr%qZ z%Nl`>xHevW2IJ*tzWEHezG3Q6vgNRvxd_l1)xP|2KIqa~akX66Z>NS2(X~G}ZCMeN T6f@W}Dt=K}GegG#{0PIJcWRD4 diff --git a/privoxy-rh.spec b/privoxy-rh.spec index 0433557b..897d6028 100644 --- a/privoxy-rh.spec +++ b/privoxy-rh.spec @@ -1,4 +1,4 @@ -# $Id: privoxy-rh.spec,v 1.24 2002/04/11 10:09:20 oes Exp $ +# $Id: privoxy-rh.spec,v 1.23 2002/04/10 18:14:45 morcego Exp $ # # Written by and Copyright (C) 2001 the SourceForge # Privoxy team. http://www.privoxy.org/ @@ -66,7 +66,7 @@ Privoxy is based on the Internet Junkbuster. %build autoheader autoconf -%configure --disable-dynamic-pcre +%configure make # Docs are in CVS and tarball now. #%%make dok @@ -266,10 +266,6 @@ fi %{_mandir}/man1/%{name}.* %changelog -* Tue Apr 16 2002 Hal Burgiss -+ privoxy-2.9.13-6 -- Add --disable-dynamic-pcre to configure. - * Wed Apr 10 2002 Rodrigo Barbosa + privoxy-2.9.13-5 - Relisting template files on the %%files section @@ -568,9 +564,6 @@ fi additional "-r @" flag. # $Log: privoxy-rh.spec,v $ -# Revision 1.24 2002/04/11 10:09:20 oes -# Version 2.9.14 -# # Revision 1.23 2002/04/10 18:14:45 morcego # - (privoxy-rh.spec only) Relisting template files on the %%files section # - (configure.in, privoxy-rh.spec) Bumped package release to 5 diff --git a/privoxy-suse.spec b/privoxy-suse.spec index 971fedcd..be34baf3 100644 --- a/privoxy-suse.spec +++ b/privoxy-suse.spec @@ -1,4 +1,4 @@ -# $Id: privoxy-suse.spec,v 1.14 2002/04/11 17:57:40 oes Exp $ +# $Id: privoxy-suse.spec,v 1.12 2002/04/09 13:29:43 swa Exp $ # # Written by and Copyright (C) 2001 the SourceForge # Privoxy team. http://www.privoxy.org/ @@ -16,7 +16,7 @@ # 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 +# PARTICULAR PURPOSE. See the GNU General Public # License for more details. # # The GNU General Public License should be included with @@ -27,7 +27,7 @@ # # do not set to %{name} -%define privoxyconf %{_sysconfdir}/privoxy +%define ijbconf %{_sysconfdir}/privoxy Summary: Privoxy - privacy enhancing proxy Vendor: http://www.privoxy.org @@ -35,17 +35,18 @@ Name: privoxy-suse Distribution: defineme Version: 2.9.14 Release: 1 -# Needs makefile change: Source: http://prdownloads.sourceforge.net/ijbswa/privoxy-%{version}-%{status}-src.tar.gz -Source: http://prdownloads.sourceforge.net/ijbswa/privoxy-%{version}.tar.gz +Source: http://www.waldherr.org/%{name}/privoxy-%{version}.tar.gz # not sure if this works BuildRoot: %{_tmppath}/%{name}-%{version}-root Packager: Stefan Waldherr Copyright: GPL Group: Networking/Utilities URL: http://www.privoxy.org/ +Provides: privoxy +Obsoletes: privoxy Autoreqprov: on BuildRequires: perl gzip libtool autoconf -Conflicts: junkbuster-raw junkbuster-blank junkbuster-suse junkbuster privoxy +Conflicts: junkbuster-raw junkbuster-blank junkbuster # # ----------------------------------------------------------------------------- @@ -78,7 +79,7 @@ SuSE series: n %build autoheader autoconf -./configure --disable-dynamic-pcre +./configure make @@ -95,16 +96,16 @@ make mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} \ ${RPM_BUILD_ROOT}%{_mandir}/man8 \ ${RPM_BUILD_ROOT}/var/log/privoxy \ - ${RPM_BUILD_ROOT}%{privoxyconf}/templates \ + ${RPM_BUILD_ROOT}%{ijbconf}/templates \ ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d \ ${RPM_BUILD_ROOT}%{_sysconfdir}/init.d gzip README AUTHORS ChangeLog privoxy.1 LICENSE || /bin/true install -s -m 744 privoxy $RPM_BUILD_ROOT%{_sbindir}/privoxy cp -f privoxy.1.gz $RPM_BUILD_ROOT%{_mandir}/man8/privoxy.8.gz -cp -f *.action $RPM_BUILD_ROOT%{privoxyconf}/ -cp -f default.filter $RPM_BUILD_ROOT%{privoxyconf}/default.filter -cp -f trust $RPM_BUILD_ROOT%{privoxyconf}/trust -cp -f templates/* $RPM_BUILD_ROOT%{privoxyconf}/templates/ +cp -f *.action $RPM_BUILD_ROOT%{ijbconf}/ +cp -f default.filter $RPM_BUILD_ROOT%{ijbconf}/default.filter +cp -f trust $RPM_BUILD_ROOT%{ijbconf}/trust +cp -f templates/* $RPM_BUILD_ROOT%{ijbconf}/templates/ cp -f privoxy.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/privoxy install -m 755 privoxy.init.suse $RPM_BUILD_ROOT%{_sysconfdir}/init.d/privoxy install -m 711 -d $RPM_BUILD_ROOT/var/log/privoxy @@ -121,7 +122,7 @@ cat config | \ # sed 's/^forward.*/forward \/etc\/privoxy\/forward/g' | \ # sed 's/^aclfile.*/aclfile \/etc\/privoxy\/aclfile/g' > \ sed 's/^logdir.*/logdir \/var\/log\/privoxy/g' > \ - $RPM_BUILD_ROOT%{privoxyconf}/config + $RPM_BUILD_ROOT%{ijbconf}/config # # ----------------------------------------------------------------------------- @@ -198,8 +199,8 @@ id privoxy > /dev/null 2>&1 && /usr/sbin/userdel privoxy || /bin/true %doc doc/webserver/p_web.css %doc doc/webserver/index.html #%doc privoxy.weekly privoxy.monthly AUTHORS -%dir %{privoxyconf} -%config %{privoxyconf}/* +%dir %{ijbconf} +%config %{ijbconf}/* %attr(0744,privoxy,privoxy) %dir /var/log/privoxy %config %{_sysconfdir}/logrotate.d/privoxy %attr(0755,root,root)/usr/sbin/privoxy @@ -296,12 +297,6 @@ id privoxy > /dev/null 2>&1 && /usr/sbin/userdel privoxy || /bin/true - new package: version 2.0 # $Log: privoxy-suse.spec,v $ -# Revision 1.14 2002/04/11 17:57:40 oes -# Fixed(?) Conflicts: Provides: Obsoletes: -# -# Revision 1.13 2002/04/11 10:09:20 oes -# Version 2.9.14 -# # Revision 1.12 2002/04/09 13:29:43 swa # build suse and gen-dist with html docs. do not generate docs while building rpm # diff --git a/privoxy.1 b/privoxy.1 index f8eb2248..a9d50664 100644 --- a/privoxy.1 +++ b/privoxy.1 @@ -3,7 +3,7 @@ .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . -.TH "PRIVOXY" "1" "11 April 2002" "Privoxy 2.9.14 beta" "" +.TH "PRIVOXY" "1" "10 April 2002" "Privoxy 2.9.14 beta" "" .SH NAME privoxy \- Privacy Enhancing Proxy .SH SYNOPSIS @@ -29,10 +29,10 @@ 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. .TP \fB--pidfile \fIpidfile\fB\fR -On startup, write the process ID to \fIpidfile\fR. -Delete the \fIpidfile\fR on exit. -Failiure to create or delete the \fIpidfile\fR -is non-fatal. If no \fB--pidfile\fR option is given, no PID file will be used. +After (optionally) writing the PID file, assume the user ID of user +and the GID of group, or, if the optional group was not given, the +default group of user. Exit if the privileges are not sufficient to +do so. .TP \fB--user \fIuser[.group]\fB\fR After (optionally) writing the PID file, assume the user ID of diff --git a/project.h b/project.h index da8548e0..ca8ea3af 100644 --- a/project.h +++ b/project.h @@ -1,6 +1,6 @@ #ifndef PROJECT_H_INCLUDED #define PROJECT_H_INCLUDED -#define PROJECT_H_VERSION "$Id: project.h,v 1.65 2002/04/04 00:36:36 gliptak Exp $" +#define PROJECT_H_VERSION "$Id: project.h,v 1.64 2002/04/03 22:28:03 gliptak Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/project.h,v $ @@ -36,9 +36,6 @@ * * Revisions : * $Log: project.h,v $ - * Revision 1.65 2002/04/04 00:36:36 gliptak - * always use pcre for matching - * * Revision 1.64 2002/04/03 22:28:03 gliptak * Removed references to gnu_regex * @@ -996,7 +993,7 @@ struct configuration_spec int debug; int multi_threaded; - /* Features that can be enabled/disabled through the config file */ + /* Features that can be enabled/disabled throuigh the config file */ unsigned feature_flags; const char *logfile; diff --git a/templates/mod-support-and-service b/templates/mod-support-and-service index c4dda479..720bd2eb 100644 --- a/templates/mod-support-and-service +++ b/templates/mod-support-and-service @@ -5,11 +5,12 @@

    • - use the support forum to get help. + use the support forum or (better) the + mailing lists to get help.
    • submit banners and all problems with the actions file only through the - actions + actions file feedback system.
    • diff --git a/testdrive.status b/testdrive.status index bf538b3f..36275484 100644 --- a/testdrive.status +++ b/testdrive.status @@ -1,22 +1,22 @@ -CHUNK: ASSIGNED TO: RUN1: RUN2: ------------------------------------------------------------------------------ +CHUNK: ASSIGNED TO: RUN1: RUN2: +--------------------------------------------------------------------- testdrive-intl-aa testdrive-intl-ab -testdrive-intl-ac Clifford Caoile +testdrive-intl-ac testdrive-intl-ad -testdrive-intl-ae bokeh +testdrive-intl-ae testdrive-intl-af testdrive-intl-ag testdrive-intl-ah -testdrive-intl-ai swa 1.2 -testdrive-intl-aj swa 1.2 -testdrive-intl-ak swa 1.2 +testdrive-intl-ai swa x +testdrive-intl-aj +testdrive-intl-ak testdrive-unstable -testdrive-us-aa maynard.o@discourse.mentabolism.org 1.2 -testdrive-us-ab Eugene Wood +testdrive-us-aa +testdrive-us-ab testdrive-us-ac -testdrive-us-ad Hal 1.2 -testdrive-us-ae Hal +testdrive-us-ad Hal x +testdrive-us-ae testdrive-us-af testdrive-us-ag testdrive-us-ah -- 2.49.0

    -

    Privoxy - Team page

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -01stefanw.jpg -02jon.jpg -03andreas.jpg -04rodney.jpg
    -05david.jpg -06member.jpg -07member.jpg -08member.jpg
    -09member.jpg -10member.jpg -11member.jpg -12member.jpg
    -13member.jpg -14member.jpg -15member.jpg -16member.jpg
    -17member.jpg -18member.jpg -19member.jpg -20member.jpg
    - -
    -
    Created by IrfanView -