FilterProxy 0.31: * Fixed Mason warning message. "Use of uninitialized value in anonymous hash ({})" * Fixed client-close case. (Hitting the "stop" button in your browser will cause FilterProxy to close connections and stop downloading any files) * Updated LWP::UserAgent usage for version 5.6 (which does http/1.1, and keeps a keep-alive connection cache) * Fixed fork-bomb when http_proxy points to myself FIXME: check * Fixed authorization for upstream proxies FIXME: check * Only uncompress incoming content option for Compress. FIXME: check * New configure script should install all perl dependencies. * Configuration web page for the ImageComp module FIXME: check FilterProxy 0.30: * Ripped out Parse::ePerl, replaced it with HTML::Mason * Converted all html files to work under HTML::Mason. The module interface has changed. See Skeleton.html for details. * Fixed bug when deleting last user (disable auth if no users) * Fixed Source.pm to properly handle redirects. * Fixed Auth bug with server (when using Source module to view source of FilterProxy config pages) * Workaround for bogus error messages from libwww or perl 5.6 (more likely) with 500 status codes. This bug causes it to always sends a message with "(Timeout)" even when event is not a timeout. * Don't do any filtering on 3XX responses. Some servers erroneously send headers for the target of the redirection, in the redirect. (Makes FilterProxy::Compress fail for instance) * New feature: "Show how this page was filtered", using cgi, request the url: http://localhost:8888/Rewrite.html?showfiltering= where is replaced by some (escaped) URL. See the Rewrite config page for a javascript bookmark that does this. * New matcher: whitespace. As in "add whitespace", will add in whitespace as well as whitespace-like tags

,
,


