summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlin Năstac <mrness@gentoo.org>2005-04-22 19:15:12 +0000
committerAlin Năstac <mrness@gentoo.org>2005-04-22 19:15:12 +0000
commited2d2be3dbcac3bde000f4d89f3ae5836cd53b93 (patch)
treeea35ca7703e69b2f955232964f66c73b9338e847 /net-proxy/privoxy
parentAdding pcmcia flag. Closes #90025, Cheers Georgi (diff)
downloadgentoo-2-ed2d2be3dbcac3bde000f4d89f3ae5836cd53b93.tar.gz
gentoo-2-ed2d2be3dbcac3bde000f4d89f3ae5836cd53b93.tar.bz2
gentoo-2-ed2d2be3dbcac3bde000f4d89f3ae5836cd53b93.zip
www-proxy -> net-proxy
(Portage version: 2.0.51.19)
Diffstat (limited to 'net-proxy/privoxy')
-rw-r--r--net-proxy/privoxy/ChangeLog148
-rw-r--r--net-proxy/privoxy/Manifest12
-rw-r--r--net-proxy/privoxy/files/digest-privoxy-3.0.21
-rw-r--r--net-proxy/privoxy/files/digest-privoxy-3.0.31
-rw-r--r--net-proxy/privoxy/files/digest-privoxy-3.0.3-r31
-rw-r--r--net-proxy/privoxy/files/privoxy-zlib.patch508
-rw-r--r--net-proxy/privoxy/files/privoxy.logrotate9
-rw-r--r--net-proxy/privoxy/files/privoxy.rc620
-rw-r--r--net-proxy/privoxy/files/privoxy.rc722
-rw-r--r--net-proxy/privoxy/metadata.xml6
-rw-r--r--net-proxy/privoxy/privoxy-3.0.2.ebuild74
-rw-r--r--net-proxy/privoxy/privoxy-3.0.3-r3.ebuild92
-rw-r--r--net-proxy/privoxy/privoxy-3.0.3.ebuild74
13 files changed, 968 insertions, 0 deletions
diff --git a/net-proxy/privoxy/ChangeLog b/net-proxy/privoxy/ChangeLog
new file mode 100644
index 000000000000..4ed2f8d6ea3a
--- /dev/null
+++ b/net-proxy/privoxy/ChangeLog
@@ -0,0 +1,148 @@
+# ChangeLog for www-proxy/privoxy
+# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/ChangeLog,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+ 22 Apr 2005; Alin Nastac <mrness@gentoo.org> :
+ Rename category & herd www-proxy to net-proxy
+
+ 08 Apr 2005; Michael Hanselmann <hansmi@gentoo.org>
+ privoxy-3.0.3-r3.ebuild:
+ Stable on ppc.
+
+ 08 Apr 2005; Gustavo Zacarias <gustavoz@gentoo.org>
+ privoxy-3.0.3-r3.ebuild:
+ Stable on sparc
+
+ 06 Apr 2005; Alin Nastac <mrness@gentoo.org> privoxy-3.0.3-r3.ebuild:
+ Stable on x86
+
+*privoxy-3.0.3-r3 (27 Feb 2005)
+
+ 27 Feb 2005; Alin Nastac <mrness@gentoo.org> -files/privoxy-3.0.3.2.patch,
+ -privoxy-3.0.3-r1.ebuild, -privoxy-3.0.3-r2.ebuild,
+ +privoxy-3.0.3-r3.ebuild:
+ Remove patch added from #83205. See #83278 for more info.
+
+*privoxy-3.0.3-r2 (27 Feb 2005)
+
+ 27 Feb 2005; Alin Nastac <mrness@gentoo.org> +files/privoxy-3.0.3.2.patch,
+ +files/privoxy-zlib.patch, privoxy-3.0.2.ebuild, privoxy-3.0.3-r1.ebuild,
+ +privoxy-3.0.3-r2.ebuild, privoxy-3.0.3.ebuild:
+ Bump version to 3.0.3-2 (#83205) and add support for zlib decompression
+ (#83278).
+
+*privoxy-3.0.3-r1 (24 Feb 2005)
+
+ 24 Feb 2005; Alin Nastac <mrness@gentoo.org> metadata.xml,
+ -files/privoxy-gentoo.diff, +files/privoxy.logrotate, +files/privoxy.rc7,
+ -privoxy-2.9.14_beta.ebuild, +privoxy-3.0.3-r1.ebuild:
+ Changed herd from web-apps to www-proxy. Added pcre and logrotate support,
+ thanks to Torsten Veller <tove@gentoo.org> (#71557). Removed old version.
+
+ 29 Dec 2004; Ciaran McCreesh <ciaranm@gentoo.org> :
+ Change encoding to UTF-8 for GLEP 31 compliance
+
+ 05 Sep 2004; Sven Wegener <swegener@gentoo.org> :
+ Fixed ChangeLog header.
+
+ 03 Sep 2004; Pieter Van den Abeele <pvdabeel@gentoo.org>
+ privoxy-3.0.2.ebuild:
+ Masked privoxy-3.0.2.ebuild stable for ppc
+
+ 15 Aug 2004; Stuart Herbert <stuart@gentoo.org> privoxy-2.9.14_beta.ebuild,
+ privoxy-3.0.2.ebuild, privoxy-3.0.3.ebuild:
+ Fix pkg_preinst() -> pkg_setup()
+
+*privoxy-3.0.2 (08 Aug 2004)
+
+ 08 Aug 2004; Stuart Herbert <stuart@gentoo.org> +metadata.xml,
+ +files/privoxy-gentoo.diff, +files/privoxy.rc6, +privoxy-2.9.14_beta.ebuild,
+ +privoxy-3.0.2.ebuild, +privoxy-3.0.3.ebuild:
+ Moved from net-www/privoxy to www-proxy/privoxy.
+
+ 27 Jul 2004; Rob Holland <tigger@gentoo.org> privoxy-2.9.14_beta.ebuild,
+ privoxy-3.0.2.ebuild, privoxy-3.0.3.ebuild:
+ Fix user/group addition re #58526
+
+ 11 Jun 2004; Bryan Østergaard <kloeri@gentoo.org> privoxy-3.0.3.ebuild:
+ Stable on alpha.
+
+ 26 Apr 2004; Aron Griffis <agriffis@gentoo.org> privoxy-3.0.2.ebuild,
+ privoxy-3.0.3.ebuild:
+ Add die following econf for bug 48950
+
+ 13 Apr 2004; Danny van Dyk <kugelfang@gentoo.org> privoxy-3.0.3.ebuild:
+ marked ~amd64
+
+ 11 Apr 2004; Jason Wever <weeve@gentoo.org> privoxy-3.0.2.ebuild:
+ Stable on sparc.
+
+ 06 Apr 2004; Joshua Brindle <method@gentoo.org> privoxy-2.9.14_beta.ebuild,
+ privoxy-3.0.2.ebuild, privoxy-3.0.3.ebuild:
+ added selinux policy to rdepend
+
+ 22 Mar 2004; Jason Wever <weeve@gentoo.org> privoxy-3.0.2.ebuild,
+ privoxy-3.0.3.ebuild:
+ Added ~sparc keywords to 3.0.2 and 3.0.3
+
+*privoxy-3.0.3 (16 Feb 2004)
+
+ 16 Feb 2004; Martin Holzer <mholzer@gentoo.org> privoxy-3.0.3.ebuild:
+ Version bumped.
+
+ 03 Feb 2004; Martin Holzer <mholzer@gentoo.org> privoxy-2.9.14_beta.ebuild:
+ fixing .keep issue. closes 39827
+
+ 18 Jan 2004; Martin Holzer <mholzer@gentoo.org> privoxy-3.0.0.ebuild,
+ privoxy-3.0.2.ebuild:
+ adding keepdir for logfile and RESTRICT=nomirror
+
+ 19 Oct 2003; Martin Holzer <mholzer@gentoo.org> privoxy-3.0.2.ebuild:
+ x86 stable.
+
+ 01 Oct 2003; Tavis Ormandy <taviso@gentoo.org> privoxy-3.0.2.ebuild:
+ Stable on alpha
+
+ 11 Jun 2003; Jon Portnoy <avenj@gentoo.org> privoxy-3.0.2.ebuild :
+ Removed textbrowser dependency to fix bug #20265.
+
+ 09 Jun 2003; <msterret@gentoo.org> privoxy-3.0.0.ebuild,
+ privoxy-3.0.2.ebuild:
+ DEPEND on sed >= 4
+
+*privoxy-3.0.2 (29 Apr 2003)
+
+ 29 Apr 2003; Martin Holzer <mholzer@gentoo.org> privoxy-3.0.0.ebuild,
+ privoxy-3.0.2.ebuild, files/privoxy-3.0.0-gentoo.diff:
+ diff now done with sed. Version bumped. Closes #20011.
+
+*privoxy-3.0.0 (14 Dec 2002)
+
+ 16 Apr 2003; Tavis Ormandy <taviso@gentoo.org> privoxy-3.0.0.ebuild:
+ Marking ~alpha.
+
+ 27 Feb 2003; Martin Holzer <mholzer@gentoo.org> privoxy-3.0.0.ebuild :
+ Marked as stable and changed SLOT="2" to prevent broken package.
+ Closes #16462.
+
+ 15 Feb 2003; Mark Guertin <gerk@gentoo.org> privoxy-3.0.0.ebuild :
+ set ~ppc in keywords
+
+ 14 Dec 2002; Seemant Kulleen <seemant@gentoo.org> privoxy-3.0.0.ebuild
+ files/digest-privoxy-3.0.0 files/privoxy-3.0.0-gentoo.diff
+ files/privoxy.rc6 :
+
+ Version bump and fixes from fridtjof@fbunet.de (Fridtjof Busse) in bug
+ #11835
+
+*privoxy-2.9.14_beta (07 Jul 2002)
+
+ 06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
+
+ 29 Aug 2002; Seemant Kulleen <seemant@gentoo.org> privoxy-2.9.14_beta :
+
+ Cleaned up ebuild slightly, and added a virtual/textbrowser dependency,
+ which closes bug #7175 by: fridtjof@fbunet.de Also added a .keep file in
+ /var/log/privoxy
+
+ 07 Jul 2002; Georg Sauthoff <g_sauthoff@web.de> *: Initial Ebuild!
diff --git a/net-proxy/privoxy/Manifest b/net-proxy/privoxy/Manifest
new file mode 100644
index 000000000000..b6dfa1bec2f9
--- /dev/null
+++ b/net-proxy/privoxy/Manifest
@@ -0,0 +1,12 @@
+MD5 623fd4631d3784e06924205a3c72855c privoxy-3.0.2.ebuild 1878
+MD5 0d4c0e667675cc4fd69eba5ee963957f privoxy-3.0.3-r3.ebuild 2333
+MD5 03f61f7eb4a83bf5a165d804b8e982e0 privoxy-3.0.3.ebuild 1888
+MD5 a62a59cd69d9802a895414b8be06cd69 ChangeLog 5208
+MD5 a31f52e5785898edac47ca00310413e2 metadata.xml 291
+MD5 2760360001df367f12d98ee964007363 files/privoxy.logrotate 191
+MD5 56d88e9a6970c67adde3386b83dcb2ae files/digest-privoxy-3.0.3-r3 77
+MD5 84c5590bae09be1d5419c27a1d5b676d files/privoxy.rc6 523
+MD5 ad897a8372898fe35da88ff91c90afe4 files/privoxy.rc7 579
+MD5 498b2ae85af76ed736ac4979e28bfe8a files/digest-privoxy-3.0.2 77
+MD5 56d88e9a6970c67adde3386b83dcb2ae files/digest-privoxy-3.0.3 77
+MD5 199b985be5ba80912fdd3bf5776e697f files/privoxy-zlib.patch 17945
diff --git a/net-proxy/privoxy/files/digest-privoxy-3.0.2 b/net-proxy/privoxy/files/digest-privoxy-3.0.2
new file mode 100644
index 000000000000..2e45d5b22967
--- /dev/null
+++ b/net-proxy/privoxy/files/digest-privoxy-3.0.2
@@ -0,0 +1 @@
+MD5 9a9e25ad4420dac73d57a8efe6be58a0 privoxy-3.0.2-stable-src.tar.gz 1925287
diff --git a/net-proxy/privoxy/files/digest-privoxy-3.0.3 b/net-proxy/privoxy/files/digest-privoxy-3.0.3
new file mode 100644
index 000000000000..8293b5fba301
--- /dev/null
+++ b/net-proxy/privoxy/files/digest-privoxy-3.0.3
@@ -0,0 +1 @@
+MD5 b0710be8af09409bfb03f52523a17010 privoxy-3.0.3-stable-src.tar.gz 1561072
diff --git a/net-proxy/privoxy/files/digest-privoxy-3.0.3-r3 b/net-proxy/privoxy/files/digest-privoxy-3.0.3-r3
new file mode 100644
index 000000000000..8293b5fba301
--- /dev/null
+++ b/net-proxy/privoxy/files/digest-privoxy-3.0.3-r3
@@ -0,0 +1 @@
+MD5 b0710be8af09409bfb03f52523a17010 privoxy-3.0.3-stable-src.tar.gz 1561072
diff --git a/net-proxy/privoxy/files/privoxy-zlib.patch b/net-proxy/privoxy/files/privoxy-zlib.patch
new file mode 100644
index 000000000000..174ce9182b17
--- /dev/null
+++ b/net-proxy/privoxy/files/privoxy-zlib.patch
@@ -0,0 +1,508 @@
+diff -Nru privoxy-3.0.3-stable.orig/actionlist.h privoxy-3.0.3-stable/actionlist.h
+--- privoxy-3.0.3-stable.orig/actionlist.h 2002-09-25 18:25:25.000000000 +0300
++++ privoxy-3.0.3-stable/actionlist.h 2005-02-27 01:01:23.072737744 +0200
+@@ -116,6 +116,7 @@
+ DEFINE_ACTION_STRING ("deanimate-gifs", ACTION_DEANIMATE, ACTION_STRING_DEANIMATE)
+ DEFINE_CGI_PARAM_RADIO ("deanimate-gifs", ACTION_DEANIMATE, ACTION_STRING_DEANIMATE, "first", 0)
+ DEFINE_CGI_PARAM_RADIO ("deanimate-gifs", ACTION_DEANIMATE, ACTION_STRING_DEANIMATE, "last", 1)
++DEFINE_ACTION_BOOL ("decompress-from-server", ACTION_DECOMPRESS_IN)
+ DEFINE_ACTION_BOOL ("downgrade-http-version", ACTION_DOWNGRADE)
+ DEFINE_ACTION_BOOL ("fast-redirects", ACTION_FAST_REDIRECTS)
+ DEFINE_ACTION_MULTI ("filter", ACTION_MULTI_FILTER)
+diff -Nru privoxy-3.0.3-stable.orig/configure.in privoxy-3.0.3-stable/configure.in
+--- privoxy-3.0.3-stable.orig/configure.in 2004-01-30 11:26:03.000000000 +0200
++++ privoxy-3.0.3-stable/configure.in 2005-02-27 00:59:01.813373408 +0200
+@@ -1234,6 +1234,20 @@
+ libpcrs is available],
+ [ if test $enableval = "no"; then have_pcrs=no; fi ])
+
++AC_ARG_ENABLE(zlib,
++[ --enable-zlib Use the zlib library to allow compressing or
++ decompressing data on the fly.],
++[enableval2=$enableval],
++[enableval2=no])
++if test $enableval2 = yes; then
++ AC_CHECK_LIB(z, zlibVersion, , [
++ AC_MSG_ERROR([Unable to find a copy of zlib. The zlib library
++is necessary to enable compresion support. ])
++ ])
++ AC_DEFINE(FEATURE_ZLIB,1,
++ [ Define to 1 to use compression through the zlib library. ])
++fi
++
+
+ # If we have libpcre and either we also have pcreposix or
+ # we don't need pcreposix, then link pcre dynamically; else
+diff -Nru privoxy-3.0.3-stable.orig/default.action.master privoxy-3.0.3-stable/default.action.master
+--- privoxy-3.0.3-stable.orig/default.action.master 2004-01-30 17:28:45.000000000 +0200
++++ privoxy-3.0.3-stable/default.action.master 2005-02-27 00:59:01.815373104 +0200
+@@ -452,7 +452,7 @@
+ -hide-user-agent \
+ -kill-popups \
+ -limit-connect \
+-+prevent-compression \
++-prevent-compression \
+ -send-vanilla-wafer \
+ -send-wafer \
+ +session-cookies-only \
+diff -Nru privoxy-3.0.3-stable.orig/filters.c privoxy-3.0.3-stable/filters.c
+--- privoxy-3.0.3-stable.orig/filters.c 2003-11-11 15:10:31.000000000 +0200
++++ privoxy-3.0.3-stable/filters.c 2005-02-27 01:01:23.073737592 +0200
+@@ -1320,6 +1320,38 @@
+ csp->flags |= CSP_FLAG_MODIFIED;
+ }
+
++#ifdef FEATURE_ZLIB
++ /* If the body has a compressed transfer-encoding, uncompress
++ * it first, adjusting size and iob->eod. Note that
++ * decompression occurs after de-chunking.
++ */
++ if (csp->content_type & CT_GZIP || csp->content_type & CT_DEFLATE)
++ {
++ /* Notice that we at least tried to decompress. */
++ if (JB_ERR_OK != decompress_iob(csp))
++ {
++ /* We failed to decompress the data; there's no point
++ * in continuing since we can't filter. This is
++ * slightly tricky because we need to remember not to
++ * modify the Content-Encoding header later; using
++ * CT_TABOO flag is a kludge for this purpose.
++ */
++ csp->content_type |= CT_TABOO;
++ return(NULL);
++ }
++ log_error(LOG_LEVEL_RE_FILTER, "Decompressing successful");
++
++ /* Decompression gives us a completely new iob, so we
++ * need to update.
++ */
++ size = csp->iob->eod - csp->iob->cur;
++ old_buf = csp->iob->cur;
++
++ csp->flags |= CSP_FLAG_MODIFIED;
++ }
++#endif
++
++
+ /*
+ * For all applying +filter actions, look if a filter by that
+ * name exists and if yes, execute it's pcrs_joblist on the
+diff -Nru privoxy-3.0.3-stable.orig/jcc.c privoxy-3.0.3-stable/jcc.c
+--- privoxy-3.0.3-stable.orig/jcc.c 2003-12-12 14:52:53.000000000 +0200
++++ privoxy-3.0.3-stable/jcc.c 2005-02-27 01:06:08.737310128 +0200
+@@ -659,6 +659,10 @@
+ # include <select.h>
+ # endif
+
++#ifdef FEATURE_ZLIB
++#include <zlib.h>
++#endif
++
+ #endif
+
+ #include "project.h"
+@@ -1605,6 +1609,8 @@
+
+ if ((csp->content_type & CT_TEXT) && /* It's a text / * MIME-Type */
+ !http->ssl && /* We talk plaintext */
++ !(csp->content_type & CT_GZIP) &&
++ !(csp->content_type & CT_DEFLATE) &&
+ block_popups) /* Policy allows */
+ {
+ block_popups_now = 1;
+diff -Nru privoxy-3.0.3-stable.orig/parsers.c privoxy-3.0.3-stable/parsers.c
+--- privoxy-3.0.3-stable.orig/parsers.c 2003-07-11 16:21:25.000000000 +0300
++++ privoxy-3.0.3-stable/parsers.c 2005-02-27 01:01:23.078736832 +0200
+@@ -433,6 +433,10 @@
+ #include <assert.h>
+ #include <string.h>
+
++#ifdef FEATURE_ZLIB
++#include <zlib.h>
++#endif
++
+ #if !defined(_WIN32) && !defined(__OS2__)
+ #include <unistd.h>
+ #endif
+@@ -632,6 +636,281 @@
+ }
+
+
++#ifdef FEATURE_ZLIB
++/*********************************************************************
++ *
++ * Function : decompress_iob
++ *
++ * Description : Decompress buffered page, expanding the
++ * buffer as necessary. csp->iob->cur
++ * should point to the the beginning of the
++ * compressed data block.
++ *
++ * Parameters :
++ * 1 : csp = Current client state (buffers, headers, etc...)
++ *
++ * Returns : JB_ERR_OK on success, JB_ERR_MEMORY if out-of-memory
++ * limit reached, JB_ERR_GENERIC if error decompressing
++ * buffer.
++ *
++ *********************************************************************/
++jb_err decompress_iob(struct client_state *csp)
++{
++ char *buf; /* new, uncompressed buffer */
++ int bufsize = csp->iob->size; /* allocated size of the new buffer */
++ /* Number of bytes at the beginning
++ * of the iob that we should NOT
++ * decompress.
++ */
++ int skip_size = csp->iob->cur - csp->iob->buf;
++ int status; /* return status of the inflate() call */
++ z_stream zstr; /* used by calls to zlib */
++
++ /* This is to protect the parsing of gzipped data, but it should(?)
++ * be valid for deflated data also.
++ */
++ if (bufsize < 10)
++ {
++ log_error (LOG_LEVEL_ERROR, "Buffer too small decompressing iob");
++ return JB_ERR_GENERIC;
++ }
++
++ if (csp->content_type & CT_GZIP)
++ {
++ /* Our task is slightly complicated by the facts that data
++ * compressed by gzip does not include a zlib header, and
++ * that there is no easily accessible interface in zlib to
++ * handle a gzip header. We strip off the gzip header by
++ * hand, and later inform zlib not to expect a header.
++ */
++
++ /* Strip off the gzip header. Please see RFC 1952 for more
++ * explanation of the appropriate fields.
++ */
++ if ((*csp->iob->cur++ != (char)0x1f)
++ || (*csp->iob->cur++ != (char)0x8b)
++ || (*csp->iob->cur++ != Z_DEFLATED))
++ {
++ log_error (LOG_LEVEL_ERROR,
++ "Invalid gzip header when decompressing");
++ return JB_ERR_GENERIC;
++ }
++ else {
++ int flags = *csp->iob->cur++;
++ if (flags & 0xe0)
++ {
++ /* The gzip header has reserved bits set; bail out. */
++ log_error (LOG_LEVEL_ERROR,
++ "Invalid gzip header when decompressing");
++ return JB_ERR_GENERIC;
++ }
++ csp->iob->cur += 6;
++
++ /* Skip extra fields if necessary. */
++ if (flags & 0x04)
++ {
++ /* Skip a given number of bytes, specified as a 16-bit
++ * little-endian value.
++ */
++ csp->iob->cur += *csp->iob->cur++ + (*csp->iob->cur++ << 8);
++ }
++
++ /* Skip the filename if necessary. */
++ if (flags & 0x08)
++ {
++ /* A null-terminated string follows. */
++ while (*csp->iob->cur++);
++ }
++
++ /* Skip the comment if necessary. */
++ if (flags & 0x10)
++ {
++ while (*csp->iob->cur++);
++ }
++
++ /* Skip the CRC if necessary. */
++ if (flags & 0x02)
++ {
++ csp->iob->cur += 2;
++ }
++ }
++ }
++ else if (csp->content_type & CT_DEFLATE)
++ {
++ log_error (LOG_LEVEL_INFO, "Decompressing deflated iob: %d", *csp->iob->cur);
++ /* In theory (that is, according to RFC 1950), deflate-compressed
++ * data should begin with a two-byte zlib header and have an
++ * adler32 checksum at the end. It seems that in practice the
++ * only the raw compressed data is sent. Note that this means that
++ * we are not RFC 1950-compliant here, but the advantage is that
++ * this actually works. :)
++ *
++ * We add a dummy null byte to tell zlib where the data ends,
++ * and later inform it not to expect a header.
++ *
++ * Fortunately, add_to_iob() has thoughtfully null-terminated
++ * the buffer; we can just increment the end pointer to include
++ * the dummy byte.
++ */
++ csp->iob->eod++;
++ }
++ else
++ {
++ log_error (LOG_LEVEL_ERROR,
++ "Unable to determine compression format for decompression");
++ return JB_ERR_GENERIC;
++ }
++
++ /* Set up the fields required by zlib. */
++ zstr.next_in = csp->iob->cur;
++ zstr.avail_in = csp->iob->eod - csp->iob->cur;
++ zstr.zalloc = Z_NULL;
++ zstr.zfree = Z_NULL;
++ zstr.opaque = Z_NULL;
++
++ /* Passing -MAX_WBITS to inflateInit2 tells the library
++ * that there is no zlib header.
++ */
++ if (inflateInit2 (&zstr, -MAX_WBITS) != Z_OK)
++ {
++ log_error (LOG_LEVEL_ERROR,
++ "Error initializing decompression");
++ return JB_ERR_GENERIC;
++ }
++
++ /* Next, we allocate new storage for the inflated data.
++ * We don't modify the existing iob yet, so in case there
++ * is error in decompression we can recover gracefully.
++ */
++ buf = zalloc (bufsize);
++ if (NULL == buf)
++ {
++ log_error (LOG_LEVEL_ERROR,
++ "Out of memory decompressing iob");
++ return JB_ERR_MEMORY;
++ }
++
++ assert(bufsize >= skip_size);
++ memcpy(buf, csp->iob->buf, skip_size);
++ zstr.avail_out = bufsize - skip_size;
++ zstr.next_out = buf + skip_size;
++
++ /* Try to decompress the whole stream in one shot. */
++ while (Z_BUF_ERROR == (status = inflate(&zstr, Z_FINISH)))
++ {
++ /* We need to allocate more memory for the output buffer. */
++
++ char *tmpbuf; /* used for realloc'ing the buffer */
++ int oldbufsize = bufsize; /* keep track of the old bufsize */
++
++ /* If zlib wants more data then there's a problem, because
++ * the complete compressed file should have been buffered.
++ */
++ if (0 == zstr.avail_in)
++ {
++ log_error(LOG_LEVEL_ERROR,
++ "Unexpected end of compressed iob");
++ return JB_ERR_GENERIC;
++ }
++
++ /* If we tried the limit and still didn't have enough
++ * memory, just give up.
++ */
++ if (bufsize == csp->config->buffer_limit)
++ {
++ log_error(LOG_LEVEL_ERROR, "Out of memory decompressing iob");
++ return JB_ERR_MEMORY;
++ }
++
++ /* Try doubling the buffer size each time. */
++ bufsize *= 2;
++
++ /* Don't exceed the buffer limit. */
++ if (bufsize > csp->config->buffer_limit)
++ {
++ bufsize = csp->config->buffer_limit;
++ }
++
++ /* Try to allocate the new buffer. */
++ tmpbuf = realloc(buf, bufsize);
++ if (NULL == tmpbuf)
++ {
++ log_error(LOG_LEVEL_ERROR, "Out of memory decompressing iob");
++ freez(buf);
++ return JB_ERR_MEMORY;
++ }
++ else
++ {
++ char *oldnext_out = zstr.next_out;
++
++ /* Update the fields for inflate() to use the new
++ * buffer, which may be in a different location from
++ * the old one.
++ */
++ zstr.avail_out += bufsize - oldbufsize;
++ zstr.next_out = tmpbuf + bufsize - zstr.avail_out;
++
++ /* Compare with an uglier method of calculating these values
++ * that doesn't require the extra oldbufsize variable.
++ */
++ assert(zstr.avail_out ==
++ tmpbuf + bufsize - (char *)zstr.next_out);
++ assert((char *)zstr.next_out ==
++ tmpbuf + ((char *)oldnext_out - buf));
++ assert(zstr.avail_out > 0);
++
++ buf = tmpbuf;
++ }
++ }
++
++ inflateEnd(&zstr);
++ if (status != Z_STREAM_END)
++ {
++ /* We failed to decompress the stream. */
++ log_error(LOG_LEVEL_ERROR,
++ "Error in decompressing to the buffer (iob): %s",
++ zstr.msg);
++ return JB_ERR_GENERIC;
++ }
++
++ /* Finally, we can actually update the iob, since the
++ * decompression was successful. First, free the old
++ * buffer.
++ */
++ freez(csp->iob->buf);
++
++ /* Now, update the iob to use the new buffer. */
++ csp->iob->buf = buf;
++ csp->iob->cur = csp->iob->buf + skip_size;
++ csp->iob->eod = zstr.next_out;
++ csp->iob->size = bufsize;
++
++ /* Make sure the new uncompressed iob obeys some minimal
++ * consistency conditions.
++ */
++ if ((csp->iob->buf < csp->iob->cur)
++ && (csp->iob->cur <= csp->iob->eod)
++ && (csp->iob->eod <= csp->iob->buf + csp->iob->size))
++ {
++ char t = csp->iob->cur[100];
++ csp->iob->cur[100] = 0;
++ log_error(LOG_LEVEL_INFO,
++ "Sucessfully decompressed: %s", csp->iob->cur);
++ csp->iob->cur[100] = t;
++ return JB_ERR_OK;
++ }
++ else
++ {
++ /* It seems that zlib did something weird. */
++ log_error(LOG_LEVEL_ERROR,
++ "Unexpected error decompressing the buffer (iob): %d==%d, %d>%d, %d<%d", csp->iob->cur, csp->iob->buf + skip_size, csp->iob->eod, csp->iob->buf, csp->iob->eod, csp->iob->buf + csp->iob->size);
++ return JB_ERR_GENERIC;
++ }
++
++}
++#endif /* defined(FEATURE_ZLIB) */
++
++
+ /*********************************************************************
+ *
+ * Function : get_header
+@@ -937,13 +1216,59 @@
+ *********************************************************************/
+ jb_err server_content_encoding(struct client_state *csp, char **header)
+ {
++#ifdef FEATURE_ZLIB
++ if (strstr(*header, "gzip"))
++ {
++ /*
++ * If the body was modified, we have tried to
++ * decompress it, so adjust the header if necessary.
++ */
++ if ((csp->flags & CSP_FLAG_MODIFIED) /* we attempted to decompress */
++ && !(csp->content_type & CT_TABOO)) /* decompression was successful */
++ {
++ freez(*header);
++ *header = strdup("Content-Encoding: identity");
++ return (header == NULL) ? JB_ERR_MEMORY : JB_ERR_OK;
++ }
++ else
++ {
++ csp->content_type |= CT_GZIP;
++ }
++ }
++ else if (strstr(*header, "deflate"))
++ {
++ /*
++ * If the body was modified, we have tried to
++ * decompress it, so adjust the header if necessary.
++ */
++ if ((csp->flags & CSP_FLAG_MODIFIED) /* we attempted to decompress */
++ && !(csp->content_type & CT_TABOO)) /* decompression was successful */
++ {
++ freez(*header);
++ *header = strdup("Content-Encoding: identity");
++ return (header == NULL) ? JB_ERR_MEMORY : JB_ERR_OK;
++ }
++ else
++ {
++ csp->content_type |= CT_DEFLATE;
++ }
++ }
++ else if (strstr(*header, "compress"))
++ {
++ /* We can't decompress this; therefore we can't filter
++ * it either.
++ */
++ csp->content_type |= CT_TABOO;
++ }
++#else /* !defined(FEATURE_GZIP) */
+ /*
+ * Turn off pcrs and gif filtering if body compressed
+ */
+ if (strstr(*header, "gzip") || strstr(*header, "compress") || strstr(*header, "deflate"))
+ {
+- csp->content_type = CT_TABOO;
++ csp->content_type |= CT_TABOO;
+ }
++#endif /* !defined(FEATURE_GZIP) */
+
+ return JB_ERR_OK;
+
+diff -Nru privoxy-3.0.3-stable.orig/parsers.h privoxy-3.0.3-stable/parsers.h
+--- privoxy-3.0.3-stable.orig/parsers.h 2002-09-25 17:52:46.000000000 +0300
++++ privoxy-3.0.3-stable/parsers.h 2005-02-27 01:01:23.079736680 +0200
+@@ -194,6 +194,7 @@
+
+ extern int flush_socket(jb_socket fd, struct client_state *csp);
+ extern jb_err add_to_iob(struct client_state *csp, char *buf, int n);
++extern jb_err decompress_iob(struct client_state *csp);
+ extern char *get_header(struct client_state *csp);
+ extern char *get_header_value(const struct list *header_list, const char *header_name);
+ extern char *sed(const struct parsers pats[], const add_header_func_ptr more_headers[], struct client_state *csp);
+diff -Nru privoxy-3.0.3-stable.orig/project.h privoxy-3.0.3-stable/project.h
+--- privoxy-3.0.3-stable.orig/project.h 2004-01-30 17:29:29.000000000 +0200
++++ privoxy-3.0.3-stable/project.h 2005-02-27 01:01:23.081736376 +0200
+@@ -818,6 +818,15 @@
+ #define CT_TABOO 4 /**< csp->content_type bitmask:
+ DO NOT filter, irrespective of other flags. */
+
++/* Although these are not, strictly speaking, content types
++ * (they are content encodings), it is simple to handle
++ * them as such.
++ */
++#define CT_GZIP 8 /**< csp->content_type bitmask:
++ gzip-compressed data. */
++#define CT_DEFLATE 16 /**< csp->content_type bitmask:
++ zlib-compressed data. */
++
+ /**
+ * The mask which includes all actions.
+ */
+@@ -862,6 +871,8 @@
+ #define ACTION_VANILLA_WAFER 0x00008000UL
+ /** Action bitmap: Limit CONNECT requests to safe ports. */
+ #define ACTION_LIMIT_CONNECT 0x00010000UL
++/** Action bitmap: Uncompress incoming text for filtering. */
++#define ACTION_DECOMPRESS_IN 0x00020000UL
+
+ /** Action string index: How to deanimate GIFs */
+ #define ACTION_STRING_DEANIMATE 0
diff --git a/net-proxy/privoxy/files/privoxy.logrotate b/net-proxy/privoxy/files/privoxy.logrotate
new file mode 100644
index 000000000000..f5d6b2b91703
--- /dev/null
+++ b/net-proxy/privoxy/files/privoxy.logrotate
@@ -0,0 +1,9 @@
+/var/log/privoxy/privoxy.log /var/log/privoxy/jarfile {
+ missingok
+ notifempty
+ create 0750 privoxy privoxy
+ sharedscripts
+ postrotate
+ killall -HUP privoxy 2>/dev/null || true
+ endscript
+}
diff --git a/net-proxy/privoxy/files/privoxy.rc6 b/net-proxy/privoxy/files/privoxy.rc6
new file mode 100644
index 000000000000..50650d4b8edf
--- /dev/null
+++ b/net-proxy/privoxy/files/privoxy.rc6
@@ -0,0 +1,20 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/files/privoxy.rc6,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting privoxy"
+ start-stop-daemon --start --quiet --exec /usr/sbin/privoxy -- /etc/privoxy/config --user privoxy.privoxy &
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping privoxy"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/privoxy
+ eend $?
+}
diff --git a/net-proxy/privoxy/files/privoxy.rc7 b/net-proxy/privoxy/files/privoxy.rc7
new file mode 100644
index 000000000000..b06d990b273d
--- /dev/null
+++ b/net-proxy/privoxy/files/privoxy.rc7
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/files/privoxy.rc7,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting privoxy"
+ start-stop-daemon --start --quiet --exec /usr/sbin/privoxy -- \
+ --pidfile /var/run/privoxy.pid \
+ --user privoxy.privoxy /etc/privoxy/config 2>/dev/null
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping privoxy"
+ start-stop-daemon --stop --quiet --pidfile /var/run/privoxy.pid
+ eend $?
+}
diff --git a/net-proxy/privoxy/metadata.xml b/net-proxy/privoxy/metadata.xml
new file mode 100644
index 000000000000..f1810cf5c4a6
--- /dev/null
+++ b/net-proxy/privoxy/metadata.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>net-proxy</herd>
+<longdescription>A web proxy with advanced filtering capabilities for protecting privacy against internet junk</longdescription>
+</pkgmetadata>
diff --git a/net-proxy/privoxy/privoxy-3.0.2.ebuild b/net-proxy/privoxy/privoxy-3.0.2.ebuild
new file mode 100644
index 000000000000..3dbb5ff0952b
--- /dev/null
+++ b/net-proxy/privoxy/privoxy-3.0.2.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/privoxy-3.0.2.ebuild,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+inherit eutils
+
+S="${WORKDIR}/${P}-stable"
+HOMEPAGE="http://www.privoxy.org"
+DESCRIPTION="A web proxy with advanced filtering capabilities for protecting privacy against internet junk."
+SRC_URI="mirror://sourceforge/ijbswa/${P}-stable-src.tar.gz"
+RESTRICT="nomirror"
+
+IUSE="selinux"
+SLOT="0"
+KEYWORDS="x86 ppc alpha sparc"
+LICENSE="GPL-2"
+
+DEPEND=">=sys-apps/sed-4"
+RDEPEND="selinux? ( sec-policy/selinux-privoxy )"
+
+pkg_setup() {
+ enewgroup privoxy
+ enewuser privoxy -1 /bin/false /etc/privoxy privoxy
+}
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ sed -i 's:confdir .:confdir /etc/privoxy:' config
+ sed -i 's:logdir .:logdir /var/log/privoxy:' config
+ sed -i 's:logfile logfile:logfile privoxy.log:' config
+ sed -i 's:set-image-blocker{pattern}:set-image-blocker{blank}:' default.action.master
+
+ autoheader || die "autoheader failed"
+ autoconf || die "autoconf failed"
+}
+
+src_compile() {
+ econf \
+ --sysconfdir=/etc/privoxy || die "econf failed"
+
+ emake || die "make failed."
+}
+
+src_install () {
+ diropts -m 0750 -g privoxy -o privoxy
+ dodir /var/log/privoxy
+ keepdir /var/log/privoxy
+ dodir /etc/privoxy /etc/privoxy/templates
+
+ insopts -m 0640 -g privoxy -o privoxy
+ insinto /etc/privoxy
+ doins default.action default.filter config standard.action trust user.action
+
+ insinto /etc/privoxy/templates
+ doins templates/*
+
+ doman privoxy.1
+
+ dodoc LICENSE README AUTHORS doc/text/faq.txt ChangeLog
+
+ insopts
+ for i in developer-manual faq man-page user-manual
+ do
+ insinto /usr/share/doc/${PF}/$i
+ doins doc/webserver/$i/*
+ done
+
+ insopts -m 0750 -g root -o root
+ insinto /usr/sbin
+ doins privoxy
+ insinto /etc/init.d
+ newins ${FILESDIR}/privoxy.rc6 privoxy
+}
diff --git a/net-proxy/privoxy/privoxy-3.0.3-r3.ebuild b/net-proxy/privoxy/privoxy-3.0.3-r3.ebuild
new file mode 100644
index 000000000000..cf538a1aa0f6
--- /dev/null
+++ b/net-proxy/privoxy/privoxy-3.0.3-r3.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/privoxy-3.0.3-r3.ebuild,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+inherit toolchain-funcs eutils
+
+HOMEPAGE="http://www.privoxy.org"
+DESCRIPTION="A web proxy with advanced filtering capabilities for protecting privacy against internet junk."
+SRC_URI="mirror://sourceforge/ijbswa/${P}-stable-src.tar.gz"
+
+IUSE="pcre selinux"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ppc sparc x86"
+LICENSE="GPL-2"
+
+DEPEND=">=sys-apps/sed-4
+ =sys-devel/autoconf-2.1*
+ virtual/libc
+ pcre? ( dev-libs/libpcre )"
+
+RDEPEND="virtual/libc
+ selinux? ( sec-policy/selinux-privoxy )
+ pcre? ( dev-libs/libpcre )"
+
+S="${WORKDIR}/${P}-stable"
+
+pkg_setup() {
+ enewgroup privoxy
+ enewuser privoxy -1 /bin/false /etc/privoxy privoxy
+}
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ # add gzip and zlib decompression
+ epatch ${FILESDIR}/privoxy-zlib.patch
+
+ rm ${S}/autom4te.cache/{output.0,requests,traces.0}
+
+ sed -e 's:confdir .:confdir /etc/privoxy:' \
+ -e 's:logdir .:logdir /var/log/privoxy:' \
+ -e 's:logfile logfile:logfile privoxy.log:' \
+ -i ${S}/config || die "sed failed."
+ sed -e 's:^\+set-image-blocker{pattern}:+set-image-blocker{blank}:' \
+ -i ${S}/default.action.master || die "sed 2 failed."
+}
+
+src_compile() {
+ export WANT_AUTOCONF=2.1
+ autoheader || die "autoheader failed"
+ autoconf || die "autoconf failed"
+
+ export CC=$(tc-getCC)
+ econf \
+ $(use_enable pcre dynamic-pcre) \
+ --sysconfdir=/etc/privoxy || die "econf failed"
+
+ emake || die "make failed."
+}
+
+src_install () {
+ diropts -m 0750 -g privoxy -o privoxy
+ insopts -m 0640 -g privoxy -o privoxy
+
+ keepdir /var/log/privoxy
+
+ insinto /etc/privoxy
+ doins default.action default.filter config standard.action trust user.action
+
+ insinto /etc/privoxy/templates
+ doins templates/*
+
+ doman privoxy.1
+ dodoc LICENSE README AUTHORS doc/text/faq.txt ChangeLog
+
+ insopts -m 0644 -g root -o root
+ diropts -m 0755 -g root -o root
+ for i in developer-manual faq man-page user-manual
+ do
+ insinto /usr/share/doc/${PF}/$i
+ doins doc/webserver/$i/*
+ done
+
+ insopts -m 0750 -g root -o root
+ insinto /usr/sbin
+ doins privoxy
+ newinitd ${FILESDIR}/privoxy.rc7 privoxy
+ insopts -m 0640
+ insinto /etc/logrotate.d
+ newins ${FILESDIR}/privoxy.logrotate privoxy
+}
diff --git a/net-proxy/privoxy/privoxy-3.0.3.ebuild b/net-proxy/privoxy/privoxy-3.0.3.ebuild
new file mode 100644
index 000000000000..69f748c9b244
--- /dev/null
+++ b/net-proxy/privoxy/privoxy-3.0.3.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-proxy/privoxy/privoxy-3.0.3.ebuild,v 1.1 2005/04/22 19:15:11 mrness Exp $
+
+inherit eutils
+
+S="${WORKDIR}/${P}-stable"
+HOMEPAGE="http://www.privoxy.org"
+DESCRIPTION="A web proxy with advanced filtering capabilities for protecting privacy against internet junk."
+SRC_URI="mirror://sourceforge/ijbswa/${P}-stable-src.tar.gz"
+RESTRICT="nomirror"
+
+IUSE="selinux"
+SLOT="0"
+KEYWORDS="~x86 ~ppc alpha ~sparc ~amd64"
+LICENSE="GPL-2"
+
+DEPEND=">=sys-apps/sed-4"
+RDEPEND="selinux? ( sec-policy/selinux-privoxy )"
+
+pkg_setup() {
+ enewgroup privoxy
+ enewuser privoxy -1 /bin/false /etc/privoxy privoxy
+}
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ sed -i 's:confdir .:confdir /etc/privoxy:' config
+ sed -i 's:logdir .:logdir /var/log/privoxy:' config
+ sed -i 's:logfile logfile:logfile privoxy.log:' config
+ sed -i 's:set-image-blocker{pattern}:set-image-blocker{blank}:' default.action.master
+
+ autoheader || die "autoheader failed"
+ autoconf || die "autoconf failed"
+}
+
+src_compile() {
+ econf \
+ --sysconfdir=/etc/privoxy || die "econf failed"
+
+ emake || die "make failed."
+}
+
+src_install () {
+ diropts -m 0750 -g privoxy -o privoxy
+ dodir /var/log/privoxy
+ keepdir /var/log/privoxy
+ dodir /etc/privoxy /etc/privoxy/templates
+
+ insopts -m 0640 -g privoxy -o privoxy
+ insinto /etc/privoxy
+ doins default.action default.filter config standard.action trust user.action
+
+ insinto /etc/privoxy/templates
+ doins templates/*
+
+ doman privoxy.1
+
+ dodoc LICENSE README AUTHORS doc/text/faq.txt ChangeLog
+
+ insopts
+ for i in developer-manual faq man-page user-manual
+ do
+ insinto /usr/share/doc/${PF}/$i
+ doins doc/webserver/$i/*
+ done
+
+ insopts -m 0750 -g root -o root
+ insinto /usr/sbin
+ doins privoxy
+ insinto /etc/init.d
+ newins ${FILESDIR}/privoxy.rc6 privoxy
+}