+++ /dev/null
-This file contains details of the changes made to JunkBuster, in
-chronological order. Scroll down to the bottom for the newest
-additions!
-
-
-*****************************************************************************
-* Copied from old README *
-*****************************************************************************
-
-README for the Internet Junkbuster Proxy (TM) Copyright 1997-8 Junkbusters Corp.
-
- Id: README,v 1.1 2001/04/16 21:10:38 rodney Exp
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2 of the License,
- or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-The version of the code with this makefile is Version 2.0.2.
-No CHANGES file is included here; for a history of previous versions see
- http://www.junkbusters.com/ht/en/ijbdist.html#previous
-This version tightens security over 2.0.1; some multi-user sites will need
-to change the listen-address in the configuration file (see previous URL).
-
-For installation on Windows see http://www.junkbusters.com/ht/en/ijbwin.html
-An executable is provided so you don't need nmake or a C compiler.
-
-For UNIX and other systems see the FAQ. If you just want to test it with its
-defaults of simply stopping cookies and private info, all you need to do now
-on most Unix systems is type make, run junkbuster & and configure your browser.
-
-This directory should contain the following files. The .html files are also
-in http://www.junkbusters.com/ht/en/ and http://internet.junkbuster.com
-You are welcome to publish copies of the .html files on your local web server,
-according to the GNU General Public License.
-
-gpl.html GNU General Public Licence
-junkbstr.exe Executable (binary) for Windows 95/NT
-Makefile A very bland Makefile; Most versions of Unix except HP & Suns
- compile without change. Windows requires the changes indicated.
-ijbman.html Manual for the Internet Junkbuster, HTML format
-junkbuster.1 Manual for the Internet Junkbuster, man macro format:
- man ./junkbuster.1 # or nroff -man junkbuster.1 | more
-ijbfaq.html FAQ: Frequently Asked Questions on the Internet Junkbuster
- Includes installation instructions
-junkbstr.ini Sample configuration file with almost all options commented out
-sblock.ini Sample blockfile (which doesn't really block much, see FAQ)
-scookie.ini Sample cookiefile (permits little; you decide who to trust)
-saclfile.ini Sample access control file (block access to everyone)
-sforward.ini Sample forwardfile (does no fowarding, no gateways, so SOCKS)
-strust.ini Sample trustfile (has no trusted sites and blocks nothing)
-conn.c, bind.c, encode.c, loaders.c, parsers.c, ssplit.c Various utilities
-socks4.c Code for SOCKS4 and SOCKS4A gateways
-jcc.c The main program
-jcc.h #included declarations etc
-gnu_regex.c, gnu_regex.h: Regular expression code from the FSF, not us.
-win32.c A few lines of code specific to the Windows version (95 & NT)
-acl.c Access controls (new in version 2.0) - doesn't replace firewalls
-filters.c Strings for the presentation of messages to user
-
-If you find that the Internet Junkbuster improves the quality of your life
-online, we hope you'll visit http://www.junkbusters.com to see how our free
-services can help you bust other kinds of junk out of your life:
-junk mail, spam, telemarketing, and invasions of your private data.
-And please tell your friends about this free product, and help them set it up.
-
-If your company finds this software useful in protecting its confidential
-information and making its people happier and more productive, please consider
-purchasing one of our our commercial support packages:
- http://www.junkbusters.com/ht/en/ijbfaq.html#commercial
-
-We don't advertise, so please tell others in your community about us.
-
-Junkbusters Corp. http://www.junkbusters.com
-
-
-*****************************************************************************
-* Copied from old README.too *
-*****************************************************************************
-
-Id: README.TOO,v 1.1 2001/04/16 21:10:38 rodney Exp
-
-This is the README.TOO file for Stefan's version of the Internet
-Junkbuster (from http://www.waldherr.org/junkbuster/).
-
-
-
-Installation:
--------------
-Install the RPM with the usual command `rpm -Uvh foobar.rpm'. Since we
-run the Junkbuster as user `nobody', cd to a directory where `nobody'
-has read access (in particular NOT /root) and issue (as root)
-
- /etc/rc.d/init.d/junkbuster start
-
-This will be done automagically for you any time you boot your machine.
-
-
-
-Configuration:
---------------
-To let Junkbuster take `care' of the ads, you have to setup your
-browser to use the Junkbuster.
-
- Short instructions for the advanced user:
-
- Configure Netscape to use 127.0.0.1 on port 8118 as
- a proxy server.
-
- Detailed instructions for the beginner:
-
- Remove Internet Explorer and install Netscape. No `real'
- user would ever use MSIE. Though the Junkbuster works
- with IE as well. Read
- http://www.junkbusters.com/ht/en/ijbfaq.html#browser
-
-Check to see if the Junkbuster works correctly by surfing to
-
- http://127.0.0.1/show-proxy-args
-
-or any other place and add the text `/show-proxy-args' to the URL.
-Ok? Then enjoy your ad-free surfing.
-
-
-
-Mailinglists:
--------------
-In case you are interested in the Junkbuster, there are two
-mailinglists (junkbuster-users and junkbuster-announce). Instructions
-on how to subscribe and unsubscribe are at
-
- http://www.waldherr.org/junkbuster/
-
-Bugs:
------
-Please fill out
-
- http://sourceforge.net/bugs/?func=addbug&group_id=11118
-
-Patches:
---------
-Please fill out
-
- http://sourceforge.net/patch/?func=addpatch&group_id=11118
-
-Need Help?
-----------
-Please fill out
-
- http://sourceforge.net/support/?func=addsupport&group_id=11118
-
-
-Comments:
----------
-I would greatly appreciate feedback for this program. Send comments to
-Stefan Waldherr <stefan@waldherr.org> (in either German or English). I
-prefer plain text. If you happen to see an ad which got thru the filter
-PLEASE use the `contribute' form at http://www.waldherr.org/junkbuster/.
-
-Have fun,
-Stefan.
-
-
-*****************************************************************************
-* Copied from old README.win *
-*****************************************************************************
-
-$Id: changes.txt,v 1.1.1.1 2001/05/15 13:59:50 oes Exp $
-
-This is the README.WIN file for the Windows version of the Internet
-Junkbuster (from http://www.waldherr.org/junkbuster/).
-
-Installation:
--------------
-Congrats, since you are reading this file, you have already unzipped
-the archive correctly.
-
-Start the Junkbuster with `junkbstr' (i.e., click on the icon in the
-ijb subdirectory). If you want to start Junkbuster automatically,
-make a link to the program in the `Autostart' folder.
-
-
-
-Configuration:
---------------
-To let Junkbuster take `care' of the ads, you have to setup your
-browser to use the Junkbuster.
-
- Short instructions for the advanced user:
-
- Configure Netscape to use 127.0.0.1 on port 8118 as
- a proxy server.
-
- Detailed instructions for the beginner:
-
- Remove Internet Explorer and install Netscape. No `real'
- user would ever use MSIE. Though the Junkbuster works
- with IE as well. Read
- http://www.junkbusters.com/ht/en/ijbfaq.html#browser
-
-Check to see if the Junkbuster works correctly by surfing to
-
- http://127.0.0.1/show-proxy-args
-
-or any other place and add the text `/show-proxy-args' to the URL.
-Ok? Then enjoy your ad-free surfing.
-
-
-
-Mailinglists:
--------------
-In case you are interested in the Junkbuster, there are two
-mailinglists (junkbuster-users and junkbuster-announce). Instructions
-on how to subscribe and unsubscribe are at
-
- http://www.waldherr.org/junkbuster/
-
-Bugs:
------
-Please fill out
-
- http://sourceforge.net/bugs/?func=addbug&group_id=11118
-
-Patches:
---------
-Please fill out
-
- http://sourceforge.net/patch/?func=addpatch&group_id=11118
-
-Need Help?
-----------
-Please fill out
-
- http://sourceforge.net/support/?func=addsupport&group_id=11118
-
-Comments:
----------
-I would greatly appreciate feedback for this program. Send comments to
-Stefan Waldherr <stefan@waldherr.org> (in either German or English). I
-prefer plain text. If you happen to see an ad which got thru the filter
-PLEASE use the `contribute' form at http://www.waldherr.org/junkbuster/.
-
-Have fun,
-Stefan.
-
-
-*****************************************************************************
-* Copied from old README.re_filter *
-*****************************************************************************
-
-DISCLAIMER:
- This is pre-alpha code. Using it in any other way
- than just reading it is a high risk activity and
- the author disclaims all liability for any damage.
-
- See the GNU General Public License at
- http://www.gnu.org/copyleft/gpl.html for details.
-
-
-Dear alpha-Tester,
-
-Thank you for trying out the experimental re_filter feature of
-Junkbuster. As this is still a very early pre-release version,
-and I'm neither much of an autoconf or make wizard, building
-the patched junkbuster involves some manual work, that is
-described below. Please also see the Request for Thoughts section,
-as the whole point of this pre-release ist to collect ideas for
-improvement and bug reports.
-
-
-INSTALLATION:
-
- - Get and install pcre from
- ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
- Version 3.1 or any later one will do. I recommend 3.4.
- It *should* install on Win32 as well, but I haven't tried
- that. Don't forget to run ldconfig afterwards.
-
- - Now you have two options:
-
- A) Install pcrs as a shared library:
- pcrs.c and pcrs.h are included in the (patched) ijb subdirectory.
- 1.) patch Makefile < Makefile.re_shared.diff
- 2.) gcc -Wall -fPIC -c pcrs.c
- 3.) gcc -shared -Wl,-soname,libpcrs.so.1 -o libpcrs.so.1.0.1 pcrs.o -lc -lpcre
- If this worked OK,
- 4.) copy libpcrs.so.1.0.1 to /usr/local/lib
- 5.) ln -s /usr/local/lib/libpcrs.1.0.1 /usr/local/lib/libpcrs.so
- 6.) ldconfig (Or whatever the equivalent on your platform might be)
- 7.) cp pcrs.h /usr/local/include
-
- OR
-
- B) Incorporate pcrs into the junkbuster (much easier):
- Smile and relax. You're done.
-
- - Edit the provided re_filterfile to suit your needs and place it
- with the rest of junkbusters configfiles.
-
- - Now junkbuster should build with a simple 'make'.
- Note: Setting debug = REF in jcc.c will enable debugging
- for the re_filter.
-
- - Include a line "re_filterfile <wherever>" in your junkbuster
- config file, pointing at the re_filterfile
-
- - (Optional:) Include a line "re_filter_all" in the config
- file. This will set the Policy to filter content from all sites.
- Default is to filter only from sites that you wouldn't send a
- cookie either.
-
- - Fire up junkbuster.
-
-HOW IT WORKS:
-
- Nah, not tonight anymore ;-)
-
-REQUEST FOR THOUGHTS:
-
- - The main decision is whether to filter on-the-fly or to buffer
- up the whole document and then run the filter on it. I've built
- both versions and currently prefer buffering.
-
- The advantage of on-the-fly-filtering is obviously that the
- document begins to display before it's fully loaded. The big
- disadvantage is that with arbitraty content altering in place,
- you don't know the size that the document will have after
- altering when the Content-Length Header is to be sent. Only
- option is to chew it altogether.
-
- Apart from preserving the ability to generate a valid Content-Length
- header (which the patch currently does not yet do), buffering up
- the document has some advantages from the filtering point of view:
-
- - Reliability. Patterns in the document cannot be ripped apart
- and are reliably found. (If you look at the document fragment-wise
- while it's being transmitted, you miss any pattern that spans
- a fragment border) This is especially bad for patterns that do
- serious HTML reformatting, as fragments are typically in the order
- of 1500 bytes each.
-
- - Flexibility: The re_filter gives you the choice whether you want
- to replace only the pattern's first occurance or replace it globally.
- This becomes meningless with fragments. (Solution possible, though.)
-
- As the filter only processes objects of MIME type text/*, which are typically
- rather small compared to binary multimedia (sic) type data, I don't think
- that the disadvantage of delayed display of the first bytes is really grave.
-
- What do you think?
-
- - Is the choice between a radical (filter all) and semi-smart (filter only when
- also crunching cookies) flexible enough? Should I really introduce yet another
- configfile for specifying the domains to filter content from? Would anyone use
- that?
-
- - Should I use pcre as a shared library and work out a nice installation
- automagic, or should the relevant functions be incorporated in re_filter.c?
-
- - Even if yes, do we really want an extension that relies on an external library
- like pcre?
-
- - Any bugs, stupid parts in the code ?
-
- - Cool suggestions for the re_filterfile? (PLEASE!)
-
- - Should character set translation along the lines of Perl's 'tr' operator
- be included?
-
- - Is the whole feature just pathetic?
-
-FEEDBACK:
-
- A whole lot of work has gone into this feature (the pcrs code was also
- just written for this) and I'd really like to know if and how you like
- it. Since I'm more of a perl than C programmer (and after doing so much
- string manipulation in C I'm once again glad abaout that!), I'm sure there
- is much to improve. Please send any suggestions/observations/hellos to
- oes@paradis.rhein.de. I would also be very glad about any assistance for
- a autoconf/make procedure for prcs.
-
-Well, have fun!
---Andreas
-
-
-*****************************************************************************
-* Copied from old README.cygwin *
-*****************************************************************************
-
-Id: README.cygwin,v 1.2 2001/04/29 23:16:29 rodney Exp
-
-
-What I did: I saw too many "personalities" in IJB; so I
-ran the code through a couple of regexp's and then let XEmacs
-reformat the whole shebang! The results is a uniform
-looking code base; aka. as if 1 person created the whole
-project.
-
-Why I did it: (1) it is easier to maintain (2) easier for
-a new person to make changes/additions (3) it *looks* more
-professional (4) IMHO, it is easier to read (this is very
-much a personal preference).
-
-What I propose: A IJB standards list be included in the
-distro and all source/patch checkins be checked for
-compliance. We don't need to be an arse on this point, but
-submitters should make a valiant attempt to support the
-standards.
-
-Note: do not even try to diff my code with another code
-base, you will be overwhelmed. After all, the regexps did a
-good bit of changing and XEmacs reformatter did a great deal
-more.
-
-One more note: these changes include conditional compilation for
-un?x (namely Linux), cygwin (un?x like compile for WIN32), and
-mingw32 (WIN32 like compilation w/o VC++). Right now, all seems
-fully functional except cygwin. The cygwin compile will work,
-but includes code to make it single threaded. I need to debug
-the fork issues, but that will have to come later.
-
-
-Specific changes to expect:
-
-
-1: I've majorly reworked the Makefiles. The existing Makefile was
-too *spaghetti* for me! For one, I eliminated the "-I." from the
-include path (ugly). Use #include "" for local directory files
-and #include <> for path found files (that's basic even to c).
-
-
-2: In accordance with #1, I changed #include "windows.h" to
-#include <windows.h> and #include <gnu_regex.h> to #include
-"gnu_regex.h".
-
-
-3: As part of my standards suggestions (to come later in this
-file), I added a standard comment block to every function. There
-were too many functions with *no* comment and about 20 different
-styles to those that did. This is an example of the block I used:
-/*********************************************************************
- *
- * Function : block_acl
- *
- * Description : Block this request?
- * Decide yes or no based on ACL file.
- *
- * Parameters :
- * 1 : src = Address the browser/user agent is requesting.
- * 2 : dst = The proxy or gateway address this is going to.
- * 3 : csp = Current client state (buffers, headers, etc...)
- *
- * Returns : 0 = FALSE (don't block) and 1 = TRUE (do block)
- *
- *********************************************************************/
-
-
-4: Some files prototyped like this:
- void
- func(param1)
- int param1;
- {
- }
-and other like this:
- void func(int param1)
- {
- }
-I made all look like the second.
-
-
-5: Made:
- if( to be if (
- while( to be while (
- switch( to be switch (
- etc ...
-The former looks too much like a function call.
-
-
-6: Put braces on their own line and aligned under the
-reserved word:
- if () {
- } else {
- }
-to be:
- if ()
- {
- }
- else
- {
- }
-The same for while, do, etc...
-
-
-7: Casted malloc in several places, e.g.:
- p = malloc(n);
-to be:
- p = (char *)malloc(n);
-This eliminates compiler warnings.
-
-
-8: Applied the Perl regexp patch and made it fully conditionally
-compiled (-DPCRS=TRUE).
-
-
-9: It *appears* that if MINGW32 sees a "main" function, it will
-try to link it and start with main (ala console mode). Since I
-need MINGW32 to find WinMain instead, I conditionally changed
-"main" to "_main" (for MINGW32 only!).
-
-
-10: Changed popup.c to be killpopup.c. This was necessary to
-clean up the Makefile. Since there was an ini type file called
-"popup" and "popup.c", make got confused on target names. No
-other ini file has a .c file with the same name, so I hope this
-isn't a big deal. Plus, it fits its config variable
-(kill_all_popups) much better.
-
-
-11: Added:
- /*
- Local Variables:
- tab-width: 3
- end:
- */
-to all .c and .h files. I use 3 character tabs and this will make
-the files display correctly in Emacs editors. This is just my
-default setting. Perhaps I will filter all files via "expand
--t3", so not to pi$$ everyone off. Vi is capable of using 3
-character tabs, as I am sure VC++ would be.
-
-
-12: Several places included regexp code with out "#ifdef REGEX"
-which broke the ability to compile w/o regexp's. I fixed the code
-and can compile w/o regexp (which I don't normally do, but now I
-*can*).
-
-
-13: In WinMain, changed:
- pszLastTok = strchr(pszLastTok, ' ');
-to be:
- pszLastTok = strchr(pszLastTok+1, ' ');
-The former causes an infinite loop with 2 or more parameters.
-
-
-14: Added my own strdup for Cygwin, see jcc.c for why.
-
-
-15: Added defines in the Makefile and this to jcc.h:
- #define VERSION VERSION_MAJOR "." VERSION_MINOR "." VERSION_POINT
-This makes "update the numbers also in jcc.h manually" unnecessary
-(see your Makefile for this quote).
-
-
-16: Split the "inifiles" target in Makefile into separate targets,
-this way each file can be regenerated individually according to
-the same implicit rule.
-
-
-17: With the Makefile restructure, I can only provide for
-Cygwin/gcc. Hopefully this is a bit cleaner and others can add
-their compilers w/o re-spaghetting the file. I have provided
-several makefiles as examples only, I do not intend for the
-project to start maintaining multiple Makefiles. Perhaps some of
-the platform specific Makefile code could be split out into
-separate files and we could use the "include" directive to read in
-the correct one.
-
-Better than this, let's get a configure.in guru on the project and
-dynamically create the Makefiles!
-
-
-18: In an effort to get this to market (you knew this was coming
-eh?), I am going to put the standards suggestions in another file
-and ship this one as is. But then, you can probably guess most of
-the standards by the changes you see.
-
-
-19: Added a really quick and dirty "install" target to the
-Makefile. This needs to be cleaned up and proper directories put
-in for each platform.
-
-
--- release 1 (obsoleted) --
-
-
-20: Incorporated the TOGGLE and webDAV support patches into my
-Cygwin patch. I added conditional compilation to both features.
-I changed "extern BOOL g_bToggleIJB;" to be of type "int". This
-makes jcc.h independent of "windows.h". The inclusion of such
-should not (and is not) necessary for compilation on all
-platforms. Besides, BOOL is really only a char or an int anyway!
-
-
-21: Added a new ini! I modified the usual un?x type config file
-to M$ type ini file for a Perl regexp compile. This was necessary
-to call EditFile on the Perl regexp config file. The new ini
-filename is "sregexp.ini" (naturally). I then added menu items to
-edit the popup.ini and sregexp.ini files.
-
-
-22: I made "dot h" files for all the "dot c" files. I used this
-command to do the *dirty* work:
- grep -e "^[A-z]" *.c | sed -e "/=/d" -e "/^[^(]*$/d" \
- -e "/^extern/d" -e "/^static/d" -e "/;$/d"
-
-And I made each "dot h" file be immune to multiple inclusion via
-conditional compilation. Ie. the "jcc.h" file will only include
-itself if _JCC_H is undefined.
-
-After this was done, I compiled the project source by source and
-let the compiler tell me what each file was dependent on. Once I
-got all the objects to compile, I included the new dependencies in
-the Makefiles.
-
-BTW, I intend to get the Makefile to be generated by a configure
-script. Whether this is a GNU "configure.in" type file or a shell
-script, I do not know. All I do know is that this is a must for a
-"Go/No go" type decision. We cannot proceed with the philosophy
-"leave it up to the user to get it to work".
-
-
-23: I broke out the code to load the config file from main. I put
-this code into a function called load_config. I made this routine
-be called from a signal "HUP". This means we can restart
-junkbusters from the command line or from the daemon script via
-"restart" without actually killing it and restarting it. This is
-common behavior to un?x daemons (see inetd for example). I fixed
-the junkbusters.init script to take advantage of this. I intend
-to make a M$ menu complement to this as soon as I can.
-
-
-24: BTW, if you have not already noticed by my postings and/or
-code, I have added patches and made them all conditionally
-compiled. Ie. #ifdef TOGGLE, #ifdef WEBDAV, #ifdef PCRS, etc...
-I think that all extensions to IJB should be submitted in this
-way. Not only can you compile IJB to be as "tight" as you want,
-it also gives the user a "smorgasbord" of options to
-choose from. This is quite common in the free software world (you
-need look no farther than emacs to see this) and provides maximum
-flexibility.
-
-
-25: As promised, I obsoleted the "ijbw32.ini" file. I was a bit
-confused by the "close-behaviour=1" entry. It seems to me that it
-duplicated the "close-button-minimizes=1" entry. And (by looking
-at the code) it was unused. Anyway, I eliminated the "ijbw32.ini"
-file and assimilated the settings into the config file. Bye Bye
-"ijbw32.ini", hello "config" (aka. don't unnecessarily duplicate
-files and/or data types).
-
-
-26: Eliminated re_filter.c. This only defined
-(un)load_re_filterfile and re_process_buffer. I moved
-(un)load_re_filterfile to loaders.c and re_process_buffer to
-filters.c. I also modified the Makefiles to reflect this. In the
-doing, I modified the loader and unloader to use the "files"
-variable and moved joblist to "re_filterfile_spec" struct. I
-added "plist" to the client_state so that all Perl regexp code
-could find the latest parsing of the re_filterfile ini.
-
-This is in keeping with the IJB data structures philosophies.
-
-
-27: Eliminated acl.c. This (as pcre) only defined
-(un)load_aclfile and block_acl. I moved (un)load_aclfile to
-loaders.c and block_acl to filters.c. I also modified the
-Makefiles to reflect this.
-
-
-28: Since I created "dot h" files for all the "dot c" files, I
-eliminated all the "extern ...variable;" and all the "extern
-...function;" statements that I could find in the "dot c" files.
-Instead, I included the proper "dot h" files to do this for us.
-
-
-29: Corrected the "install" Makefile target for un?x. I will do
-the same for WIN32 targets.
-
-
-30: Note on the "TOGGLE" patch: since I made IJB fully restartable
-via a NOHUP signal; I thought the TOGGLE patch should apply to
-both un?x and WIN32. Thus, I eliminated the WIN32 dependencies in
-that patch and added "toggle" to the config file. Now everything
-works fine for either platform. Still to come is a restart menu
-command in WIN32 (See: note 23).
-
-
-31: Just a possible programmer note, we REALLY need a generic
-linked list module. Since text lists, client states, filter
-files, etc... implement list creation and destruction over and
-over; I suggest a generic list that can handle *any* type of list
-(ala template classes in C++). If this module included an
-iterator (of sorts), we could eliminate the myriad of "for ( top=x;
-NULL != x->next; x=x->next )" type statements that are all over
-IJB.
-
-After all, this was taught in the basic "Intro to Data Types"
-class (for all you CS majors).
-
-
-32: Renamed all of the .INI files to be .TXT files. I did this
-because the .INI files were NOT *really* ini files; which
-potentially be confusing. I used the .TXT extension to make sure
-that EditFile still worked.
-
-
-33: Removed the "initialed comments", such as "/* swa */". This
-leads to less readable code (because it becomes fragmented) and
-retains the "multiple personality" syndrome. Comments such as
-this can always be figured out from the versioning system. Also,
-these comments really should be pooled in one place : the README
-files.
-
-
-34: Perhaps we should break with the current versioning tactic of
-a "tail version" and start fresh. Perhaps a new major version
-release is in order? Version = 3.0.0?
-
-
-35: Added a "Accept-Encoding: gzip" cruncher. If a stream is
-compressed via gzip (Netscape specific I think), then it cannot
-be modified with Perl regexps. So I added this as an option in
-the Makefiles.
-
-
-36: As promised in one of my postings, I have make a
-configure-esk script to generate the Makefiles. I would still
-like to have a full blown configure.in compatible system, but this
-will do in the meantime. Note: this configure script covers
-linux, cygwin, and mingw32. At this point I do not have VC++ to
-test any of my changes. But the configure script should be
-flexible enough to handle this platform.
-
-
---
-
-Please give any feedback to the ijb egroups and, if you feel you
-need quicker contact, CC me at IwantToKeepAnon@yahoo.com
-
-Let me say once more, this has a *lot* of changes and may (aka
-WILL) break a lot of existing patches. But I hope the "idea" will
-catch on. Perhaps this could be made the baseline code base and
-other patches added and standardized later.
-
-*****************************************************************************
-* Date: 7 May 2001 *
-* Version: ?? *
-* Description: Changes for MS Visual C++ *
-* Author: Jon Foster <jon@jon-foster.co.uk> *
-*****************************************************************************
-(Based on Stromlund's version 0.20)
-
-I have made several changes to make this compile under VC++ 97, and add new
-features.
-
-Code changes:
-
-1) If you disable IJB (using the TOGGLE patch) it now turns PCRS off.
-2) "Missing function prototype" warnings have been corrected by adding
- appropriate #include statements
-3) The _DIST_URL define removed and hardcoded. There are hardcoded URLs all
- over the place that need fixing - one more doesn't matter. We do really
- need to come up with a long-term solution though. (Suggestion: Host a
- redirector on the SourceForge web space. e.g
- "http://ijbswa.sourceforge.net/redirect.php?ver=2.0.2-10&target=faq",
- "http://ijbswa.sourceforge.net/redirect.php?ver=2.0.2-10&target=download",
- etc. This allows us to move the pages around easily, and the SourceForge
- space can be maintained by anyone who's interested, it's not tied to a
- particular individual. This is similar to the approach taken by
- Microsoft and Netscape in their browsers.)
-4) New file ijbconfig.h is #included everywhere. This provides me with a
- place to define VERSION, PCRS, etc. You can still define VERSION_xxx
- on the command line, but the other defines are in the header file.
- There were just too many #defines - so many that the VC++ 97 IDE
- broke when I tried to define them on the command line. We probably
- should fix the configure script so that it modifies this file.
-5) Deleted empty file afxres.h - we needed to use the VC++ system header
- file of that name. However, it's easier to just delete it and put
- the relevent #defines in w32res.h.
-6) New #define: NO_PROGRAM_NAME_DISPLAY uses "IJB" as the program name in
- the log file instead of "H:\Documents and Settings\Administrator\My
- Documents\Prog\VC\ijb2\Release\junkbuter.exe" or similar. The reason
- for this should be obvious!
-7) New #define: STATISTICS enables the statistics feature
-8) Statistics is thread-safe, I think. However, loading up the
- statistics page now counts as a blocked request.
-9) New, shorter message if a setting in the config file is recognised
- but unsupported by the current build. It doesn't have "WARNING:" in
- front of it either. We may want to actually take this message out
- and have it just silently ignore these entries.
-10) New feature: #define SPLIT_PROXY_ARGS and the show-proxy-settings
- page will split each file out to a seperate page. This is
- because the files are quite big, and having to do 1 extra click to
- get to them is no problem. This #define also disables the
- suppress_blocklists feature (because I believe the original intent
- of suppress_blocklists was similar?). It also saves memory by
- reading the config files to generate the HTML on the fly, rather
- than storing prepared HTML constantly in memory.
-11) Marked global constants with "const" attribute. This has a
- knock-on effect on pointers in function prototypes, so these have
- also been marked const where needed.
-12) Rewrote encode.c to have tables pre-initialized, so it can be
- marked constant. Also split into 3 distinct functions so that
- the tables (which are realy an implementation detail) are not
- visible outside that file.
-13) Changes to how files are reloaded when you reload the config
- file. Previous method didn't free memory (or if you uncommented
- the free() calls, it was not thread-safe.) It is now handled
- automatically - files are reloaded whenever the filename to
- read changes, or the file's timestamp changes. The code in
- loaders.c which handles this test has been moved to a single
- utility function.
-14) killpopup changes:
- * Only compiled if you #define KILLPOPUPS
- * Call to filter_popups() moved from read_socket() to chat().
- * Writing 1 past end of buffer bug fixed.
- * It was scanning the whole buffer even if only partially filled.
- * Moved load/unload to loaders.c and changed file handling to
- follow standard.
-15) Auto-detect whether we want an image or HTML implemented for
- Microsoft IE. :-)
- There doesn't seem to be a way to tell with the latest build
- of Mozilla. :-(
-16) Image file code conditionally compiled.
-17) Provided option (SPLIT_PROXY_ARGS) to split the show-proxy-args
- page into a main page, and then a page for each config file.
- This option will also save memory by loading the files when
- required for display, rather than saving them in memory when
- they are initially loaded.
-18) Force page loading ("noijb.") patch applied. #define FORCE_LOAD
-
-
-Packaging changes:
-
-1) PCRE 3.4 (less it's test and demo programs) is now included in the
- pcre directory. It will be statically linked with Junkbuster. (On
- win32, DLLs cause a lot of hassle - with a library this small it isn't
- worth it. I don't know if it would be better to dynamically link under
- UNIX?)
-2) junkbustr.dsp and junkbustr.dsw VC++97 project and workspace files are
- included.
-3) win32build/junkbustr.exe Win32 binary is included. It should not require
- any DLLs. It was compiled with all features supported.
-4) All README.xyz files put together in this file.
-5) Unused files (acl.c, pthread.c, ...) deleted.
-6) My block & cookie files used (based on the Waldherr ones).
-
-Known bug: The Adobe Acrobat 4 plug-in fails when I try to view PDF files in
-MSIE. Workaround: disable "web browser integration" in the Adobe Acrobat
-settings.
-
-*****************************************************************************
-* Date: 14 May 2001 (early morning) *
-* Version: Reported as 2.9.0 *
-* Description: Various updates *
-* Author: Jon Foster <jon@jon-foster.co.uk> *
-*****************************************************************************
-
-1) Now use PCRE, not GNU REGEX. I have not yet had chance to check the
- syntax of the block/image/cookie file to ensure that they match what
- is expected - however they seem to work.
-2) Replaced "configure" script with one generated by "autoconf". Also
- use a header "config.h" (was ijbconfig.h in my previous release) for
- the #defines. "config.h" is now generated with "autoheader" from
- "acconfig.h" and "configure.in". (Note that to install you do not
- need autoconf or autoheader - just run "./configure".)
- To see command-line options, run "./configure --help".
- This is my first ever autoconf script, so it has some rough edges
- (how PCRE is handled is the roughest).
-3) Error logging code replaced with new module errlog.c, based on the
- one from JunkBusterMT (but with the threading code removed).
-4) Most of Rodney's 0.21 and 0.21A patches applied. (Marked *). I did not
- apply all of these, since I had already independently done conditional
- popup file, conditional image file, and integration of popup code.
-5*) ACL, Jar and trust files conditionally compiled.
-6*) New source file headers.
-7*) Various cosmetic changes. (But I have not consistently ordered the
- config files - I think that's worthwhile, but it's 1am and I want to
- get this released!)
-8*) RCS tags on .h files.
-9) RCS tags are const char[] rather than const char *. (Saves 4 bytes
- per tag ;-)
-10) VC++ project files renamed to vc_junkbuster.*.
-11) show-proxy-args now shows status of all conditionals, not just REGEX
-12) Various functions moved around. Most notably all the system-specific
- sockets code which was spread between jcc.c, bind.c, and connect.c,
- has been moved to "jbsockets.c". The non-system-specific code from
- connect.c and socks4.c has been movet to "gateway.c". Also, the
- config file loader and the global variables it writes to have been
- moved to "loadcfg.c". (Maybe this should go into loaders.c?)
- And candidate for the "worst filename ever" award is "miscutil.c",
- which contains, well, miscellaneous utility functions like zalloc.
- (Suggestions for a better name for this file are welcome!)
-13) Loaders now use a common function to read a line and skip comments,
- and this function also stores the proxy_args.
-14) Added ./junkbuster --help (Not for Win32 GUI)
-15) Added ./junkbuster --version (Not for Win32 GUI)
-16) Win32 resources are now all marked as "U.S. English", rather than
- being a mix of "U.S. English", "U.K. English" and "Irish English".
-17) Version number changes to 2.9.0
-
-Known bugs:
-- See (1) above about blockfiles.
-- Sending SIGHUP (under Red Hat Linux 7.1) causes a crash. v0.21A hangs
- after a SIGHUP. This needs investigating, but pthreads support will
- almost certainly help here, so it may not be worth investigating
- immediately.
-- Compiling with shared system pcre and pcreposix libraries is supported
- via a switch to configure, but completely untested.
-
-Please note that there are now 2^14 == 16384 combinations of conditional
-defines, and 4 major compilers (VC, Linux, mingw32, cygwin) for a total
-of 65536 different builds. We cannot possibly test all of them! My
-standard build is "everything on", and I've tested that on each compiler,
-along with a few variants. You may uncover new bugs (probably compiler
-errors) if you use an exotic combination of switches.
-
-*****************************************************************************
-* Date: 14 May 2001 *
-* Version: 2.9.1 *
-* Description: Various updates *
-* Author: Andreas S. Oesterhelt <oes@oesterhelt.org> *
-*****************************************************************************
-(From his e-mail:)
-
- - in parsers.c, fixed two #ifdef FORCE to #ifdef FORCE_LOAD
- (BTW: I think FORCE is precise enough, since loading remote
- data is the whole purpose of a proxy..)
- - Set the FORCE_PREFIX (back) to 'IJB-FORCE-LOAD-'. While 'noijb.'
- is more elegant and looks like a hostname in the URL, it doesn't
- make clear to the inexperienced user that the proxy is bypassed. It
- also has a higher name collision risk.
- - Filled in the function header templates for my functions in
- parsers.c (again). They obviously got lost in our current
- patch war ;-)
- - Cut the credit for the §-referrer-option from the config file,
- that Stefan had placed there.
- - Improved the re_filterfile
-
-*****************************************************************************
-* Date: 14 May 2001 *
-* Version: 2.9.2 *
-* Description: FORCE patch (again!) *
-* Author: Andreas S. Oesterhelt <oes@oesterhelt.org> *
-*****************************************************************************
-(These notes written by Jon)
-
-- Andreas applied the latest version of the FORCE patch.
-
-*****************************************************************************
-* Date: 14 May 2001 (late afternoon) *
-* Version: 2.9.3 *
-* Description: Various updates *
-* Author: Jon Foster <jon@jon-foster.co.uk> *
-*****************************************************************************
-
-1) Incorporated updates from current CVS tree, including:
- - Amiga support (completely untested by me - I don't have an Amiga)
- - "tinygif 3" support (redirects blocked images to a specified URL, so
- the browser doesn't have to load and cache many copies of the same
- image).
- - one case where there were both local and global "referrer" variables
- (yuck!) clarified by renaming the local one to "refer".
- - Fixed some places where close() was used instead of close_socket().
- Thanks to Jörg Strohmayer (joergs at users.sourceforge.net) for these.
-2) Temporary hack to get FORCE_LOAD to work with IE. I just lowercased the
- FORCE_LOAD_PREFIX. Needs fixing properly.
-3) Most URLs hardcoded into JunkBuster were changed to go through a script
- e.g. http://ijbswa.sourceforge.net/redirect.php?v=2.9.3&to=faq
- The only other URLs left are the GNU GPL:
- http://www.fsf.org/copyleft/gpl.html
- and the home page:
- http://ijbswa.sourceforge.net/
- ... and various URLs which will be intercepted by JunkBuster anyway.
- TODO: Still need to do something with the URLs in JunkBuster Corp's
- copyright/trademark notice on the bottom of the show-proxy-args page.
-4) PCRE or GNU Regex is now a #define option.
-
-*****************************************************************************
-* End of file *
-*****************************************************************************
-