,  , . * Fix YAHOO_UNNAMED rule bugs * New qualifying predicate: preceeding. Takes a matcher as an argument, and the existing match must preceede the new match or the whole match will fail. (see the YAHOO_TABLE rule for an example) * Fix Rewrite to accept m//x formatted regexes. (You can add whitespace to your regex by putting (?x) at the beginning -- it's the same as m//x -- check man perlre) * Added whitespace formatting to really long rules (ADS). * Fixed Basic Authentication through proxy. * Added XSLT module from Mario Lang * Changed module loading to be less spammy in failure case. * Implemented sending 304 (Not Modified) for non-html content in server. * javascript bookmarks on /index.html FilterProxy 0.29.2: * Fixed problems with Transfer-Encoding. Mozilla 0.9 still doesn't dig Transfer-Encoding. (not sure how this bug crept in...!) * Fixed server handling to use gethostbyname rather than comparing hostnames as a string. (i.e. now loading config pages by a url with numeric ip or non-FQDN will work) * Editing FilterProxy.pl to specify your hostname is no longer necessary. It will be grabbed from the "hostname" command, or be set to "localhost" if the localhostonly option is enabled. * When localhostonly is enabled, FP only binds to localhost (127.0.0.1) and not any other interfaces. You must tell your browser the proxy is on 'localhost' (or '127.0.0.1'). FP is not visible to the outside network. FP must be restarted if this option is changed. (++security with localhostonly) * README and INSTALL updates. * Source.pm module thanks to John Waymouth * Fixed 'inside' behavior to not change the match when successful. Use 'inside tagblock ... add encloser ...' to get the old behavior. * Added Rewrite hints (Rewrite.html) for running Rewrite.pm from command line, and using Source module to get the unfiltered source for a page. * Moved "dump headers to log file" in Header module to global config, rather than site-specific. * BIG RED WARNING message added if you try to remove Header from .*. * Modules are now loaded by looping over them and eval'ing them. If one fails to load, FilterProxy still loads fine. In particular, if dependencies aren't satisfied for one (Compress, ImageComp), then it isn't loaded. * Workaround for Mozilla bug 92915. * Strip HTTP/1.1 headers in outgoing request: Keep-Alive, Proxy-Connection. * New Matcher: 'leader' -- works like 'tag' but searches backwards (use as an argument to 'add') FilterProxy 0.29.1: * Fixed Rewrite bug when using 'attrib' and 'rewrite'. * Fixed Rewrite bug when using 'attrib', and attrib has no value. * Fixed Rewrite bug when using 'inside' predicate. * Minor error message clarification. FilterProxy 0.29: * Fixed Netscape. HTTP handling separated into 3 cases: HTTP/1.1, HTTP/1.0, Netscape keep-alive hack. (big speed up) Note: recent (March) builds of Mozilla only send 1 request per connection (and very recent builds NEVER close the connections -- resulting in hundreds of left-hanging FilterProxy processes. This is a mozilla bug. I'll file a bug as soon as bugzilla comes back up) * Updated BUGS file. * More helpful ERROR messages from Rewrite, check $CONFIG->{timing} before doing timing measurements. (should speed things up) * Removed lots of debug statements for components that work well (DeAnim) (should speed things up) * New, more powerful, more intuitive Rewrite syntax. * New "Conditional Predicates" for Rewrite rules: 'inside' and 'containing' * HTTP protocol fixes (again) * Fixed Rewrite hang (seen with YAHOO rules), fixed yahoo rules. * Rewrite rules now impervious to newlines in spec. * Removed explicit HTTP parameter (with correct HTTP/1.1 implementation, Konqueror works properly) * Can now access config pages when not using proxy. (everyone should be using authentication) * LICENSE removed, comments in it -> README, added GPL disclaimer to top of FilterProxy.pl and modules. FilterProxy 0.28: * Updates to TE/Transfer-Encoding implementation: FilterProxy now sends the TE header if Compress is enabled, properly handle gzip compressed content sent with the Transfer-Encoding header, detect TE from browser and use Transfer-Encoding instead of Content-Encoding if present. * Fix for Compress: no longer writes temporary files since Compress::Zlib now has memGunzip (as of 1.10). Detects Compress::Zlib version and will bomb with error if version is old. * Added support for BASIC Authentication in upstream proxy. (explicit parameter) Upstream proxy auth will also work now if FilterProxy auth is disabled. * Checked rfc2616 compliance WRT 'Connection'/'Proxy-Connection' headers. (again) * Added Via header * HTTP/1.1 clients will no longer close connection early (Mozilla) * Moved all header mangling into Header module (as it should have been from the beginning). FilterProxy WILL NOT FUNCTION IF YOU DISABLE THE HEADER MODULE! * This release BREAKS WITH NETSCAPE. Hold your horses for 0.29 if you will be using FilterProxy and Netscape. FilterProxy 0.27: * Enabled hack that will send HTTP/1.1 responses to Netscape 4.x (even though Netscrape claims to be a HTTP/1.0 client -- it seems to work and is faster) * Fixed problem with fp losing track of its children, SIGCHLD errors, and crasher! YES, Crasher is finally !*%$#($!@@ fixed! No more SEGV! * Fixed adding/deleting/changing nameless Rewrite rules. * Clarification of $order, $req, $res in Skeleton.pm * RPM spec file changes thanks to David MacKenzie * Applied patch from Richard Tibbetts to restrict proxy to only accept connections from localhost. * Ad rule updates (as usual...) * Transfer-Encoding now properly looks for TE: in request (as per 14.39 of RFC 2616) thanks . If anyone knows a browser that can use this, please let me know. FilterProxy 0.26: * Fixed enabling of password authentication via CGI (FilterProxy.html) * Fixed deleting/adding of rules with similar names in Rewrite.pm * 'Hints' added for writing Rewrite rules in Rewrite.html * More header parsing and HTTP/1.0 - HTTP/1.1 confusion fixes. * Debian required package names added to INSTALL. * Rearranged handle_proxy to fix headers-in-page and a few other bugs. * We now send HTTP/1.1 responses to client in chunked encoding. (Fixes Konqueror) Netscape no longer keeps the connection open. (nutscrape uses a hodgepodge of HTTP/1.0 and HTTP/1.1 -- FilterProxy is now am strict WRT HTTP/1.0) Everyone go get Mozilla (http://www.mozilla.org) it's much better than Netscape. Someone tell me if IE works. * explicit HTTP version parameter (fix problems with some proxies). * Fixed crasher (Segfault) bug related to bad values passed to sockaddr_in (maybe) (i think) (maybe not...happened again today...) * Fixed "Read buffer not empty" error (and page-load hangs caused by it) * Compatibility verified with Konqueror, StarOffice. I recommend that all users upgrade their browsers to Mozilla, Konqueror, StarOffice. I'm sick of chasing Netscrape bugs. :( * Added option for Compress module to use Transfer-Encoding instead of Content-Encoding. (fixes ambiguity -- did file originally have compression, as in .tar.gz, or was it compressed by the proxy?) No browser supports this yet, but it's defined in rfc2616 (aka HTTP/1.1). See bug for Mozilla: http://bugzilla.mozilla.org/show_bug.cgi?id=59464 FilterProxy 0.25: * Numerous ad rule updates. * DeAnim module completed. (turn OFF debug to avoid spammy log output) * Fixed Content-Length when content has been modified. * Changed timing messages to only display 5 decimal places. * Added basic proxy authentication. This can be disabled (and is by default) from the main FilterProxy config page. Note that HTTP Basic authentication is NOT secure, and anyone listening on the network between your browser and the proxy can intercept your password. * Rewrote/improved config pages. Now more consistent. FilterProxy 0.24: * Turned Taint on, fixed a few warnings (how to get my module dir into at INC?) monitor log file for taint errors. * Applied patch from Seth Golub (BEGIN blocks) * Applied patch from Vineet Kumar (transparent proxying) * Applied patch from Vladimir N Goncharov (upstream proxies) * Fixed hang bug when ads are inside comments. (addbal at beginning of document with open comment...) * Turned taint off... * changed mime-type for content with no content-type header from application/octet-stream to text/html (should this be configurable, or is it so rare that no one would notice?) * Fixed connection bug for HTTP/1.0 clients. (This is a Netscape bug: see BUGS file) FilterProxy 0.23: * Rewrite: Fixed printing of statistics for last filter. * Rewrite: Fixed some code related to finding tag attribs. (WEBBUGS works again) * Made FilterProxy pass an environment to ePerl parsed .html that is CGI/1.1 compliant * Fixed Rewrite WRT intelligently obeying comments in HTML. (fixes many javascript-mangling errors) * Fixed Rewrite regex matcher when regex matches, but match is empty. * Fixed Rewrite algorithm for grabbing the value of a tag. * Fixed Rewrite tag finder when (successful) match is at beginning of content. * Numerous Rewrite rule updates for new and weird ads. (tripod popups) * Fixed 'Argument "CHLD" isn't numeric in entersub' warning (FINALLY!) * Several speedups on Rewrite (~4x faster now!) FilterProxy 0.22: * Rewrite: Fixed hang on some pages related to -addalt modifier. FilterProxy 0.21: * Fixed subtle bug when server sends back an empty response. * Header now handles headers for server * Orders processed in absolute value order, so order 7 should do the same thing to incoming content as -7 does to outgoing content. * Now preserves User-Agent header -- fixes 'browser detection' on many web pages. (but not all) You can still filter this out with the Header module. * Rewrite: attrib argument to tag finder can take regex now. * Rewrite: lowsrc won't mess up image finders anymore (require whitespce,attrib) * Tracked down many bugs, and found most of them were bugs in Netscrape, (grrr) added them to the BUGS file. * Header updates courtesy of John Conneely * Fixed "400 URL must be absolute" problems. FilterProxy 0.20: * Added different log levels (debug/info/error/timing) to trim log sizes. * Added option to BlockBanner.pm to strip a file on the command line. (for testing) * Rewrite module (moved adfinder.pl code to a module), extensively debugged it. * Added option to Rewrite.pm to strip a file on the command line * Added outgoing content orders (it's now possible to write modules to filter outgoing content -- i.e. form post data) * RPM spec courtesy of John Conneely FilterProxy 0.19: * Some problems with whitespace fixed, was grabbing as ad. * Using /x in BlockBanner regexps because they're so ugly * Problems in filtering order fixed (Header now gets incoming headers too) * Fixed logs to print perl errors/warnings * Header module can now add and remove arbitrary headers. (still needs work) * Moved decompressing gzip encoded responses into Compress module. * Header.html added, with corresponding Config method. FilterProxy 0.18: * -n really does work now (no daemonize) * logs requestor's IP (prelude to proxy-authenticification) * Rudimentary Header module * Modifications to support Header module (munging request as well as response, a module can be called more than once per request) FilterProxy 0.17: * Typos errors and bugs oh my! (fixed) * Child no longer exits for server (config) requests. (this is a hack -- need Header module) * Added -n (no daemonize) option. * Documentation additions. * Setting the environment variable http_proxy will allow you to chain another proxy server. (setenv http_proxy your.other.proxy:1234) * Fixes for small fonts and . (doesn't involve FilterProxy) See: http://mcelrath.org/FilterProxy/nofilter.html * Fixes in retry/timeout stuff. * Debug log now prints timestamp for each entry (as per request). FilterProxy 0.16: * some command line options -k (kill), -f added and documented. * FilterProxy now daemonizes properly * adregexps really are case insensitive now. (oops) * (fix) Proxy-Connection: keep-alive fixes * (fix) config file reload-when change affects all children. FilterProxy 0.15: * Thread support removed. (Perls threads are incomplete, buggy, and it looks like they're just a wrapper for fork -- even in 5.6 they're incomplete) * (fix) Thread check bomb on startup. (again) is consequence of above... FilterProxy 0.14: * Added a slew of known ad servers to default config. * (fix) Filtering/Debug enabled in FilterProxy config bug * (fix) properly ungzip's and filters gzip encoded content. (Via an ugly hack. Why doesn't Compress::Zlib work properly?) * (fix) properly downloads gzip encoded content. * (fix) Properly sends Proxy-Connection headers for 304 responses and filtered content. * BlockBanner now recognizes style ads * BlockBanner now recognizes style ads. * BlockBanner now recognizes style ads. * FilterProxy properly sends 0 length content (where whole file is an ad!) Hopefully new ad finder will prevent whole-file-ads from being downloaded in the first place. * Some problems with whitespace fixed. FilterProxy 0.13: * Rewritten banner stripper now strips (some) javascript ads. * Extensive documentation additions. (damn docs take a long time to write!) FilterProxy 0.12: * Added request timeout -- if proxy doesn't receive a request in 5 minutes, it closes the connection. (Only really makes a difference if your client sends 'Proxy-Connection: keep-alive' headers.) * Added a hack to recognize keep-alive headers (will process multiple CLIENT requests per connection, cannot process multiple outgoing requests per connection due to limitations in LWP::UserAgent) * Rearranged FilterProxy.html, added ability to delete individual modules from a site, add modules to an existing site without typing its regexp. * Extensive speed testing of banner stripping algorithms (to appear Real Soon Now) FilterProxy 0.11: * Fixed problem with thread check bombing (why didn't anyone report this to me?) * Fixed hang in BlockBanner. FilterProxy 0.10: * Converted Compress into a module. * Created html files for Skeleton, Compress FilterProxy 0.09: (Not released) * Added order parameter for modules * Added mime_types parameter for modules * Created example module Skeleton * Made modules announce themselves to FilterProxy via FilterProxy::MODULES FilterProxy 0.08: Idiot Fix * Forgot to include the html forms config files. (duh) FilterProxy 0.07: Initial Release