From: oes
Date: Tue, 15 May 2001 13:59:57 +0000 (+0000)
Subject: *** empty log message ***
X-Git-Tag: v_2_9_3
X-Git-Url: http://www.privoxy.org/gitweb/@default-cgi@/faq/%22https:/@url@?a=commitdiff_plain;h=c75584ebcc79f939fb4ec9c8f842cef6692640c7;p=privoxy.git
*** empty log message ***
---
diff --git a/Junkbuster Status.URL b/Junkbuster Status.URL
new file mode 100644
index 00000000..6c95de6d
Binary files /dev/null and b/Junkbuster Status.URL differ
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 00000000..8c670b88
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,281 @@
+# Note: Makefile is built automatically from Makefile.in
+#
+# $Id: Makefile.in,v 1.2 2001/05/13 22:04:51 administrator Exp $
+#
+# Written by and Copyright (C) 2001 the SourceForge
+# IJBSWA team. http://ijbswa.sourceforge.net
+#
+# Based on the Internet Junkbuster originally written
+# by and Copyright (C) 1997 Anonymous Coders and
+# Junkbusters Corporation. http://www.junkbusters.com
+#
+# This program is free software; you can redistribute it
+# and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public
+# License for more details.
+#
+# The GNU General Public License should be included with
+# this file. If not, you can view it at
+# http://www.gnu.org/copyleft/gpl.html
+# or write to the Free Software Foundation, Inc., 59
+# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# $Log: Makefile.in,v $
+#
+
+
+# define version (will be wired into the rpm.)
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MINOR = @VERSION_MINOR@
+VERSION_POINT = @VERSION_POINT@
+VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_POINT)
+RPM_VERSION = $(VERSION)
+
+# The version is currently specified in config.h, which is
+# written by "configure".
+#
+#VERSION_CFLAGS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
+# -DVERSION_MINOR=$(VERSION_MINOR) \
+# -DVERSION_POINT=$(VERSION_POINT) \
+# -DVERSION="$(VERSION)"
+
+# Directories for "make install"
+DEST = /etc/junkbuster
+SBIN_DEST = @sbindir@
+MAN_DEST = @mandir@
+
+# The flag "-mno-win32" can be used by Cygwin to emulate a un?x type install.
+# The flag "-mwindows -mno-cygwin" will cause Cygwin to use MingW32 for Win32 install.
+CYGWIN_FLAGS = @CYGWIN_FLAGS@
+
+# Need to define this in order to link PCRE statically under Win32
+# Also define under UNIX to use system PCRE headers.
+PCRE_WIN_FLAGS = @STATIC_PCRE_ONLY@-DSTATIC
+
+# Either/Or of these next two lines
+#DEBUG_CFLAGS = -g
+DEBUG_CFLAGS = -O3
+
+# Solaris needs a special define:
+# FIXME: This is always commented out
+SOLARIS_FLAGS = @SOLARIS_ONLY@-D__EXTENSIONS__=1
+
+# -DSTDC_HEADERS Now in config.h
+# Do we need -DHAVE_STRING ???
+CFLAGS = @CFLAGS@ @CPPFLAGS@ \
+ -D__MT__=1 -D__STDC__=1 $(SOLARIS_FLAGS) -DHAVE_STRING $(DEBUG_CFLAGS) \
+ -Ipcre $(CYGWIN_FLAGS) $(PCRE_WIN_FLAGS)
+
+PROGRAM = junkbuster@EXEEXT@
+CC = gcc
+ECHO = echo
+GZIP = gzip
+INSTALL = cp -f
+LD = gcc
+OBJEXT = @OBJEXT@
+RM = rm -f
+STRIP = strip
+
+C_SRC = encode.c errlog.c filters.c gateway.c jbsockets.c jcc.c \
+ killpopup.c loadcfg.c loaders.c miscutil.c parsers.c \
+ showargs.c ssplit.c
+
+C_OBJS = $(C_SRC:.c=.$(OBJEXT))
+C_HDRS = $(C_SRC:.c=.h) project.h
+
+W32_SRC = @WIN_ONLY@w32log.c w32rulesdlg.c w32taskbar.c win32.c
+W32_FILES = @WIN_ONLY@w32.res
+W32_OBJS = @WIN_ONLY@$(W32_SRC:.c=.$(OBJEXT)) $(W32_FILES)
+W32_HDRS = @WIN_ONLY@w32log.h w32res.h w32rulesdlg.h w32taskbar.h
+W32_LIB = @WIN_ONLY@-lwsock32 -lcomctl32
+W32_INIS = @WIN_ONLY@junkbstr.txt saclfile.txt sblock.txt scookie.txt \
+ @WIN_ONLY@sforward.txt simage.txt spopup.txt strust.txt sregexp.txt
+
+PCRS_SRC = @PCRS_ONLY@pcrs.c
+PCRS_OBJS = $(PCRS_SRC:.c=.$(OBJEXT))
+PCRS_HDRS = $(PCRS_SRC:.c=.h)
+
+PCRE_SRC = @STATIC_PCRE_ONLY@pcre/get.c pcre/maketables.c pcre/study.c pcre/pcre.c
+PCRE_OBJS = @STATIC_PCRE_ONLY@$(PCRE_SRC:.c=.$(OBJEXT))
+PCRE_HDRS = @STATIC_PCRE_ONLY@pcre/config.h pcre/chartables.c pcre/internal.h pcre/pcre.h
+PCRE_LIB = @LIBRARY_PCRE_ONLY@-lpcre
+
+# No REGEX:
+@NO_REGEX_ONLY@REGEX_SRC =
+# Without PCRE:
+@GNU_REGEX_ONLY@REGEX_SRC = gnu_regex.c
+# With PCRE:
+@PCRE_REGEX_ONLY@REGEX_SRC = @STATIC_PCRE_ONLY@pcre/pcreposix.c
+
+REGEX_OBJS = $(REGEX_SRC:.c=.$(OBJEXT))
+REGEX_HDRS = $(REGEX_SRC:.c=.h)
+
+# Dependencies introduced by #include "project.h".
+PROJECT_H_DEPS = project.h $(REGEX_HDRS) $(PCRS_HDRS) @STATIC_PCRE_ONLY@pcre/pcre.h
+
+# Only need this on Solaris
+# FIXME: This is always commented out
+SOCKET_LIB = @SOLARIS_ONLY@-lsocket -lnsl
+
+LIBS = $(PCRE_LIB) $(W32_LIB) $(SOCKET_LIB)
+
+SRCS = $(C_SRC) $(W32_SRC) $(PCRS_SRC) $(PCRE_SRC) $(REGEX_SRC)
+OBJS = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
+HDRS = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS)
+
+
+# -------------------------------------------------------------------------
+# Do not change anything below this line
+# And there should NOT be any targets above this line.
+# -------------------------------------------------------------------------
+LDFLAGS = $(DEBUG_CFLAGS) $(CYGWIN_FLAGS)
+
+
+all: $(PROGRAM)
+
+
+SUFFIX = .txt:o
+.SUFFIXES : .txt
+
+%.txt:
+ sed -e 's/$$//' < $< > $@
+
+inifiles: $(W32_INIS)
+
+junkbstr.txt: config
+ sed -e 's!\(/etc/junkbuster\|.\)/blocklist!sblock.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/popup!spopup.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/cookiefile!scookie.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/forward!sforward.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/trust!strust.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/aclfile!sacl.txt!' \
+ -e 's!\(/var/log/junkbuster\|.\)/jarfile!jar.log!' \
+ -e 's!\(/var/log/junkbuster\|.\)/junkbuster\.log!junkbstr.log!' \
+ -e 's!\(/etc/junkbuster\|.\)/imagelist!simage.txt!' \
+ -e 's!\(/etc/junkbuster\|.\)/re_filterfile!sregexp.txt!' \
+ -e 's!$$!!' \
+ < $< > $@
+
+saclfile.txt: aclfile
+sblock.txt: blocklist
+scookie.txt: cookiefile
+sforward.txt: forward
+simage.txt: imagelist
+spopup.txt: popup
+strust.txt: trust
+sregexp.txt: re_filterfile
+
+
+# -------------------------------------------------------------------------
+#
+# -------------------------------------------------------------------------
+rpm-dist:
+ @make clean
+# verify that i'm root needs to be done
+ cd .. && tar --exclude "ijb/CVS" -cvzf ijb.tar.gz ijb/
+# verify all version strings, FLAGS, etc. in the spec file
+ cat ../../SPECS/junkbuster.spec | sed 's/^Version:.*/Version: $(RPM_VERSION)/g' | sed 's/^Release:.*/Release: $(VERSION_POINT)/g' > /tmp/abc && cp -f /tmp/abc ../../SPECS/junkbuster.spec
+ cd ../../ && rpm -ba SPECS/junkbuster.spec
+ chmod -R a+r ../../RPMS
+ chmod -R a+r ../../SRPMS
+
+# -------------------------------------------------------------------------
+#
+# -------------------------------------------------------------------------
+win-dist:
+ $(ECHO) Not implemented.
+
+# -------------------------------------------------------------------------
+#
+# -------------------------------------------------------------------------
+tarball-dist:
+ @make clean
+ make $(PROGRAM)
+# remove all objects and create the tarball with the binary
+ cd .. && $(RM) ijb/a.out ijb/core ijb/*.$(OBJEXT) && tar --exclude "ijb/CVS" -cvzf ../ijb-distribution-$(VERSION).tar.gz ijb/
+ chmod a+r ../../ijb-distribution-$(VERSION).tar.gz
+ @$(ECHO) Tarball with binary created.
+
+# -------------------------------------------------------------------------
+#
+# -------------------------------------------------------------------------
+
+encode.@OBJEXT@: encode.c encode.h config.h
+errlog.@OBJEXT@: errlog.c errlog.h config.h $(PROJECT_H_DEPS) @WIN_ONLY@w32log.h
+filters.@OBJEXT@: filters.c filters.h config.h $(PROJECT_H_DEPS) errlog.h encode.h gateway.h jbsockets.h jcc.h loadcfg.h parsers.h showargs.h ssplit.h @WIN_ONLY@win32.h
+gateway.@OBJEXT@: gateway.c gateway.h config.h $(PROJECT_H_DEPS) errlog.h jbsockets.h jcc.h loadcfg.h
+jbsockets.@OBJEXT@: jbsockets.c jbsockets.h config.h $(PROJECT_H_DEPS) filters.h
+jcc.@OBJEXT@: jcc.c jcc.h config.h $(PROJECT_H_DEPS) errlog.h filters.h gateway.h jbsockets.h killpopup.h loadcfg.h loaders.h miscutil.h parsers.h showargs.h @WIN_ONLY@w32log.h win32.h
+killpopup.@OBJEXT@: killpopup.c killpopup.h config.h $(PROJECT_H_DEPS) jcc.h loadcfg.h
+loadcfg.@OBJEXT@: loadcfg.c loadcfg.h config.h $(PROJECT_H_DEPS) errlog.h filters.h gateway.h jbsockets.h jcc.h killpopup.h loaders.h miscutil.h parsers.h showargs.h @WIN_ONLY@w32log.h win32.h
+loaders.@OBJEXT@: loaders.c loaders.h config.h $(PROJECT_H_DEPS) errlog.h encode.h filters.h gateway.h jcc.h loadcfg.h miscutil.h parsers.h ssplit.h
+miscutil.@OBJEXT@: miscutil.c miscutil.h config.h
+parsers.@OBJEXT@: parsers.c parsers.h config.h $(PROJECT_H_DEPS) errlog.h encode.h filters.h jbsockets.h jcc.h loadcfg.h loaders.h miscutil.h showargs.h ssplit.h
+showargs.@OBJEXT@: showargs.c showargs.h config.h $(PROJECT_H_DEPS) errlog.h encode.h gateway.h jcc.h loadcfg.h miscutil.h parsers.h
+ssplit.@OBJEXT@: ssplit.c ssplit.h config.h miscutil.h
+
+# GNU regex
+gnu_regex.@OBJEXT@: gnu_regex.c gnu_regex.h config.h
+
+# PCRS
+pcrs.@OBJEXT@: pcrs.c pcre/pcre.h pcrs.h
+
+# PCRE
+pcre/get.@OBJEXT@: pcre/get.c pcre/config.h pcre/internal.h pcre/pcre.h
+pcre/maketables.@OBJEXT@: pcre/maketables.c pcre/config.h pcre/internal.h pcre/pcre.h
+pcre/pcre.@OBJEXT@: pcre/pcre.c pcre/config.h pcre/internal.h pcre/pcre.h pcre/chartables.c
+pcre/pcreposix.@OBJEXT@: pcre/pcreposix.c pcre/config.h pcre/internal.h pcre/pcre.h pcre/pcreposix.h
+pcre/study.@OBJEXT@: pcre/study.c pcre/config.h pcre/internal.h pcre/pcre.h
+
+# An auxiliary program makes the PCRE default character table source
+
+pcre/chartables.c: pcre/dftables
+ pcre/dftables >pcre/chartables.c
+
+pcre/dftables: pcre/dftables.c pcre/maketables.c pcre/pcre.h pcre/internal.h pcre/config.h
+ $(CC) -o pcre/dftables $(CFLAGS) pcre/dftables.c
+
+# Win32
+w32log.@OBJEXT@: w32log.c errlog.h config.h jcc.h loadcfg.h miscutil.h pcre/pcre.h pcre/pcreposix.h pcrs.h project.h w32log.h w32rulesdlg.h w32taskbar.h win32.h
+w32rulesdlg.@OBJEXT@: w32rulesdlg.c config.h w32rulesdlg.h win32.h
+w32taskbar.@OBJEXT@: w32taskbar.c config.h w32log.h w32taskbar.h
+win32.@OBJEXT@: win32.c config.h jcc.h loadcfg.h pcre/pcre.h pcre/pcreposix.h pcrs.h project.h w32log.h win32.h
+
+w32.res: w32.rc w32res.h icons/denyrule.ico icons/ico00001.ico icons/ico00002.ico icons/ico00003.ico icons/ico00004.ico icons/ico00005.ico icons/ico00006.ico icons/ico00007.ico icons/ico00008.ico icons/icon1.ico icons/idle.ico icons/junkbust.ico config.h
+ windres -D__MINGW32__=0.2 -O coff -i $< -o $@
+
+
+$(PROGRAM): $(OBJS) $(W32_FILES)
+ $(LD) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
+
+clean:
+ $(RM) a.out core $(OBJS) $(W32_FILES) $(W32_INIS)
+
+clobber: clean
+ $(RM) $(PROGRAM) *.pdb *.lib *.exp TAGS junkbuster.log
+
+tags: $(SRCS) $(HDRS)
+ etags $(SRCS) $(HDRS)
+
+install: all
+ $(STRIP) $(PROGRAM)
+ $(INSTALL) $(PROGRAM) $(SBIN_DEST)
+ $(INSTALL) README README.TOO README.WIN README.re_filter README.cygwin $(DEST)
+ $(INSTALL) aclfile blocklist config cookiefile forward imagelist \
+ popup re_filterfile trust $(DEST)
+ # FIXME: On SuSE, these are not found. Where do they go?
+ $(ECHO) junkbuster.logrotate junkbuster.monthly junkbuster.weekly
+ $(GZIP) -c junkbuster.1 > $(MAN_DEST)/junkbuster.1.gz
+ $(INSTALL) junkbuster.init /sbin/init.d/junkbuster
+
+
+## Local Variables:
+## tab-width: 3
+## end:
diff --git a/acconfig.h b/acconfig.h
new file mode 100644
index 00000000..edf5c08a
--- /dev/null
+++ b/acconfig.h
@@ -0,0 +1,178 @@
+#ifndef _CONFIG_H
+#define _CONFIG_H
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/acconfig.h,v $
+ *
+ * Purpose : This file should be the first thing included in every
+ * .c file. (Before even system headers). It contains
+ * #define statements for various features. It was
+ * introduced because the compile command line started
+ * getting ludicrously long with feature defines.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: acconfig.h,v $
+ *
+ *********************************************************************/
+
+@TOP@
+
+/*
+ * Version number - Major (X._._)
+ */
+#undef VERSION_MAJOR
+
+/*
+ * Version number - Minor (_.X._)
+ */
+#undef VERSION_MINOR
+
+/*
+ * Version number - Point (_._.X)
+ */
+#undef VERSION_POINT
+
+/*
+ * Version number, as a string
+ */
+#undef VERSION
+
+/*
+ * Regular expression matching for URLs. (Highly recommended). If this is
+ * not defined then you can ony use prefix matching.
+ */
+#undef REGEX
+
+/*
+ * Allow JunkBuster to be "disabled" so it is just a normal non-blocking
+ * non-anonymizing proxy. This is useful if you're trying to access a
+ * blocked or broken site - just change the setting in the config file
+ * and send a SIGHUP (UN*X), or use the handy "Disable" menu option (Windows
+ * GUI).
+ */
+#undef TOGGLE
+
+/*
+ * Enables arbitrary content modification regexps
+ */
+#undef PCRS
+
+/*
+ * If a stream is compressed via gzip (Netscape specific I think), then
+ * it cannot be modified with Perl regexps. This forces it to be
+ * uncompressed.
+ */
+#undef DENY_GZIP
+
+/*
+ * Enables statistics function.
+ */
+#undef STATISTICS
+
+/*
+ * Bypass filtering for 1 page only
+ */
+#undef FORCE_LOAD
+
+/*
+ * Split the show-proxy-args page into a page for each config file.
+ */
+#undef SPLIT_PROXY_ARGS
+
+/*
+ * Kills JavaScript popups - window.open, onunload, etc.
+ */
+#undef KILLPOPUPS
+
+/*
+ * Support for webDAV - e.g. so Microsoft Outlook can access HotMail e-mail
+ */
+#undef WEBDAV
+
+/*
+ * Detect image requests automatically for MSIE. Will fall back to
+ * other image-detection methods (i.e. USE_IMAGE_LIST) for other
+ * browsers.
+ *
+ * It detects the following header pair as an image request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: * / *
+ *
+ * And the following as a HTML request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *
+ *
+ * And no, I haven't got that backwards - IE is being wierd.
+ *
+ * Known limitations:
+ * 1) If you press shift-reload on a blocked HTML page, you get
+ * the image "blocked" page, not the HTML "blocked" page.
+ * 2) Once an image "blocked" page has been sent, viewing it
+ * in it's own browser window *should* bring up the HTML
+ * "blocked" page, but it doesn't. You need to clear the
+ * browser cache to get the HTML version again.
+ *
+ * These limitations are due to IE making inconsistent choices
+ * about which "Accept:" header to send.
+ */
+#undef DETECT_MSIE_IMAGES
+
+/*
+ * Use image list to detect images.
+ * If you do not define this then everything is treated as HTML.
+ *
+ * Whatever the setting of this value, DETECT_MSIE_IMAGES will
+ * override it for people using Internet Explorer.
+ */
+#undef USE_IMAGE_LIST
+
+/*
+ * Allows the use of ACL files to control access to the proxy by IP address.
+ */
+#undef ACL_FILES
+
+/*
+ * Allows the use of trust files.
+ */
+#undef TRUST_FILES
+
+/*
+ * Allows the use of jar files to capture cookies.
+ */
+#undef JAR_FILES
+
+/*
+ * Use PCRE rather than GNU Regex
+ */
+#undef PCRE
+
+@BOTTOM@
+
+#endif /* _CONFIG_H */
diff --git a/aclfile b/aclfile
new file mode 100644
index 00000000..6a265a89
--- /dev/null
+++ b/aclfile
@@ -0,0 +1,102 @@
+# Access Control List for the Internet Junkbuster 2.0
+#
+# Copyright 1997-8 Junkbusters Corp. For distribution, modification and use
+# under the GNU General Public License. These files come with NO WARRANTY.
+# See http://www.junkbusters.com/ht/en/gpl.html or README file for details.
+#
+# 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.
+# For details see http://www.junkbusters.com/ht/en/ijbman.html#aclfile
+
+# For this file to have any effect, the line beginning "aclfile"
+# must be commented in, with the name of this file following the word "aclfile"
+
+# If no access file is specified, the proxy talks to anyone that connects.
+# If an access file is specified, 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 file wins
+# Default behavior is to deny service
+#
+# Syntax for an entry in an Access Control List is:
+#
+# ACTION SRC_ADDR[/SRC_MASKLEN] [ DST_ADDR[/DST_MASKLEN] ]
+#
+# where the fields are
+#
+# ACTION = "permit" | "deny"
+#
+# 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
+#
+# field separator (FS) is whitespace (space or tab)
+#
+# IMPORTANT NOTE
+# ==============
+# If the junkbuster is using a forwarder or a gateway for a particular
+# destination URL, the DST_ADDRR 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
+# junkbuster 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 works:
+
+# localhost is OK -- no DST_ADDR implies that ALL destination addresses are OK
+# permit localhost
+
+# a silly example to illustrate:
+#
+# permit any host on the class-C subnet with junkbusters to go anywhere
+#
+# permit www.junkbusters.com/24
+#
+# except deny one particular IP address from using it at all
+#
+# deny ident.junkbusters.com
+
+# another example
+#
+# You can specify an explicit network address and subnet mask.
+# Explicit addresses do not have to be resolved to be used.
+#
+# permit 207.153.200.0/24
+
+# a subnet mask of 0 matches anything, so the next line permits everyone.
+#
+# permit 0.0.0.0/0
+
+# Note: you cannot say
+#
+# permit .org
+#
+# to allow all .org domains; every IP-address listed must resolve fully.
+
+# An ISP may want to provide a junkbuster 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 0.0.0.0/0 0.0.0.0/0 # other clients can go anywhere
+# with the following exceptions:
+#
+# deny 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 some hostnames may be listed with multiple IP addresses;
+# the primary value returned by gethostbyname() is used.
+#
diff --git a/amiga.c b/amiga.c
new file mode 100644
index 00000000..cd228986
--- /dev/null
+++ b/amiga.c
@@ -0,0 +1,234 @@
+const char amiga_rcs[] = "$Id: amiga.c,v 1.1 2001/05/13 21:57:06 administrator Exp $";
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/jcc.c,v $
+ *
+ * Purpose : Amiga-specific declarations.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: jcc.c,v $
+ *
+ *********************************************************************/
+
+
+#include "config.h"
+
+#ifdef AMIGA
+
+#include
+#include
+
+#include "amiga.h"
+
+chonst char amiga_h_rcs[] = AMIGA_H_VERSION;
+
+unsigned long __stack = 20*1024;
+/* static char ver[] = "$VER: junkbuster " __AMIGAVERSION__ " (" __AMIGADATE__ ")"; */
+struct Task *main_task = NULL;
+int childs = 0;
+
+void serve(struct client_state *csp);
+
+__saveds ULONG server_thread(void)
+{
+ struct client_state *local_csp;
+ struct UserData UserData;
+ struct Task *me=FindTask(NULL);
+
+ Wait(SIGF_SINGLE);
+ local_csp=(struct client_state *)(me->tc_UserData);
+ me->tc_UserData=&UserData;
+ SocketBase=(APTR)OpenLibrary("bsdsocket.library",3);
+ if(SocketBase)
+ {
+ SetErrnoPtr(&(UserData.eno),sizeof(int));
+ local_csp->cfd=ObtainSocket(local_csp->cfd, AF_INET, SOCK_STREAM, 0);
+ if(-1!=local_csp->cfd)
+ {
+ Signal(main_task,SIGF_SINGLE);
+ serve((struct client_state *) local_csp);
+ } else {
+ local_csp->active = 0;
+ Signal(main_task,SIGF_SINGLE);
+ }
+ CloseLibrary(SocketBase);
+ } else {
+ local_csp->active = 0;
+ Signal(main_task,SIGF_SINGLE);
+ }
+ childs--;
+ return 0;
+}
+
+void amiga_exit(void)
+{
+ if(SocketBase)
+ {
+ CloseLibrary(SocketBase);
+ }
+}
+
+static struct SignalSemaphore memsem;
+static struct SignalSemaphore *memsemptr = NULL;
+static struct UserData GlobalUserData;
+
+void InitAmiga(void)
+{
+ main_task = FindTask(NULL);
+ main_task->tc_UserData = &GlobalUserData;
+
+ if (((struct Library *)SysBase)->lib_Version < 39)
+ {
+ exit(RETURN_FAIL);
+ }
+
+ signal(SIGINT,SIG_IGN);
+ SocketBase = (APTR)OpenLibrary("bsdsocket.library",3);
+ if (!SocketBase)
+ {
+ fprintf(stderr, "Can't open bsdsocket.library V3+\n");
+ exit(RETURN_ERROR);
+ }
+ SetErrnoPtr(&(GlobalUserData.eno),sizeof(int));
+ InitSemaphore(&memsem);
+ memsemptr = &memsem;
+
+ atexit(amiga_exit);
+}
+
+#ifdef __GNUC__
+#ifdef libnix
+/* multitaskingsafe libnix replacements */
+static void *memPool=NULL;
+
+void *malloc (size_t s)
+{
+ ULONG *mem;
+ LONG size = s;
+
+ if (size<=0)
+ {
+ return NULL;
+ }
+ if (!memPool)
+ {
+ if (!(memPool=CreatePool(MEMF_ANY,32*1024,8*1024)))
+ {
+ return NULL;
+ }
+ }
+ size += sizeof(ULONG) + MEM_BLOCKMASK;
+ size &= ~MEM_BLOCKMASK;
+ if (memsemptr)
+ {
+ ObtainSemaphore(memsemptr);
+ }
+ if ((mem=AllocPooled(memPool,size)))
+ {
+ *mem++=size;
+ }
+ if (memsemptr)
+ {
+ ReleaseSemaphore(memsemptr);
+ }
+ return mem;
+}
+
+void free (void *m)
+{
+ ULONG *mem = m;
+
+ if(mem && memPool)
+ {
+ ULONG size=*--mem;
+
+ if (memsemptr)
+ {
+ ObtainSemaphore(memsemptr);
+ }
+ FreePooled(memPool,mem,size);
+ if (memsemptr)
+ {
+ ReleaseSemaphore(memsemptr);
+ }
+ }
+}
+
+void *realloc (void *old, size_t ns)
+{
+ void *new;
+ LONG osize, *o = old;
+ LONG nsize = ns;
+
+ if (!old)
+ {
+ return malloc(nsize);
+ }
+ osize = (*(o-1)) - sizeof(ULONG);
+ if (nsize <= osize)
+ {
+ return old;
+ }
+ if ((new = malloc(nsize)))
+ {
+ ULONG *n = new;
+
+ osize >>= 2;
+ while(osize--)
+ {
+ *n++ = *o++;
+ }
+ free(old);
+ }
+ return new;
+}
+
+void __memCleanUp (void)
+{
+ if (memsemptr)
+ {
+ ObtainSemaphore(memsemptr);
+ }
+ if (memPool)
+ {
+ DeletePool(memPool);
+ }
+ if (memsemptr)
+ {
+ ReleaseSemaphore(memsemptr);
+ }
+}
+
+#define ADD2LIST(a,b,c) asm(".stabs \"_" #b "\"," #c ",0,0,_" #a )
+#define ADD2EXIT(a,pri) ADD2LIST(a,__EXIT_LIST__,22); \
+ asm(".stabs \"___EXIT_LIST__\",20,0,0," #pri "+128")
+ADD2EXIT(__memCleanUp,-50);
+#elif !defined(ixemul)
+#error No libnix and no ixemul!?
+#endif /* libnix */
+#else
+#error Only GCC is supported, multitasking safe malloc/free required.
+#endif /* __GNUC__ */
+
+#endif /* def AMIGA */
diff --git a/amiga.h b/amiga.h
new file mode 100644
index 00000000..6f132d0b
--- /dev/null
+++ b/amiga.h
@@ -0,0 +1,88 @@
+#ifdef AMIGA
+#ifndef _AMIGA_H
+#define _AMIGA_H
+#define AMIGA_H_VERSION "$Id: amiga.h,v 1.1 2001/05/13 21:57:06 administrator Exp $"
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/amiga.h,v $
+ *
+ * Purpose : Amiga-specific declarations.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: jcc.h,v $
+ *
+ *********************************************************************/
+
+
+#define _KERNEL
+#include
+#undef _KERNEL
+
+#define __NOLIBBASE__
+#include
+#undef __NOLIBBASE__
+
+#include
+#include
+#include
+#include
+
+struct UserData
+{
+ struct Library *sb;
+ int eno;
+};
+
+#define SocketBase ((struct Library *)(((struct UserData *)(FindTask(NULL)->tc_UserData))->sb))
+#define errno (((struct UserData *)(FindTask(NULL)->tc_UserData))->eno)
+#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,NULL)
+#define inet_ntoa(x) Inet_NtoA(x.s_addr)
+
+extern int childs;
+extern struct Task *main_task;
+
+void InitAmiga(void);
+void amiga_exit(void);
+void __memCleanUp(void);
+__saveds ULONG server_thread(void);
+
+#define exit(x)\
+{\
+ if(main_task)\
+ {\
+ if(main_task == FindTask(NULL))\
+ {\
+ while(childs) Delay(10*TICKS_PER_SECOND); exit(x);\
+ } else {\
+ CloseLibrary(SocketBase);\
+ childs--;\
+ RemTask(NULL);\
+ }\
+ }\
+}
+
+#define EINTR 0
+
+#endif /* ndef _AMIGA_H */
+#endif /* def AMIGA */
diff --git a/blocklist b/blocklist
new file mode 100644
index 00000000..7b48f3af
--- /dev/null
+++ b/blocklist
@@ -0,0 +1,1060 @@
+#
+# This is /etc/junkbuster/blocklist which was put here by a junkbuster rpm
+#
+# $Id: blocklist,v 1.3 2000/09/17 07:29:18 swa Exp $
+#
+# Last modified on Mon Sep 25 20:41:50 2000 (CEST)
+#
+# --------------------------------------------------------------------------
+#
+# Newest version is always available from
+#
+# http://www.waldherr.org/blocklist
+#
+# Read http://www.waldherr.org/junkbuster/update.shtml on how to keep
+# this file up-to-date.
+#
+# This list is Copyright (c) Stefan Waldherr .
+#
+# No distribution of this list without acknowledgement of the author(s).
+# No selling of thist list without prior written agreement.
+#
+# --------------------------------------------------------------------------
+#
+# Contributors are listed in the Hall Of Fame at
+#
+# http://www.waldherr.org/junkbuster/hof.shtml
+#
+# PS: I know that there are a ton of redundant regexps in this
+# file, but I haven't had time to fix them. Any help
+# appreciated.
+#
+# --------------------------------------------------------------------------
+#
+# For more detail, see http://www.junkbusters.com/ht/en/ijbfaq.html#blocking
+#
+# --------------------------------------------------------------------------
+#
+# Empty lines and lines beginning with a `#' are ignored.
+# The following line should be included to block use of telnet (port 23)
+:23
+
+# --------------------------------------------------------------------------
+#
+# generic paths
+#
+# --------------------------------------------------------------------------
+
+/*.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
+/*.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])
+/*.*/(ng)?adclient\.cgi
+/*.*/(plain|live|rotate)[-_.]?ads?/
+
+/*.*/(sponsor)s?[0-9]?/
+###/*.*/(sponsor|banner)s?[0-9]?/
+###/*.*/.*banner([-_]?[a-z0-9]+)?\.(gif|jpg)
+
+/*.*/_?(plain|live)?ads?(-banners)?/
+/*.*/abanners/
+/*.*/ad(sdna_image|gifs?)/
+/*.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
+/*.*/adbanners/
+/*.*/adserver
+/*.*/adstream\.cgi
+/*.*/adv((er)?ts?|ertis(ing|ements?))?/
+/*.*/anzei(gen)?/?
+/*.*/ban[-_]cgi/
+/*.*/banner_?ads/
+/*.*/banner_?anzeigen
+/*.*/bannerimage/
+/*.*/banners?/
+/*.*/banners?\.cgi/
+/*.*/cgi-bin/centralad/getimage
+/*.*/images/addver\.gif
+/*.*/images/advert\.gif
+/*.*/images/marketing/.*\.(gif|jpe?g)
+/*.*/place-ads
+/*.*/popupads/
+/*.*/promobar.*
+/*.*/publicite/
+/*.*/randomads/.*\.(gif|jpe?g)
+/*.*/reklama/.*\.(gif|jpe?g)
+/*.*/reklame/.*\.(gif|jpe?g)
+/*.*/reklaam/.*\.(gif|jpe?g)
+/*.*/siteads/
+/*.*/sponsor.*\.gif
+/*.*/sponsors?[0-9]?/
+/*.*/ucbandeimg/
+/*.*/werb\..*
+/*.*/werbebanner/
+/*.*/werbung/.*\.(gif|jpe?g)
+/.*/adv\. # www.telegraaf.nl
+/.*/advert[0-9]+\.jpg
+/.*bann\.gif
+/Media/Images/Adds/
+/_banner/
+/ad_images/
+/adgenius/
+/adimages/
+/*.*/ads/
+/*.*/ads\\
+/viewad/
+/adserve/
+/adverts/
+/annonser?/
+/bando/
+/bannerad/
+/bannerfarm/
+/bin/getimage.cgi/...\?AD
+/bin/nph-oma.count/ct/default.shtml
+/bin/nph-oma.count/ix/default.html
+/cgi-bin/getimage.cgi/....\?GROUP=
+/cgi-bin/nph-load
+/cgi-bin/webad.dll/ad
+/cwmail/acc\.gif
+/cwmail/amzn-bm1\.gif
+/db_area/banrgifs/
+/gif/teasere/
+/grafikk/annonse/
+/graphics/defaultAd/
+/grf/annonif
+/htmlad/
+/image\.ng/AdType
+/image\.ng/transactionID
+/images/.*/.*_anim\.gif # alvin brattli
+/ip_img/.*\.(gif|jpe?g)
+/marketpl*/
+/minibanners/
+/netscapeworld/nw-ad/
+/promotions/houseads/
+/rotads/
+/rotateads/
+/rotations/
+/torget/jobline/.*\.gif
+/viewad/
+/werbung/
+/worldnet/ad\.cgi
+/zhp/auktion/img/
+/cgi-bin/nph-adclick.exe/
+/*.*/Image/BannerAdvertising/
+/*.*/ad-bin/
+/*.*/adlib/server\.cgi
+/*.*/gsa_bs/gsa_bs.cmdl
+/autoads/
+/anz/pics/
+
+# for our finnish friends, by Kai Puolamaki
+/*.*/mainos/*.*/.*\.gif
+/*.*/mainos/*.*/.*\.jpe?g
+
+# more from a finnish friend Petri Haapio
+cgi.tietovalta.fi
+keltaisetsivut.fi/web/img/\.*gif
+haku.net/pics/pana\.*gif
+www.fi/guvat/\.*gif
+/*.*/(.*[-_.].*)?maino(kset|nta|s).*(/|\.(gif|html?|jpe?g|png))
+/*.*/(ilm(oitus)?|kampanja)(hallinta|kuvat?)(/|\.(gif|html?|jpe?g|png))
+
+# and even more from a finnish friend Hannu Napari
+194.251.243.50/cgi-bin/banner
+
+www.dime.net/ad
+www.iltalehti.fi/ad
+www.iltalehti.fi/ilmkuvat
+www.mtv3.fi/mainoskuvat
+
+#
+/*.*/adfinity
+/*.*/[?]adserv
+/*.*/bizgrphx/
+/*.*/smallad2\.gif
+/*.*/ana2ad\.gif
+/*.*/adimg/
+/*.*/.*counter\.pl
+/*.*/spin_html/
+/*.*/images/topics/topicgimp\.gif
+discovery.com/.*banner_id
+/*.*/.*bannr\.gif
+cruel.com/images/
+idrink.com/frm_bottom.htm
+/*.*/.*pb_ihtml\.gif
+/*.*/ph-ad.*\.focalink\.com
+/cgi-bin/adjuggler
+
+/we_ba/ # hausfrauenseite.de *bwhahahaaaaa*
+
+# ms sucks !
+/.*(ms)?backoff(ice)?.*\.(gif|jpe?g)
+/.*(/ie4|/ie3|msie|sqlbans|powrbybo|activex|backoffice|explorer|netnow|getpoint|ntbutton|hmlink).*\.(gif|jpe?g)
+/.*activex.*(gif|jpe?g)
+/.*explorer?.(gif|jpe?g)
+/.*freeie\.(gif|jpe?g)
+/.*/ie_?(buttonlogo|static?|anim.*)?\.(gif|jpe?g)
+/.*ie_sm\.(gif|jpe?g)
+/.*msie(30)?\.(gif|jpe?g)
+/.*msnlogo\.(gif|jpe?g)
+/.*office97_ad1\.(gif|jpe?g)
+/.*pbbobansm\.(gif|jpe?g)
+/.*powrbybo\.(gif|jpe?g)
+/.*sqlbans\.(gif|jpe?g)
+/.*exc_ms\.gif
+/.*ie4get_animated\.gif
+/.*ie4_animated\.gif
+/.*n_iemap\.gif
+/.*ieget\.gif
+/.*logo_msnhm_*
+/.*mcsp2\.gif
+/.*msn2\.gif
+/.*add_active\.gif
+/.*n_msnmap\.gif
+/.*Ad00\.gif
+/.*s_msn\.gif
+/.*addchannel\.gif
+/.*adddesktop\.gif
+/.*/ns4\.gif
+/.*/v3sban\.gif
+/.*/?FPCreated\.gif
+/.*/opera35\.gif
+/.*/opera13\.gif
+/.*/opera_b\.gif
+/.*/ie_horiz\.gif
+/.*/ie_logo\.gif
+
+# ... and even more!
+/.*/favicon\.ico
+
+# generally useless information and promo stuff (commented out)
+#/*.*/(counter|getpcbutton|BuiltByNOF|netscape|hotmail|vcr(rated)?|rsaci(rated)?|freeloader|cache_now(_anim)?|apache_pb|now_(anim_)?button|ie_?(buttonlogo|static?|.*ani.*)?)\.(gif|jpe?g)
+
+/*.*/images/na/us/brand/
+/*.*/advantage\.(gif|jpg)
+/*.*/advanbar\.(gif|jpg)
+/*.*/advanbtn\.(gif|jpg)
+/*.*/biznetsmall\.(gif|jpg)
+/*.*/utopiad\.(gif|jpg)
+/*.*/epipo\.(gif|jpg)
+/*.*/amazon([a-zA-Z0-9]+)\.(gif|jpg)
+/*.*/bnlogo.(gif|jpg)
+/*.*/buynow([a-zA-Z0-9]+)\.(gif|jpg)
+
+/p/d/publicid
+
+
+# for the dutch folks by a dutch friend gertjan@west.nl
+/*.*/Advertenties/
+/.*./Adverteerders/
+netdirect.nl/nd_servlet/___
+
+# --------------------------------------------------------------------------
+#
+# specific servers
+#
+# --------------------------------------------------------------------------
+
+# the next two lines work
+12.16.1.10/web_GIF
+12.16.1.10/~web_ani
+193.158.37.3/cgi-bin/impact
+193.210.156.114
+193.98.1.160/img
+194.221.183.222/mailsentlu
+194.221.183.223
+194.221.183.224
+194.221.183.225
+194.221.183.226
+194.221.183.227
+194.231.79.38
+195.124.124.56
+195.27.70.69
+195.30.94.21
+195.63.104.222//inbox
+195.63.104.222//log # www.weltbild.de
+195.63.104.222//meld
+195.63.104.222//menu
+195.63.104.222/folderlu
+195.63.104.222/folderru
+195.63.104.222/inbox
+195.63.104.222/loginlu
+195.63.104.222/loginmu
+195.63.104.222/loginru
+195.63.104.222/logoutlu
+195.63.104.222/logoutmu
+195.63.104.222/logoutru
+195.63.104.61//inbox
+195.63.104.61//log # www.weltbild.de
+195.63.104.61//meld
+195.63.104.61//menu
+195.63.104.61/inbox
+195.63.104.61/loginlu
+195.63.104.61/loginmu
+195.63.104.61/loginru
+195.63.104.61/logoutlu
+195.63.104.61/logoutmu
+195.63.104.61/logoutru
+199.78.52.10
+1st-fuss.com
+204.253.46.71:1977
+204.94.67.40/wc/
+205.153.208.93
+205.216.163.62
+205.217.103.58:1977
+206.165.5.162/images/gcanim\.gif
+206.221.254.181:80
+206.50.219.33
+207.137.96.35
+207.159.129.131/abacus
+207.159.135.72
+207.82.250.9
+207.87.15.234
+207.87.27.10/tool/includes/gifs/
+208.156.39.142
+208.156.39.144
+208.156.60.230
+208.156.60.234
+208.156.60.235
+209.1.112.252/adgraph/
+209.1.135.142:1971
+209.1.135.144:1971
+209.132.97.164/IMG/
+209.185.222.45
+209.185.222.60
+209.185.253.199
+209.207.224.220/servfu.pl
+209.207.224.222/servfu.pl
+209.239.37.214/cgi-pilotfaq/getimage\.cgi
+209.297.224.220
+209.75.21.6
+209.85.89.183/cgi-bin/cycle\?host
+212.63.155.122/(banner|concret|softwareclub)
+216.15.157.34
+216.27.61.150
+216.49.10.236/web1000/
+247media.com
+62.144.115.12/dk/
+ICDirect.com/cgi-bin
+Shannon.Austria.Eu.net/\.cgi/
+WebSiteSponsor.de
+207.181.220.145
+213.165.64.42
+
+#
+# generic hosts (probably most effective)
+#
+ad*.*.*
+ad*.*.*.*
+*.ads.*.*
+banner*.*.*
+banner*.*.*.*
+
+*.admaximize.com
+*.imgis.com
+/*.*/*preferences.com*
+1ad.prolinks.de
+adwisdom.com
+akamaitech.net/.*/Banners/
+altavista.telia.com/av/pix/sponsors/
+amazon.com/g/associates/logos/
+annonce.insite.dk
+asinglesplace.com/asplink\.gif
+athand.com/rotation
+automatiseringgids.nl/gfx/advertenties/
+#avenuea.com/Banners/
+avenuea.com/view/
+badservant.guj.de
+befriends.net/personals/matchmaking\.jpg
+bizad.nikkeibp.co.jp
+bs.gsanet.com/gsa_bs/
+cash-for-clicks.de
+cda.at/customer/
+cgicounter.puretec.de/cgi-bin/
+ciec.org/images/countdown\.gif
+classic.adlink.de/cgi-bin/accipiter/adserver.exe
+click..wisewire.com
+clickhere.egroups.com/img/
+imagine-inc.com
+commonwealth.riddler.com/Commonwealth/bin/statdeploy\?[0-9]+
+customad.cnn.com
+dagbladet.no/ann-gif
+deja.com/jump/
+digits.com/wc/
+dino.mainz.ibm.de
+dn.adzerver.com/image.ad
+ds.austriaonline.at
+emap.admedia.net
+etrade.com/promo/
+eur.yimg.com/a/
+eur.a1.yimg.com/eur.yimg.com/a/
+us.a1.yimg.com/us.yimg.com/a/
+eurosponsor.de
+fastcounter.linkexchange.com
+flycast.com
+focalink.com/SmartBanner
+freepage.de/cgi-bin/feets/freepage_ext/.*/rw_banner
+freespace.virgin.net/andy.drake
+futurecard.com/images/
+gaia.occ.com/click.*
+globaltrack.com
+globaltrak.net
+go.com/cimages\?SEEK_
+gp.dejanews.com/gtplacer
+gtp.dejanews.com/gtplacer
+deja.com/gifs/onsale/
+hitbox.com
+home.miningco.com/event.ng/.*AdID
+hurra.de
+hyperbanner.net
+icount.com/.*count
+image*.narrative.com/news/.*\.(gif|jpe?g)
+image.click2net.com
+image.linkexchange.com
+images.nytimes.com
+images.yahoo.com/adv/
+images.yahoo.com/promotions/
+imageserv.adtech.de
+img.web.de
+impartner.de/cgi-bin
+informer2.comdirect.de:6004/cd/banner2
+infoseek.go.com/cimages
+ins.at/asp/images/
+kaufwas.com/cgi-bin/zentralbanner\.cgi
+leader.linkexchange.com
+link4ads.com
+link4link.com
+linktrader.com/cgi-bin/
+logiclink.nl/cgi-bin/
+lucky.theonion.com/cgi-bin/oniondirectin\.cgi
+lucky.theonion.com/cgi-bin/onionimp\.cgi
+lucky.theonion.com/cgi-bin/onionimpin\.cgi
+m.doubleclick.net
+mailorderbrides.com/mlbrd2\.gif
+media.priceline.com
+mediaplex.com
+members.sexroulette.com
+messenger.netscape.com
+miningco.com/zadz/
+# movielink became moviefone
+moviefone.com/.*banner
+moviefone.com/.*newbutton
+moviefone.com/.*ad\.gif
+moviefone.com/.*mmail
+moviefone.com/.*poster\.gif
+moviefone.com/.*btyb
+moviefone.com/.*h_guy
+moviefone.com/.*h_showtick
+moviefone.com/.*h_aML
+moviefone.com/.*/m_
+moviefone.com/.*/icon_
+moviefone.com/.*/NF_.*back
+moviefone.com/.*/h_.*gif
+moviefone.com/media/imagelinks
+moviefone.com/media/imagelinks/MF.(ad|sponsor)
+moviefone.com/media/art
+mqgraphics.mapquest.com/graphics/Advertisements/
+netgravity.*
+newads.cmpnet.com
+news.com/cgi-bin/acc_clickthru
+ngadcenter.net
+ngserve.pcworld.com/adgifs/
+nol.at:81
+nrsite.com
+nytsyn.com/gifs
+offers.egroups.com
+pagecount.com
+ph-ad.*\.focalink.com
+preferences.com
+promotions.yahoo.com/
+pub.nomade.fr
+qsound.com/tracker/tracker.exe
+resource-marketing.com/tb/
+revenue.infi.net
+rtl.de/homepage/wb/images/
+schnellsuche.de/images/*
+shout-ads.com/cgibin/shout.php3
+sjmercury.com/advert/
+smartclicks.com/.*/smart(img|banner|host|bar|site)
+smh.com.au/adproof/
+spinbox1.filez.com
+static.wired.com/advertising/
+swiftad.com
+sysdoc.pair.com/cgi-sys/cgiwrap/sysdoc/sponsor\.gif
+t-online.de/home/040255162-001/*
+taz.de/taz/anz/
+tcsads.tcs.co.at
+teleauskunft.de/commercial/
+thecounter.com/id
+tm.intervu.net
+tvguide.com/rbitmaps/
+ubl.com/graphics/
+ubl.com/images/
+ultra.multimania.com
+ultra1.socomm.net
+uproar.com
+us.yimg.com/a/
+us.yimg.com/promotions/
+valueclick.com
+valueclick.net
+victory.cnn.com
+videoserver.kpix.com
+washingtonpost.com/wp-adv/
+webconnect.net/cgi-bin/webconnect.dll
+webcounter.goweb.de
+webserv.vnunet.com/ip_img/.*ban
+werbung.pro-sieben.de/cgi-bin
+whatis.com/cgi-bin/getimage.exe/
+www..bigyellow.com/......mat.*
+www.adclub.net
+www.addme.com/link8\.gif
+www.aftonbladet.se/annons
+www.americanpassage.com/
+www.angelfire.com/in/twistriot/images/wish4\.gif
+www.bizlink.ru/cgi-bin/irads\.cgi
+www.blacklightmedia.com/adlemur
+www.bluesnews.com/flameq\.gif
+www.bluesnews.com/images/ad[0-9]+\.gif
+www.bluesnews.com/images/gcanim3\.gif
+www.bluesnews.com/images/throbber2\.gif
+www.bluesnews.com/miscimages/fragbutton\.gif
+www.businessweek.com/sponsors/
+www.canoe.ca/AdsCanoe/
+www.cdnow.com/MN/client.banners
+www.clickagents.com
+www.clickthrough.ca
+www.clicmoi.com/cgi-bin/pub\.exe
+www.dailycal.org/graphics/adbanner-ab\.gif
+www.detelefoongids.com/pic/[0-9]*
+www.dhd.de/CGI/werbepic
+www.dsf.de/cgi-bin/site_newiac.adpos
+www.firsttarget.com/cgi-bin/klicklog.cgi
+www.forbes.com/forbes/gifs/ads
+www.forbes.com/tool/includes/gifs/
+www.fxweb.holowww.com/.*\.cgi
+www.geocities.com/TimesSquare/Zone/5267/
+www.goto.com/images-promoters/
+www.handelsblatt.de/hbad
+www.hotlinks.de/cgi-bin/barimage\.cgi
+www.infoseek.com/cimages
+www.infoworld.com/pageone/gif
+www.isys.net/customer/images
+www.javaworld.com/javaworld/jw-ad
+www.kron.com/place-ads/
+www.leo.org/leoclick/
+www.linkexchange.ru/cgi-bin/erle\.cgi
+www.linkstation.de/cgi-bin/zeige
+www.linux.org/graphic/miniature/
+www.linux.org/graphic/square/
+www.linux.org/graphic/standard/
+www.luncha.se/annonsering
+www.mediashower.com
+www.ml.org/gfx/spon/icom/
+www.ml.org/gfx/spon/wmv
+www.musicblvd.com/mb2/graphics/netgravity/
+nedstat.nl/cgi-bin/
+www.news.com/Midas/Images/
+www.newscientist.com/houseads
+www.nextcard.com/affiliates/
+www.nikkeibp.asiabiztech.com/image/NAIS4\.gif
+www.nordlys.no/imaker/.*/.*/.*/.....\.gif # alvin brattli
+www.nordlys.no/imaker/.*/.*/.*/..003 # alvin brattli
+www.oanda.com/server/banner
+omdispatch.co.uk
+www.oneandonlynetwork.com
+www.page2page.de/cgi-bin/
+www.prnet.de/.*/bannerschnippel/.*\.(gif|jpe?g)
+www.promptsoftware.com/marketing/
+#www.reklama.ru/cgi-bin/banners/
+www.riddler.com/sponsors/
+www.rle.ru/cgi-bin/erle\.cgi
+www.rock.com/images/affiliates/search_black\.gif
+www.rtl.de/search/.*kunde
+#www.search.com/Banners
+www.sfgate.com/place-ads/
+www.shareware.com/midas/images/borders-btn\.gif
+#www.sjmercury.com/products/marcom/banners/
+www.smartclicks.com:81
+www.sol.dk/graphics/portalmenu
+www.sponsornetz.de/jump/show.exe
+www.sponsorpool.net
+www.sunworld.com/sunworldonline/icons/adinfo.sm\.gif
+www.swwwap.com/cgi-bin/
+www.taz.de/~taz/anz/
+www.telecom.at/icons/.*film\.(gif|jpe?g)
+www.theonion.com/bin/
+www.topsponsor.de/cgi-bin/show.exe
+www.ugo.net
+www.ugu.com/images/EJ\.gif
+www.warzone.com/pics/banner/
+www.warzone.com/wzfb/ads.cgi
+www.webpeep.com
+www.websitepromote.com/partner/img/
+www.winjey.com/onlinewerbung/*\.gif
+www.wishing.com/webaudit
+www.www-pool.de/cgi-bin/banner-pool
+www2.blol.com/agrJRU\.gif
+www3.exn.net:80
+yahoo.com/CategoryID=0
+yahoo.de/adv/images
+~cpan.valueclick.com
+~www.hitbox.com
+
+#swa
+www.bannerland.de/click.exe
+*.cyberclick.net
+*.eu-adcenter.net/
+www.web-stat.com
+www.slate.com/snav/
+www.slate.com/redirect/
+www.slate.com/articleimages/
+usads.imdb.com
+www.forbes.com/tool/images/frontend/
+www.zserver.com
+www.spinbox.com
+pathfinder.com/shopping/marketplace/images/
+/*.*/adbanner*
+/*.*/adgraphic*
+static.wired.com/images
+perso.estat.com/cgi-bin/perso/
+dinoadserver1.roka.net
+fooladclient*.fool.com
+affiliate.aol.com/static/
+cybereps.com:8000
+iadnet.com
+orientserve.com
+wvolante.com
+findcommerce.com
+smartage.com
+
+# www.sunday-times.co.uk
+www.sunday-times.co.uk/standing/newsint/ticker
+
+# Für Germany.Net-User: Germany.Net (fast) banner- u. grafikfrei!
+germany.net/gebu-frei\.gif
+germany.net/bilder/menue/leiste\.gif
+germany.net/bilder/gn_logos/*
+germany.net/bilder/90x90/*
+germany.net/banner-homepage/*
+germany.net/downloadshop/*
+germany.net/bilder/action/promopoly/germanynet/basisdienste/hilfe/*
+
+# Block as much of GeoCities as possible
+# All geocities-owned images
+www.geocities.com/images
+www.geocities.com/MemberBanners/live/
+pic.geocities.com/images
+# And the popup (it still pops up, but does not eat up precious bandwidth)
+#www.geocities.com/ad_container/pop.html # already fixed by other regexp
+
+# from corion@informatik.uni-frankfurt.de
+sam.songline.com/@
+img.getstats.com/
+#ads.xmonitor.net/xadengine.cgi # fixed by above regexp
+# Also block the japanese geocities popups
+www.geocities.co.jp/images
+# Also block the come.to, surf.to etc. popups
+v3.come.to/pop.asp
+
+# Also block the xoom stuff.
+xb.xoom.com
+home.talkcity.com/homepopup.html.*
+
+# Max Maischein again ...
+# Halflife.net uses WON banners
+# Banners from Freeserve
+#banner.freeservers.com/cgi-bin/fs_adbar # fixed by above regexp
+# And those nasty va-popups !
+/.*/?va_banner.html
+# And an all-around hit against advert*.jpg
+/.*/advert[0-9]+\.jpg
+# And yet another Internet Explorer gif ...
+/.*/ie_horiz\.gif
+# Some uninteresting buttons I think...
+mircx.com/images/buttons/
+services.mircx.com/.*\.gif
+# Ooops - UserFriendly (Iambe) has a banner that gets eaten ...
+~www.userfriendly.org/images/banners/banner_dp_heart\.gif
+# Easyspace - yet another "free disk space" provider with banner popups
+www.easyspace.com/(fpub)?banner.html
+www.easyspace.com/100\.gif
+# Some russian banner exchanges
+banner.ricor.ru/cgi-bin/banner.pl
+#www.bizlink.ru/cgi-bin/irads.cgi # already fixed by other regexp
+stx9.sextracker.com/stx/send/
+# And even more of geocities :
+www.geocities.com/pictures/
+# Gaah - www.angelfire.com - another webspace provider with popups
+angelfire.com/sys/download.html
+# Gamasutra.com uses this ad provider
+sally.songline.com/@
+
+# Eule.de (search engine)
+# maybe images.eule.de as a whole...
+www.eule.de/cgi-bin/
+images.eule.de/comdirect\.gif
+images.eule.de/wp\.gif
+aladin.de/125_1\.gif
+images.eule.de/neu/books\.gif
+
+# --------------------------------------------------------------------------
+#
+# some images
+#
+# --------------------------------------------------------------------------
+
+# some images on cnn's website just suck!
+/.*cnnstore\.gif
+/.*book.search\.gif
+/.*cnnpostopinionhome.\.gif
+/.*custom_feature\.gif
+/.*explore.anim.*gif
+/.*infoseek\.gif
+/.*pathnet.warner\.gif
+/.*images/cnnfn_infoseek\.gif
+/.*images/pathfinder_btn2\.gif
+/.*img/gen/fosz_front_em_abc\.gif
+/.*img/promos/bnsearch\.gif
+/.*navbars/nav_partner_logos\.gif
+/BarnesandNoble/images/bn.recommend.box.*
+/digitaljam/images/digital_ban\.gif
+/hotstories/companies/images/companies_banner\.gif
+/markets/images/markets_banner\.gif
+/ows-img/bnoble\.gif
+/ows-img/nb_Infoseek\.gif
+cnn.com/images/custom/totale\.gif
+cnn.com/images/lotd/custom.wheels\.gif
+cnn.com/images/.*/by/main.12\.gif
+cnn.com/images/.*/find115\.gif
+cnn.com/.*/free.email.120\.gif
+cnnfn.com/images/left_banner\.gif
+focus.de/A/AF/AFL/
+www.cnn.com/images/.*/bn/books\.gif
+www.cnn.com/images/.*/pointcast\.gif
+www.cnn.com/images/.*/fusa\.gif
+cnn.com/images/.*/start120\.gif
+images.cnn.com/SHOP/
+/.*by/main\.gif
+/.*gutter117\.gif
+/.*barnes_logo\.gif
+# the / indicates the beginning of the path (and no longer the FQDN)
+/.*nbclogo\.gif
+/.*microdell\.gif
+/.*secureit\.gif
+
+g.deja.com/gifs/(q|us)west_120x120\.gif
+
+#
+/gif/buttons/banner_.*
+/gif/buttons/cd_shop_.*
+/gif/cd_shop/cd_shop_ani_.*
+
+#altavista
+/av/gifs/av_map\.gif
+/av/gifs/av_logo\.gif
+/av/gifs/new/ns\.gif
+altavista.com/i/valsdc3\.gif
+jump.altavista.com/gn_sf
+
+# tucows
+tucows.*.*/images/locallogo\.gif
+#tucows.dsuper.net/images/locallogo\.gif
+
+#
+mt_freshmeat\.jpg
+
+# simpliemu.hypermart.net/frames.html
+go2net.com/mgic/adpopup
+go2net.com/metaspy/images/exposed\.gif
+go2net.com/metaspy/images/ms_un\.gif
+
+#
+www.cebu-usa.com/cwbanim1\.gif
+www.cebu-usa.com/Connection\.jpg
+www.cebu-usa.com/phonead\.gif
+www.cebu-usa.com/ban3\.jpg
+www.cebu-usa.com/tlban\.gif
+www.cebu-usa.com/apwlogo1\.gif
+www.cebu-usa.com/rose\.gif
+
+# fnet
+www.fnet.de/img/geldboerselogo\.jpg
+
+# hirsch@mathcs.emory.edu
+/images/getareal2\.gif
+
+www.assalom.com/aziza/logos/cniaffil\.gif
+www.assalom.com/aziza/logos/4starrl1\.gif
+www.phantomstar.com/images/media/m1\.gif
+
+#
+wahlstreet.de/MediaW\$/tsponline\.gif
+wahlstreet.de/MediaW\$/dzii156x60\.gif
+wahlstreet.de/MediaW\$/etban156x60_2_opt2\.gif
+
+# linuxtoday.com
+/pics/gotlx1\.gif
+/pics/getareal1\.gif
+/pics/amzn-b5\.gif
+/ltbs/cgi-bin/click.cgi
+linuxtoday.com/ltbs/pics/
+
+# Geocities popups
+/ad[-_]container/
+/include/watermark/v2/
+
+# Reinier Bikker
+# Banner.xxLINK.nl/
+
+# Mark Lutz
+/.*/*werb.*\.(gif|jpe?g) # hope that's not to restrictive
+
+#Free Yellow thing at bottom of pages (HereticPC)
+www.freeyellow.com/images/powerlink5a\.gif
+www.freeyellow.com/images/powerlink5b\.gif
+www.freeyellow.com/images/powerlink5c\.gif
+www.freeyellow.com/images/powerlink5d\.gif
+www.freeyellow.com/images/powerlink5e\.gif
+
+#HereticPC
+www.eads.com/images/refbutton\.gif
+www.fortunecity.com/console2/newnav/*
+www.goldetc.net/search\.gif
+www.cris.com/~Lzrdking/carpix/cars3-le\.gif
+www.justfreestuff.com/scott\.gif
+www.cyberthrill.com/entrance\.gif
+secure.pec.net/images/pec69ani\.gif
+www.new-direction.com/avviva\.gif
+internetmarketingcenter\.gif
+www.new-direction.com/wp-linkexchange-loop\.gif
+www.new-direction.com/windough\.gif
+www.digitalwork.com/universal_images/affiliate/dw_le_3\.gif
+service.bfast.com/bfast/click/*
+www.new-direction.com/magiclearning\.gif
+www.new-direction.com/mailloop\.gif
+
+www.free-banners.com/images/hitslogo\.gif
+rob.simplenet.com/dyndns/fortune5\.gif
+nasdaq-amex.com/images/bn_ticker\.gif
+
+#
+# navilor@hotmail.com
+#
+#
+# wayne@staff.msen.com
+#
+a*.*.*.yimg.com/([0-9]*|\/)*us.yimg.com/*
+ad.doubleclick.net
+www.dnps.com/ads
+www.realtop50.com/cgi-bin/ad
+~a*.*.*.yimg.com/([0-9]|\/)*us.yimg.com/i/*
+
+#
+www.yacht.de/images/(my_ani|eissingani|chartertrans|fum|schnupper|fysshop|garmin)\.gif
+www.sponsorweb.de/web-sponsor/nt-bin/show.exe
+
+#
+# Club-internet pops up a complain if you refuse cookie (still pops up...)
+perso.club-internet.fr/html/Popup/popup_frame_nocookie.html
+perso.club-internet.fr/pagesperso/popup_nocookie.html
+
+gmx.net/images/newsbanner/
+cash4banner.de
+
+quicken.lexware.de/images/us7-468x60.gif
+/img/special/chatpromo\.gif
+www.travelocity.com/images/promos/
+
+# wonder that that does...
+p01.com/1x1.dyn
+
+/*.*/phpAds/viewbanner.php
+/*.*/phpAds/phpads.php
+
+www.linux-magazin.de/banner
+comtrack.comclick.com
+click-fr.com
+iac-online.de/filler
+
+media.interadnet.com
+stat.www.fi/cgi-bin
+/cgi/banners.cgi
+ads-digi.sol.no
+fp.buy.com
+disneystoreaffiliates.com
+
+powerwork.mobile.de/cgi-bin/getimage\.cgi
+
+
+
+####################################################
+# Jon's addition:
+#
+# Register ads
+#www.theregister.co.uk/media/155\.gif
+www.theregister.dealtime.co.uk/BannerIn/
+#www.theregister.co.uk/media/SearchDomainRed\.gif
+#www.theregister.co.uk/media/ByDomainbusterRed\.gif
+#www.theregister.co.uk/media/454\.gif
+#www.theregister.co.uk/media/461\.gif
+#www.theregister.co.uk/media/dealtime-lh\.gif
+# Ad target:
+www.domainbuster.com/cgi-bin/domainbuster/dpro\.pl
+
+#www.theregister.co.uk/media/.*\.swf
+#www.theregister.co.uk/media/.*\.js
+
+# get agressive:
+www.theregister.co.uk/media/
+
+# Dilbert:
+www.dilbert.com/comics/dilbert/images/.*_140x800.*\.gif
+
+# stattrack.com
+# Uses URL: http://www.stattrack.com/cgi-bin/stats/image.cgi
+/cgi-bin/stats/
+# And loads JavaScript from http://www.stattrack.com/stats/code
+www.stattrack.com/stats/
+
+#GeoCities crap
+##geo.yahoo.com/serv
+##visit.geocities.com/visit.gif
+*.*.*.yimg.com/*/www.geocities.com/js_source
+#http://us.toto.geo.yahoo.com/toto?s=76001086
+##*.toto.geo.yahoo.com
+
+# Nuke GeoCities rubbish
+*.*.geo.yahoo.com
+*.geo.yahoo.com
+geo.yahoo.com
+visit.geocities.com
+*.*.*.yimg.com/.*/www.geocities.com/
+
+#http://counter16.bravenet.com/counter.php
+counter*.*.*
+
+#http://stat.cybermonitor.com/7emezone_p?1707_USdvd
+stat*.*.*
+
+#http://members.tripod.com/adm/popup/.....
+members.tripod.com/adm/popup/
+
+#This is the worst ad idea ever! Bye bye!
+#count.exitexchange.com/exit/1100661
+#count.exitexchange.com/clients/navbar.html
+#(used in http://skyhivisuals.tripod.com/malfunctions_.htm)
+exitexchange.com
+
+#SourceForge ads.
+sfads.osdn.com
+
+#Crap trapping sites
+webhideout.com
+
+####################################################
+
+
+
+#
+# some regexps are simply too aggressive ...
+#
+# equalizer to /*.*(.*[-_.])?ads?[0-9]?(/|[-_.].*|.(gif|jpe?g))
+# or other regexps
+#
+#
+~adamwhone.co.uk
+~adsl.tin.it
+~stsci.edu
+~tgs.com
+~sun.com
+~povray.org
+~admin.*.*
+~admin.*.*.*
+~ad.siemens.de # SIEMENS Automation & Drives
+~add-url.altavista.com
+~adis.on.ca
+~address*.*.*
+~address*.*.*.*
+~add*.*.*
+~add*.*.*.*
+~adu*.*.*
+~adu*.*.*.*
+~advice.*.*
+~advice.*.*.*
+
+# univ. don't advertise, do they :-)
+~*.*.edu
+~*.*.*.edu
+~www.ugu.com/sui/ugu/adv
+~adfa.edu.au
+~adsl*.*.*
+
+~clubs.yahoo.com/clubs
+~edit.my.yahoo.com/config/show_identity
+~www.ix.de/newsticker/data/ad
+~www.heise.de/newsticker/data/ad
+~www.careernet.de/anzeige
+~www.careernet.de/bewerber/stellenanzeigen
+~www.baumgartner.de/stellenmarkt/anzeigen
+~www.dspartner.de/Anzeigen
+~www.aws-jobs.de/Anzeigen
+~www.jobware.de/.*/anzeigen/
+~www.jobworld.de/bilder/
+~www.cnn.com/TECH/computing/.*/internet.ads/
+~www.financial.de/shop/
+~gnn.de/.*\.html
+~www.auktionen.de
+
+~194.221.152.2/phptelefontmp
+~harvard.edu/images/banner/
+
+~adswww.harvard.edu
+~www.dhd.de/CGI/anzeigen/
+
+~ads.web.de/web/
+~img.web.de/web/img/
+
+~www.segel.de/menu/bilder/anzeigen\.gif
+~www.corel.com/graphics/banners/
+~www.software.ibm.com/ad/
+~www.omg.org/docs/ad/
+
+~sperrmuell.de/scripts/anzeigen
+www.freenet.de/index.html
+www.01019freenet.de/index.html
+~www.freenet.de/freenet/
+~www.01019freenet.de/freenet/
+~webfactory.de/anzeigen.php
+~www.cdmag.com
+~www.internatif.org/bortzmeyer/debian/sponsor/
+~hp.com
+
+~www.software.hosting.ibm.com/ad/
+~www.ibm.com/software/ad/
+~brickshelf.com
+
+~www.debian.org/Pics/banner-blue\.gif
+~www.linux.de/pics/Nachrichten_banner\.gif
+~www.werbekurier.de
+
+~finder.shopping.yahoo.com/shop/
+~national.com/pf
+~mozilla.org
+~eidos.de
+~e-sheep.com
+~punkassgear.com
+~mozilla.org
+~mozillazine.org
+~adbusters.org
+~annoy.com
+~consumer-direct.com
+~www.iez-auktion.de
+~ibm.com
+~sgi.com
+
+# my banking stuff => no ads. last regexp for fast access :-)
+~comdirekt.de
+~comdirect.de
+~teledata.de
+
+
+~msdn.microsoft.com
+
+# do not forget newline at the end of this file!!!
+
diff --git a/config b/config
new file mode 100644
index 00000000..3ba741b3
--- /dev/null
+++ b/config
@@ -0,0 +1,207 @@
+# Sample Configuration file for the Internet Junkbuster 2.0
+
+#
+# $Id: config,v 1.2 2001/04/30 03:05:11 rodney Exp $
+#
+
+#
+#
+# Copyright 1997-8 Junkbusters Corp. For distribution, modification and use
+# under the GNU General Public License. These files come with NO WARRANTY.
+# See http://www.junkbusters.com/ht/en/gpl.html or README file for details.
+#
+# When starting the proxy, give the name of this file as an argument.
+# Any changes made to this file are *not* automatically loaded; you have
+# to stop and restart the proxy.
+
+# For information see http://www.junkbusters.com/ht/en/ijbman.html
+# or the documentation that came with the release
+
+# Lines beginning with a # character are comments; they are ignored.
+# Many example lines are provided here commented out
+
+# the blockfile contains patterns to be blocked by the proxy
+blockfile ./blocklist # comments are OK here, too
+
+# the imagefile contains patterns to detect blocked images
+imagefile ./imagelist
+
+# the popfile contains patterns of servers where javascript popups are disabled
+#
+# if the next line is not commented out, all javascript popups from the sites
+# that match the patterns in popup will be blocked
+# popupfile ./popup
+
+# File containing content modification rules
+#re_filterfile ./re_filterfile
+
+# Uncomment to filter *all* traffic. Default is to
+# filter only if we wouldn't send a cookie either.
+#
+#re_filter_all
+
+
+# the cookiefile contains patterns to specify the cookie management policy
+#
+cookiefile ./cookiefile
+
+# the logfile is where all logging and error messages are written
+#
+logfile ./junkbuster.log
+
+# the jarfile is where cookies can be stored
+#
+#jarfile ./jarfile
+
+# the forwardfile defines domain-specific routing
+#
+#forwardfile ./forward
+
+# file which lists and into which trusted domains are written
+#
+#trustfile ./trust
+# files specify locations of "for information about trusted referers, see.."
+# multiple trust_info_url lines are OK
+#
+# trust_info_url http://internet.junkbuster.com/
+# trust_info_url http://www.yoursite.com/our_trust_policy.html
+#
+
+# The access control list file can be used to restrict IP addresses
+# that are permitted to use the proxy (see warnings in the FAQ).
+#
+#aclfile ./aclfile
+
+# add an "X-Forwarded-For:" specification to each request header
+#
+#add-forwarded-header
+
+# if logging cookies into a jarfile, and no other wafers were
+# explicity set, then by default a vanilla wafer is sent with
+# each request.
+#
+# setting 'suppress-vanilla-wafer' stops this vanilla wafer from
+# being sent.
+#
+suppress-vanilla-wafer
+
+# add these wafers to each request header
+# multiple wafer lines are OK
+#
+#wafer NOTE=Like most people, I want my browsing to be anonymous.
+#wafer WARNING=Please do not attempt to track me.
+
+# Anything can be added to the request headers. Please don't litter.
+# multiple add-header lines are OK
+#
+#add-header Forwarded: by http://stay-out-of-my-backyard.net
+#add-header Forwarded: by http://pro-privacy-isp.net
+#add-header Proxy-Connection: Keep-Alive
+
+# listen-address specifies where the Junkbuster will listen for connections
+# Specifying a port is optional; if unspecified the defaults is 8000.
+# Before Version 2.0.2 the default was to bind to all IP addresses (INADDR_ANY)
+# This has been restricted to localhost to avoid unintended security breaches.
+# To open the proxy to all, uncomment the following line:
+#listen-address :8000
+# other example usage:
+#listen-address 124.207.250.245:8080
+# to explicitly state what is now the default:
+#listen-address localhost
+# or equivalently:
+listen-address 127.0.0.1:8000
+
+# user-agent specifies treatment of the "User-Agent:" (and "UA-*:") header(s)
+# default: Forge the "User-Agent:"
+# 'text' : Always send as the "User-Agent:"
+# . : Pass the "User-Agent:" unchanged
+# @ : Pass the "User-Agent:" if the server is in the cookie file,
+# forge the "User-Agent:" otherwise
+#user-agent @
+
+# note: Russian browsers may be confused if user agent misidentifies
+# the operating system (Mac vs Windows); see FAQ
+user-agent .
+
+# referer specifies treatment of the "Referer:" header
+# New option by "Andreas S. Oesterhelt"
+#
+# default: Kill the referrer-header from the client
+# 'text' : Always send as the referrer
+# . : Pass the referrer unchanged
+# @ : Pass the referrer if the server is in the cookie file,
+# kill the referrer otherwise
+# § : Pass the referrer if the server is in the cookie file,
+# send a forged referrer that points to the root-diretory URL
+# of the current request otherwise
+referer §
+
+# from specifies value to be subsituted if browser provides a "From:" header
+#
+#from spam-me-senseless@sittingduck.net
+
+# tinygif allows you to change the appearance of blocked images
+#
+# tinygif 0 # Show a "broken icon"
+# tinygif 1 # Show a GIF of one transparent pixel
+# tinygif 2 # Show a GIF with the word "JUNKBUSTER"
+tinygif 2
+# tinygif 3 http://localhost/1x1.gif # Temporary redirect to this URL
+
+# Andrew added
+# The following can be used to suppress display of the block lists when the
+# page http://x.x/show-proxy-args is displayed. With a long block list this
+# accelerates loading of the configuration page and also hides the contents of
+# the block lists (for whatever reason). Maintainers of junkbuster proxies for
+# multiple use can specify a message for any use who wants to know what is in
+# these files.
+#
+#suppress-blocklists Contact sysadmin@example.com for details.
+# suppress-blocklists
+
+# debug sets the level of debugging information to log in the logfile
+#
+# 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
+#
+# multiple "debug" directives, are OK - they're logical-OR'd together
+#
+#debug 15 # same as setting the first 4 listed above
+debug 1
+#debug 255
+
+# single-threaded operation (i.e. disallows multiple threads or processes)
+# This is most often used for debugging because it keeps the
+# debugging output "in order" for easy reading.
+#
+#single-threaded
+
+# Toggle flag. 0 => disabled, anything else (ie. 1) => enabled
+toggle 1
+
+
+# Win32 GUI specific options. Moved here from ijbw32.ini
+# in hopes of keep all of our config settings together.
+
+activity-animation 1
+log-messages 1
+log-highlight-messages 1
+log-buffer-size 1
+log-max-lines 200
+log-font-name Comic Sans MS
+log-font-size 8
+show-on-task-bar 0
+close-button-minimizes 1
+
+# hide-console is used only on Win32 console mode. It instructs
+# the Internet Junkbuster to disconnect from and hide the
+# command console.
+#
+#hide-console
+
+
diff --git a/config.h b/config.h
new file mode 100644
index 00000000..4d71f86b
--- /dev/null
+++ b/config.h
@@ -0,0 +1,195 @@
+/* config.h. Generated automatically by configure. */
+/* config.h.in. Generated automatically from configure.in by autoheader. */
+#ifndef _CONFIG_H
+#define _CONFIG_H
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/acconfig.h,v $
+ *
+ * Purpose : This file should be the first thing included in every
+ * .c file. (Before even system headers). It contains
+ * #define statements for various features. It was
+ * introduced because the compile command line started
+ * getting ludicrously long with feature defines.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: acconfig.h,v $
+ *
+ *********************************************************************/
+
+
+/* Define to empty if the keyword does not work. */
+/* #undef const */
+
+/* Define to `unsigned' if doesn't define. */
+/* #undef size_t */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/*
+ * Version number - Major (X._._)
+ */
+#define VERSION_MAJOR 2
+
+/*
+ * Version number - Minor (_.X._)
+ */
+#define VERSION_MINOR 9
+
+/*
+ * Version number - Point (_._.X)
+ */
+#define VERSION_POINT 3
+
+/*
+ * Version number, as a string
+ */
+#define VERSION "2.9.3"
+
+/*
+ * Regular expression matching for URLs. (Highly recommended). If this is
+ * not defined then you can ony use prefix matching.
+ */
+#define REGEX 1
+
+/*
+ * Allow JunkBuster to be "disabled" so it is just a normal non-blocking
+ * non-anonymizing proxy. This is useful if you're trying to access a
+ * blocked or broken site - just change the setting in the config file
+ * and send a SIGHUP (UN*X), or use the handy "Disable" menu option (Windows
+ * GUI).
+ */
+#define TOGGLE 1
+
+/*
+ * Enables arbitrary content modification regexps
+ */
+#define PCRS 1
+
+/*
+ * If a stream is compressed via gzip (Netscape specific I think), then
+ * it cannot be modified with Perl regexps. This forces it to be
+ * uncompressed.
+ */
+#define DENY_GZIP 1
+
+/*
+ * Enables statistics function.
+ */
+#define STATISTICS 1
+
+/*
+ * Bypass filtering for 1 page only
+ */
+#define FORCE_LOAD 1
+
+/*
+ * Split the show-proxy-args page into a page for each config file.
+ */
+#define SPLIT_PROXY_ARGS 1
+
+/*
+ * Kills JavaScript popups - window.open, onunload, etc.
+ */
+#define KILLPOPUPS 1
+
+/*
+ * Support for webDAV - e.g. so Microsoft Outlook can access HotMail e-mail
+ */
+#define WEBDAV 1
+
+/*
+ * Detect image requests automatically for MSIE. Will fall back to
+ * other image-detection methods (i.e. USE_IMAGE_LIST) for other
+ * browsers.
+ *
+ * It detects the following header pair as an image request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: * / *
+ *
+ * And the following as a HTML request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *
+ *
+ * And no, I haven't got that backwards - IE is being wierd.
+ *
+ * Known limitations:
+ * 1) If you press shift-reload on a blocked HTML page, you get
+ * the image "blocked" page, not the HTML "blocked" page.
+ * 2) Once an image "blocked" page has been sent, viewing it
+ * in it's own browser window *should* bring up the HTML
+ * "blocked" page, but it doesn't. You need to clear the
+ * browser cache to get the HTML version again.
+ *
+ * These limitations are due to IE making inconsistent choices
+ * about which "Accept:" header to send.
+ */
+#define DETECT_MSIE_IMAGES 1
+
+/*
+ * Use image list to detect images.
+ * If you do not define this then everything is treated as HTML.
+ *
+ * Whatever the setting of this value, DETECT_MSIE_IMAGES will
+ * override it for people using Internet Explorer.
+ */
+#define USE_IMAGE_LIST 1
+
+/*
+ * Allows the use of ACL files to control access to the proxy by IP address.
+ */
+#define ACL_FILES 1
+
+/*
+ * Allows the use of trust files.
+ */
+#define TRUST_FILES 1
+
+/*
+ * Allows the use of jar files to capture cookies.
+ */
+#define JAR_FILES 1
+
+/*
+ * Use PCRE rather than GNU Regex
+ */
+#define PCRE 1
+
+/* Define if you have the bcopy function. */
+#define HAVE_BCOPY 1
+
+/* Define if you have the memmove function. */
+#define HAVE_MEMMOVE 1
+
+/* Define if you have the strerror function. */
+#define HAVE_STRERROR 1
+
+#endif /* _CONFIG_H */
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 00000000..930ca660
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,194 @@
+/* config.h.in. Generated automatically from configure.in by autoheader. */
+#ifndef _CONFIG_H
+#define _CONFIG_H
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/acconfig.h,v $
+ *
+ * Purpose : This file should be the first thing included in every
+ * .c file. (Before even system headers). It contains
+ * #define statements for various features. It was
+ * introduced because the compile command line started
+ * getting ludicrously long with feature defines.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: acconfig.h,v $
+ *
+ *********************************************************************/
+
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define to `unsigned' if doesn't define. */
+#undef size_t
+
+/* Define if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/*
+ * Version number - Major (X._._)
+ */
+#undef VERSION_MAJOR
+
+/*
+ * Version number - Minor (_.X._)
+ */
+#undef VERSION_MINOR
+
+/*
+ * Version number - Point (_._.X)
+ */
+#undef VERSION_POINT
+
+/*
+ * Version number, as a string
+ */
+#undef VERSION
+
+/*
+ * Regular expression matching for URLs. (Highly recommended). If this is
+ * not defined then you can ony use prefix matching.
+ */
+#undef REGEX
+
+/*
+ * Allow JunkBuster to be "disabled" so it is just a normal non-blocking
+ * non-anonymizing proxy. This is useful if you're trying to access a
+ * blocked or broken site - just change the setting in the config file
+ * and send a SIGHUP (UN*X), or use the handy "Disable" menu option (Windows
+ * GUI).
+ */
+#undef TOGGLE
+
+/*
+ * Enables arbitrary content modification regexps
+ */
+#undef PCRS
+
+/*
+ * If a stream is compressed via gzip (Netscape specific I think), then
+ * it cannot be modified with Perl regexps. This forces it to be
+ * uncompressed.
+ */
+#undef DENY_GZIP
+
+/*
+ * Enables statistics function.
+ */
+#undef STATISTICS
+
+/*
+ * Bypass filtering for 1 page only
+ */
+#undef FORCE_LOAD
+
+/*
+ * Split the show-proxy-args page into a page for each config file.
+ */
+#undef SPLIT_PROXY_ARGS
+
+/*
+ * Kills JavaScript popups - window.open, onunload, etc.
+ */
+#undef KILLPOPUPS
+
+/*
+ * Support for webDAV - e.g. so Microsoft Outlook can access HotMail e-mail
+ */
+#undef WEBDAV
+
+/*
+ * Detect image requests automatically for MSIE. Will fall back to
+ * other image-detection methods (i.e. USE_IMAGE_LIST) for other
+ * browsers.
+ *
+ * It detects the following header pair as an image request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: * / *
+ *
+ * And the following as a HTML request:
+ *
+ * User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
+ * Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *
+ *
+ * And no, I haven't got that backwards - IE is being wierd.
+ *
+ * Known limitations:
+ * 1) If you press shift-reload on a blocked HTML page, you get
+ * the image "blocked" page, not the HTML "blocked" page.
+ * 2) Once an image "blocked" page has been sent, viewing it
+ * in it's own browser window *should* bring up the HTML
+ * "blocked" page, but it doesn't. You need to clear the
+ * browser cache to get the HTML version again.
+ *
+ * These limitations are due to IE making inconsistent choices
+ * about which "Accept:" header to send.
+ */
+#undef DETECT_MSIE_IMAGES
+
+/*
+ * Use image list to detect images.
+ * If you do not define this then everything is treated as HTML.
+ *
+ * Whatever the setting of this value, DETECT_MSIE_IMAGES will
+ * override it for people using Internet Explorer.
+ */
+#undef USE_IMAGE_LIST
+
+/*
+ * Allows the use of ACL files to control access to the proxy by IP address.
+ */
+#undef ACL_FILES
+
+/*
+ * Allows the use of trust files.
+ */
+#undef TRUST_FILES
+
+/*
+ * Allows the use of jar files to capture cookies.
+ */
+#undef JAR_FILES
+
+/*
+ * Use PCRE rather than GNU Regex
+ */
+#undef PCRE
+
+/* Define if you have the bcopy function. */
+#undef HAVE_BCOPY
+
+/* Define if you have the memmove function. */
+#undef HAVE_MEMMOVE
+
+/* Define if you have the strerror function. */
+#undef HAVE_STRERROR
+
+#endif /* _CONFIG_H */
diff --git a/configure b/configure
new file mode 100755
index 00000000..6c620ec3
--- /dev/null
+++ b/configure
@@ -0,0 +1,1968 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.13
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ --enable-mingw32 Use mingw32 for a Windows GUI"
+ac_help="$ac_help
+ --disable-regex Don't allow regular expressions in the blockfile"
+ac_help="$ac_help
+ --disable-pcre-regex Use old, slow GNU Regex instead of PCRE."
+ac_help="$ac_help
+ --disable-toggle Don't support temporary disable"
+ac_help="$ac_help
+ --disable-pcrs Don't support arbitrary content modification"
+ac_help="$ac_help
+ --disable-force Don't allow blockfle to be bypassed"
+ac_help="$ac_help
+ --disable-killpopup Never block popups"
+ac_help="$ac_help
+ --disable-stats Don't keep statistics"
+ac_help="$ac_help
+ --disable-split-proxy-args One big show-proxy-args page, not one per file."
+ac_help="$ac_help
+ --disable-webdav Don't support WebDAV. This option stops MS Outlook
+ Express from accessing HotMail e-mail."
+ac_help="$ac_help
+ --disable-ie-images Don't auto-detect whether a request from MS Internet
+ Explorer is for an image or HTML."
+ac_help="$ac_help
+ --disable-image-list Don't try to figure out whether a request is for an
+ image or HTML using the imagelist - assume HTML."
+ac_help="$ac_help
+ --disable-acl-files Prevents the use of ACL files to control access to
+ the proxy by IP address."
+ac_help="$ac_help
+ --disable-trust-files Prevents the use of trust files."
+ac_help="$ac_help
+ --disable-jar-files Prevents the use of jar files to capture cookies."
+ac_help="$ac_help
+ --disable-static-pcre Link dynamically with the pcre and pcreposix
+ libraries. You must build the libraries seperately."
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.13"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=jcc.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+VERSION_MAJOR=2
+VERSION_MINOR=9
+VERSION_POINT=3
+
+
+
+
+
+cat >> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <&6
+echo "configure:592: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:622: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_prog_rejected=no
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ if test -z "$CC"; then
+ case "`uname -s`" in
+ *win32* | *WIN32*)
+ # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:673: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="cl"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+ ;;
+ esac
+ fi
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:705: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 716 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:747: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:752: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+else
+ ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:780: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+else
+ ac_cv_prog_cc_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:812: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -E"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:833: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:850: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -nologo -E"
+ cat > conftest.$ac_ext <
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
+else
+ ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+
+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+echo "configure:893: checking for mingw32 environment" >&5
+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_mingw32=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_mingw32=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_mingw32" 1>&6
+MINGW32=
+test "$ac_cv_mingw32" = yes && MINGW32=yes
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:922: checking for Cygwin environment" >&5
+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_cygwin=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_cygwin=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_cygwin" 1>&6
+CYGWIN=
+test "$ac_cv_cygwin" = yes && CYGWIN=yes
+
+
+echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
+echo "configure:957: checking for executable suffix" >&5
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
+ ac_cv_exeext=.exe
+else
+ rm -f conftest*
+ echo 'int main () { return 0; }' > conftest.$ac_ext
+ ac_cv_exeext=
+ if { (eval echo configure:967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ for file in conftest.*; do
+ case $file in
+ *.c | *.o | *.obj) ;;
+ *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
+ esac
+ done
+ else
+ { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
+ fi
+ rm -f conftest*
+ test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
+fi
+fi
+
+EXEEXT=""
+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
+echo "$ac_t""${ac_cv_exeext}" 1>&6
+ac_exeext=$EXEEXT
+
+echo $ac_n "checking for object suffix""... $ac_c" 1>&6
+echo "configure:988: checking for object suffix" >&5
+if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ rm -f conftest*
+echo 'int i = 1;' > conftest.$ac_ext
+if { (eval echo configure:994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ for ac_file in conftest.*; do
+ case $ac_file in
+ *.c) ;;
+ *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;;
+ esac
+ done
+else
+ { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; }
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_objext" 1>&6
+OBJEXT=$ac_cv_objext
+ac_objext=$ac_cv_objext
+
+
+
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+echo "configure:1014: checking for ANSI C header files" >&5
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <
+#include
+#include
+#include
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ ac_cv_header_stdc=yes
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+cat > conftest.$ac_ext <
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "memchr" >/dev/null 2>&1; then
+ :
+else
+ rm -rf conftest*
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+cat > conftest.$ac_ext <
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "free" >/dev/null 2>&1; then
+ :
+else
+ rm -rf conftest*
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+if test "$cross_compiling" = yes; then
+ :
+else
+ cat > conftest.$ac_ext <
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+if { (eval echo configure:1094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ :
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_header_stdc=no
+fi
+rm -fr conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+ cat >> confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:1119: checking for working const" >&5
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:1173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_c_const=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_c_const=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+ cat >> confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+echo $ac_n "checking for size_t""... $ac_c" 1>&6
+echo "configure:1194: checking for size_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <
+#if STDC_HEADERS
+#include
+#include
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+ rm -rf conftest*
+ ac_cv_type_size_t=yes
+else
+ rm -rf conftest*
+ ac_cv_type_size_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_size_t" 1>&6
+if test $ac_cv_type_size_t = no; then
+ cat >> confdefs.h <<\EOF
+#define size_t unsigned
+EOF
+
+fi
+
+
+for ac_func in strerror bcopy memmove
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:1230: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <&6
+fi
+done
+
+
+
+# Check whether --enable-mingw32 or --disable-mingw32 was given.
+if test "${enable_mingw32+set}" = set; then
+ enableval="$enable_mingw32"
+ if test $enableval = yes; then
+ WIN_ONLY=
+ CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ echo "Using mingw32 (Win32 GUI)"
+ else
+ WIN_ONLY=#
+ if test "$CYGWIN" = "yes"; then
+ CYGWIN_FLAGS="-mno-win32"
+ echo "Using Cygnus (Win32 command line)"
+ else
+ CYGWIN_FLAGS=
+ fi
+ fi
+else
+ if test "$MINGW32" = "yes"; then
+ WIN_ONLY=
+ CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ echo "Using mingw32 (Win32 GUI)"
+ else
+ WIN_ONLY=#
+ if test "$CYGWIN" = "yes"; then
+ CYGWIN_FLAGS="-mno-win32"
+ echo "Using Cygnus (Win32 command line)"
+ else
+ CYGWIN_FLAGS=
+ fi
+ fi
+fi
+
+
+
+
+
+SOLARIS_ONLY=#
+
+
+
+
+GNU_REGEX_ONLY=
+PCRE_REGEX_ONLY=
+NO_REGEX_ONLY=#
+
+# Check whether --enable-regex or --disable-regex was given.
+if test "${enable_regex+set}" = set; then
+ enableval="$enable_regex"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define REGEX 1
+EOF
+
+else
+ NO_REGEX_ONLY=
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=#
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define REGEX 1
+EOF
+
+fi
+
+
+# Check whether --enable-pcre-regex or --disable-pcre-regex was given.
+if test "${enable_pcre_regex+set}" = set; then
+ enableval="$enable_pcre_regex"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define PCRE 1
+EOF
+
+ GNU_REGEX_ONLY=#
+else
+ PCRE_REGEX_ONLY=#
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define PCRE 1
+EOF
+
+ GNU_REGEX_ONLY=#
+
+fi
+
+
+
+
+
+
+
+
+# Check whether --enable-toggle or --disable-toggle was given.
+if test "${enable_toggle+set}" = set; then
+ enableval="$enable_toggle"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define TOGGLE 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define TOGGLE 1
+EOF
+
+fi
+
+
+PCRS_ONLY=
+# Check whether --enable-pcrs or --disable-pcrs was given.
+if test "${enable_pcrs+set}" = set; then
+ enableval="$enable_pcrs"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define PCRS 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define DENY_GZIP 1
+EOF
+
+else
+ PCRS_ONLY=#
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define PCRS 1
+EOF
+ cat >> confdefs.h <<\EOF
+#define DENY_GZIP 1
+EOF
+
+fi
+
+
+
+# Check whether --enable-force or --disable-force was given.
+if test "${enable_force+set}" = set; then
+ enableval="$enable_force"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define FORCE_LOAD 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define FORCE_LOAD 1
+EOF
+
+fi
+
+
+# Check whether --enable-killpopup or --disable-killpopup was given.
+if test "${enable_killpopup+set}" = set; then
+ enableval="$enable_killpopup"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define KILLPOPUPS 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define KILLPOPUPS 1
+EOF
+
+fi
+
+
+# Check whether --enable-stats or --disable-stats was given.
+if test "${enable_stats+set}" = set; then
+ enableval="$enable_stats"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define STATISTICS 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define STATISTICS 1
+EOF
+
+fi
+
+
+# Check whether --enable-split-proxy-args or --disable-split-proxy-args was given.
+if test "${enable_split_proxy_args+set}" = set; then
+ enableval="$enable_split_proxy_args"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define SPLIT_PROXY_ARGS 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define SPLIT_PROXY_ARGS 1
+EOF
+
+fi
+
+
+# Check whether --enable-webdav or --disable-webdav was given.
+if test "${enable_webdav+set}" = set; then
+ enableval="$enable_webdav"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define WEBDAV 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define WEBDAV 1
+EOF
+
+fi
+
+
+# Check whether --enable-ie-images or --disable-ie-images was given.
+if test "${enable_ie_images+set}" = set; then
+ enableval="$enable_ie_images"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define DETECT_MSIE_IMAGES 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define DETECT_MSIE_IMAGES 1
+EOF
+
+fi
+
+
+# Check whether --enable-image-list or --disable-image-list was given.
+if test "${enable_image_list+set}" = set; then
+ enableval="$enable_image_list"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define USE_IMAGE_LIST 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define USE_IMAGE_LIST 1
+EOF
+
+fi
+
+
+# Check whether --enable-acl-files or --disable-acl-files was given.
+if test "${enable_acl_files+set}" = set; then
+ enableval="$enable_acl_files"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define ACL_FILES 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define ACL_FILES 1
+EOF
+
+fi
+
+
+# Check whether --enable-trust-files or --disable-trust-files was given.
+if test "${enable_trust_files+set}" = set; then
+ enableval="$enable_trust_files"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define TRUST_FILES 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define TRUST_FILES 1
+EOF
+
+fi
+
+
+# Check whether --enable-jar-files or --disable-jar-files was given.
+if test "${enable_jar_files+set}" = set; then
+ enableval="$enable_jar_files"
+ if test $enableval = yes; then
+ cat >> confdefs.h <<\EOF
+#define JAR_FILES 1
+EOF
+
+fi
+else
+ cat >> confdefs.h <<\EOF
+#define JAR_FILES 1
+EOF
+
+fi
+
+
+LIBRARY_PCRE_ONLY=#
+STATIC_PCRE_ONLY=
+# Check whether --enable-static-pcre or --disable-static-pcre was given.
+if test "${enable_static_pcre+set}" = set; then
+ enableval="$enable_static_pcre"
+ if test $enableval = no; then
+ LIBRARY_PCRE_ONLY=
+ STATIC_PCRE_ONLY=#
+fi
+fi
+
+
+
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS </dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+
+trap 'rm -fr `echo "Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@VERSION_MAJOR@%$VERSION_MAJOR%g
+s%@VERSION_MINOR@%$VERSION_MINOR%g
+s%@VERSION_POINT@%$VERSION_POINT%g
+s%@CC@%$CC%g
+s%@CPP@%$CPP%g
+s%@EXEEXT@%$EXEEXT%g
+s%@OBJEXT@%$OBJEXT%g
+s%@WIN_ONLY@%$WIN_ONLY%g
+s%@CYGWIN_FLAGS@%$CYGWIN_FLAGS%g
+s%@SOLARIS_ONLY@%$SOLARIS_ONLY%g
+s%@GNU_REGEX_ONLY@%$GNU_REGEX_ONLY%g
+s%@PCRE_REGEX_ONLY@%$PCRE_REGEX_ONLY%g
+s%@NO_REGEX_ONLY@%$NO_REGEX_ONLY%g
+s%@PCRS_ONLY@%$PCRS_ONLY%g
+s%@LIBRARY_PCRE_ONLY@%$LIBRARY_PCRE_ONLY%g
+s%@STATIC_PCRE_ONLY@%$STATIC_PCRE_ONLY%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ echo creating $ac_file
+
+ rm -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ echo 'CEOF
+ sed -f conftest.frag conftest.in > conftest.out
+ rm -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+ rm -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ rm -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ rm -f conftest.h
+ else
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ fi
+ rm -f $ac_file
+ mv conftest.h $ac_file
+ fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+
diff --git a/configure.in b/configure.in
new file mode 100644
index 00000000..492d6edc
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,257 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl $Id: configure.in,v 1.2 2001/05/13 22:04:51 administrator Exp $
+dnl
+dnl Written by and Copyright (C) 2001 the SourceForge
+dnl IJBSWA team. http://ijbswa.sourceforge.net
+dnl
+dnl Based on the Internet Junkbuster originally written
+dnl by and Copyright (C) 1997 Anonymous Coders and
+dnl Junkbusters Corporation. http://www.junkbusters.com
+dnl
+dnl This program is free software; you can redistribute it
+dnl and/or modify it under the terms of the GNU General
+dnl Public License as published by the Free Software
+dnl Foundation; either version 2 of the License, or (at
+dnl your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will
+dnl be useful, but WITHOUT ANY WARRANTY; without even the
+dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE. See the GNU General Public
+dnl License for more details.
+dnl
+dnl The GNU General Public License should be included with
+dnl this file. If not, you can view it at
+dnl http://www.gnu.org/copyleft/gpl.html
+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
+AC_INIT(jcc.c)
+AC_CONFIG_HEADER(config.h)
+
+VERSION_MAJOR=2
+VERSION_MINOR=9
+VERSION_POINT=3
+
+AC_SUBST(VERSION_MAJOR)
+AC_SUBST(VERSION_MINOR)
+AC_SUBST(VERSION_POINT)
+
+AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
+AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
+AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
+AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
+
+dnl Checks for programs.
+dnl AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+dnl AC_PROG_INSTALL
+dnl AC_PROG_LN_S
+dnl AC_PROG_MAKE_SET
+dnl RANLIB is for PCRE:
+dnl AC_PROG_RANLIB
+
+AC_MINGW32
+AC_CYGWIN
+AC_EXEEXT
+AC_OBJEXT
+
+dnl Checks for libraries.
+dnl AC_CHECK_LIB(pcre, pcre_compile)
+dnl AC_CHECK_LIB(pcreposix, regcomp, pcre)
+
+dnl Checks for header files.
+AC_HEADER_STDC
+dnl AC_HEADER_SYS_WAIT
+dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
+dnl limits.h is for PCRE:
+dnl AC_CHECK_HEADERS(limits.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_SIZE_T
+
+dnl Checks for library functions.
+dnl AC_TYPE_SIGNAL
+dnl AC_CHECK_FUNC(strstr)
+dnl bcopy and memmove are for PCRE
+AC_CHECK_FUNCS(strerror bcopy memmove)
+
+dnl Build type
+
+AC_ARG_ENABLE(mingw32,
+[ --enable-mingw32 Use mingw32 for a Windows GUI],
+[if test $enableval = yes; then
+ WIN_ONLY=
+ CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ echo "Using mingw32 (Win32 GUI)"
+ else
+ WIN_ONLY=#
+ if test "$CYGWIN" = "yes"; then
+ CYGWIN_FLAGS="-mno-win32"
+ echo "Using Cygnus (Win32 command line)"
+ else
+ CYGWIN_FLAGS=
+ fi
+ fi],
+[if test "$MINGW32" = "yes"; then
+ WIN_ONLY=
+ CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ echo "Using mingw32 (Win32 GUI)"
+ else
+ WIN_ONLY=#
+ if test "$CYGWIN" = "yes"; then
+ CYGWIN_FLAGS="-mno-win32"
+ echo "Using Cygnus (Win32 command line)"
+ else
+ CYGWIN_FLAGS=
+ fi
+ fi])
+
+AC_SUBST(WIN_ONLY)
+AC_SUBST(CYGWIN_FLAGS)
+
+SOLARIS_ONLY=#
+AC_SUBST(SOLARIS_ONLY)
+
+dnl Features
+
+dnl Regex engine:
+
+GNU_REGEX_ONLY=
+PCRE_REGEX_ONLY=
+NO_REGEX_ONLY=#
+
+AC_ARG_ENABLE(regex,
+[ --disable-regex Don't allow regular expressions in the blockfile],
+[if test $enableval = yes; then
+ AC_DEFINE(REGEX)
+else
+ NO_REGEX_ONLY=
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=#
+fi],AC_DEFINE(REGEX))
+
+AC_ARG_ENABLE(pcre-regex,
+[ --disable-pcre-regex Use old, slow GNU Regex instead of PCRE.],
+[if test $enableval = yes; then
+ AC_DEFINE(PCRE)
+ GNU_REGEX_ONLY=#
+else
+ PCRE_REGEX_ONLY=#
+fi],[AC_DEFINE(PCRE)
+ GNU_REGEX_ONLY=#
+])
+
+AC_SUBST(GNU_REGEX_ONLY)
+AC_SUBST(PCRE_REGEX_ONLY)
+AC_SUBST(NO_REGEX_ONLY)
+
+
+dnl Other features:
+
+AC_ARG_ENABLE(toggle,
+[ --disable-toggle Don't support temporary disable],
+[if test $enableval = yes; then
+ AC_DEFINE(TOGGLE)
+fi],AC_DEFINE(TOGGLE))
+
+PCRS_ONLY=
+AC_ARG_ENABLE(pcrs,
+[ --disable-pcrs Don't support arbitrary content modification],
+[if test $enableval = yes; then
+ AC_DEFINE(PCRS)
+ AC_DEFINE(DENY_GZIP)
+else
+ PCRS_ONLY=#
+fi],[AC_DEFINE(PCRS) AC_DEFINE(DENY_GZIP)])
+AC_SUBST(PCRS_ONLY)
+
+AC_ARG_ENABLE(force,
+[ --disable-force Don't allow blockfle to be bypassed],
+[if test $enableval = yes; then
+ AC_DEFINE(FORCE_LOAD)
+fi],AC_DEFINE(FORCE_LOAD))
+
+AC_ARG_ENABLE(killpopup,
+[ --disable-killpopup Never block popups],
+[if test $enableval = yes; then
+ AC_DEFINE(KILLPOPUPS)
+fi],AC_DEFINE(KILLPOPUPS))
+
+AC_ARG_ENABLE(stats,
+[ --disable-stats Don't keep statistics],
+[if test $enableval = yes; then
+ AC_DEFINE(STATISTICS)
+fi],AC_DEFINE(STATISTICS))
+
+AC_ARG_ENABLE(split-proxy-args,
+[ --disable-split-proxy-args One big show-proxy-args page, not one per file.],
+[if test $enableval = yes; then
+ AC_DEFINE(SPLIT_PROXY_ARGS)
+fi],AC_DEFINE(SPLIT_PROXY_ARGS))
+
+AC_ARG_ENABLE(webdav,
+[ --disable-webdav Don't support WebDAV. This option stops MS Outlook
+ Express from accessing HotMail e-mail.],
+[if test $enableval = yes; then
+ AC_DEFINE(WEBDAV)
+fi],
+AC_DEFINE(WEBDAV))
+
+AC_ARG_ENABLE(ie-images,
+[ --disable-ie-images Don't auto-detect whether a request from MS Internet
+ Explorer is for an image or HTML.],
+[if test $enableval = yes; then
+ AC_DEFINE(DETECT_MSIE_IMAGES)
+fi],
+AC_DEFINE(DETECT_MSIE_IMAGES))
+
+AC_ARG_ENABLE(image-list,
+[ --disable-image-list Don't try to figure out whether a request is for an
+ image or HTML using the imagelist - assume HTML.],
+[if test $enableval = yes; then
+ AC_DEFINE(USE_IMAGE_LIST)
+fi],
+AC_DEFINE(USE_IMAGE_LIST))
+
+AC_ARG_ENABLE(acl-files,
+[ --disable-acl-files Prevents the use of ACL files to control access to
+ the proxy by IP address.],
+[if test $enableval = yes; then
+ AC_DEFINE(ACL_FILES)
+fi],
+AC_DEFINE(ACL_FILES))
+
+AC_ARG_ENABLE(trust-files,
+[ --disable-trust-files Prevents the use of trust files.],
+[if test $enableval = yes; then
+ AC_DEFINE(TRUST_FILES)
+fi],
+AC_DEFINE(TRUST_FILES))
+
+AC_ARG_ENABLE(jar-files,
+[ --disable-jar-files Prevents the use of jar files to capture cookies.],
+[if test $enableval = yes; then
+ AC_DEFINE(JAR_FILES)
+fi],
+AC_DEFINE(JAR_FILES))
+
+LIBRARY_PCRE_ONLY=#
+STATIC_PCRE_ONLY=
+AC_ARG_ENABLE(static-pcre,
+[ --disable-static-pcre Link dynamically with the pcre and pcreposix
+ libraries. You must build the libraries seperately.],
+[if test $enableval = no; then
+ LIBRARY_PCRE_ONLY=
+ STATIC_PCRE_ONLY=#
+fi])
+AC_SUBST(LIBRARY_PCRE_ONLY)
+AC_SUBST(STATIC_PCRE_ONLY)
+
+AC_OUTPUT(Makefile)
+
diff --git a/cookiefile b/cookiefile
new file mode 100644
index 00000000..f17f4b0c
--- /dev/null
+++ b/cookiefile
@@ -0,0 +1,67 @@
+#
+# This is /etc/junkbuster/cookefile which was put here by a junkbuster rpm
+#
+# Last modified on Sun Jan 31 22:36:03 1999 (CEST)
+#
+# --------------------------------------------------------------------------
+#
+# Newest version is always available from
+#
+# http://www.waldherr.org/cookiefile
+#
+# Read http://www.waldherr.org/junkbuster/update.shtml on how to keep
+# this file up-to-date.
+#
+# For more detail, see http://www.junkbusters.com/ht/en/ijbfaq.html#cookies
+#
+# Empty lines and lines beginning with a # are ignored.
+# To permit an entire site to set cookies, simply include its domain name:
+# really-trustyworthy-people.org
+#
+# You can allow cookies out, but stop them coming in:
+# >send-user-cookies.com
+#
+#>egroups.com
+#>tvguide.com
+#>wired.com/news/
+#americanexpress.com
+#cnn.com
+#www.nytimes.com
+#yahoo.com
+#amazon.de
+#amazon.co.uk
+#slashdot.org
+#www.palmgear.com
+#onelist.com
+#freshmeat.net
+
+# Sites that need cookies
+javasoft.com
+sun.com
+msdn.microsoft.com
+sourceforge.net
+yahoo.com
+anonymizer.com
+
+# Experimenting
+ashleycars.co.uk
+
+# Shopping
+dabs.com
+overclockers.co.uk
+worldpay.com # for quietpc.com
+jungle.com
+scan.co.uk
+
+#Shopping: Micro Warehouse's site
+#inmac.co.uk
+#technomatic.co.uk
+
+# This is stupid. Without these two entries, the link from McAfee's website
+# to their online UK shop gives a 500 server error.
+#mcafee.com
+#mcafeestoreuk.beyond.com
+
+
+
+
diff --git a/cygwin.h b/cygwin.h
new file mode 100644
index 00000000..4568ea82
--- /dev/null
+++ b/cygwin.h
@@ -0,0 +1,63 @@
+#ifndef _CYGWIN_H
+#define _CYGWIN_H
+#define CYGWIN_H_VERSION "$Id: cygwin.h,v 1.1 2001/05/13 21:57:06 administrator Exp $"
+/*********************************************************************
+ *
+ * File : $Source: /home/administrator/cvs/ijb/cygwin.h,v $
+ *
+ * Purpose : The windows.h file seems to be a *tad* different, so I
+ * will bridge the gaps here. Perhaps I should convert the
+ * latest SDK too? Shudder, I think not.
+ *
+ * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * IJBSWA team. http://ijbswa.sourceforge.net
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: cygwin.h,v $
+ *
+ *********************************************************************/
+
+/* Conditionally include this whole file. */
+#ifdef __MINGW32__
+
+/* Hmmm, seems to be overlooked. */
+#define _RICHEDIT_VER 0x0300
+
+/*
+ * Named slightly different ... but not in Cygwin v1.3.1 ...
+ *
+ * #define LVITEM LV_ITEM
+ * #define LVCOLUMN LV_COLUMN
+ */
+
+#endif /* def __MINGW32__ */
+#endif /* ndef _CYGWIN_H */
+
+
+/*
+ Local Variables:
+ tab-width: 3
+ end:
+*/
diff --git a/doc/USER_DOC_IS_WIDELY_OBSOLETED b/doc/USER_DOC_IS_WIDELY_OBSOLETED
new file mode 100644
index 00000000..e69de29b
diff --git a/doc/changes.txt b/doc/changes.txt
new file mode 100644
index 00000000..6aa14820
--- /dev/null
+++ b/doc/changes.txt
@@ -0,0 +1,991 @@
+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 8000 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 (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: README.WIN,v 1.1 2001/04/16 21:10:38 rodney 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 8000 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 (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 " 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 and #include 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 *
+*****************************************************************************
+(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 *
+*****************************************************************************
+
+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 *
+*****************************************************************************
+(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 *
+*****************************************************************************
+(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 *
+*****************************************************************************
+
+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 *
+*****************************************************************************
+
diff --git a/doc/gpl.html b/doc/gpl.html
new file mode 100644
index 00000000..7f0b6107
--- /dev/null
+++ b/doc/gpl.html
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+
+
+
+
+The GNU General Public License
+
+
+
+
+
+
+
+
+
+
+The GPL allows copying and changing of copyrighted documents
+
+
+The Free Software Foundation
+(FSF)
+is a non-profit institution
+that designed the GNU General Public License (GPL) to promote the
+publication of free software.
+The GPL is used by thousands of programmers
+who want to give others the right to copy and modify
+the source code of their programs. Millions of people benefit from this.
+
+The GPL
+can also be used
+on documents written in human languages.
+We give everyone permission to use everything on our web site under the GPL.
+This means that you do not have to break copyright laws in order
+to print a page or email a screen of the text to someone, for example.
+Many sites do not permit you to do these things.
+
+If you have a home page,
+we recommend that you consider using the GPL to
+allow others the right to copy and use all the documents you create for it.
+If you just mark a page as copyright, they won't even
+legally be able to print it.
+If you don't state you are its copyright owner,
+they could change it slightly and claim it as their own property.
+By marking it with both copyright and GPL notices
+you allow them to copy it but not to claim
+anything derived from it as their own.
+
+The
+remainder of this page is the text of the GPL.
+As legal documents go it's relatively clear,
+but unfortunately it's fairly long because it has to cover
+a lot of details specific to computer programs
+that may not be relevant to
+DECLARATIONs.
+The hypertext links are ours, and should not be misinterpreted
+as an indication of emphasis by the FSF.
+
+Everyone
+is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+
+Preamble
+
+
+The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software,
+we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+To protect your rights,
+we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+For example,
+if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+We protect your rights with two steps:
+(1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also,
+for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally,
+any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+GNU General Public License: Terms and Conditions for Copying, Distribution and Modification
+
+
+O.
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter,
+translation
+is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+You may copy
+and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee
+for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+You may modify
+your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+
+You must cause
+the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+You must
+cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+If the modified program
+normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License. (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+
+
+These requirements
+apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus,
+it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition,
+mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+You may copy
+and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+
+Accompany it
+with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+Accompany it with a written offer,
+valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+Accompany it
+with the information you received as to the offer
+to distribute corresponding source code. (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+
+
+The source code
+for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made
+by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+You may not copy,
+modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+You are not required
+to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+Each time you redistribute
+the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+If, as a consequence of a court judgment
+or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion
+of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose
+of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section
+is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+If the distribution
+and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+The Free Software Foundation
+may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+If you wish to incorporate parts
+of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
+THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED
+BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+
+
+Appendix: How to Apply These Terms to Your New Programs
+
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+To do so,
+attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+<one line
+to give the program's name and a brief idea of what it
+does.>
+Copyright (C) 19yy
+<name of
+author>
+
+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.
+
+
+Also add
+information on how to contact you by electronic and paper mail.
+
+Gnomovision version 69, Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+
+
+The hypothetical
+commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer
+(if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+<signature
+of
+Ty Coon>,
+1 April 1989
+
+Ty Coon, President of Vice
+
+
+This General Public License
+does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+What is the Internet Junkbuster Proxy and what does it do for me?
+
+
+The
+Internet Junkbuster
+Proxy
+TM
+is
+free
+privacy-enhancing software that can be run on your PC or by your
+ISP
+or company.
+It blocks requests for
+URLs
+(typically banner ads)
+that match its
+blockfile.
+It also deletes unauthorized
+cookies
+and other
+unwanted identifying
+header information
+that is exchanged between web servers and browsers.
+These headers are not normally accessible to users
+(even though they may contain information that's important to your privacy),
+but with the
+Internet Junkbuster
+you can see almost
+anything you want
+and control everything you're likely to need.
+You
+decide what's junk.
+SM
+Many people
+publish
+their blockfiles to help others get started.
+
+
+
+Is there a license fee / warranty / registration form / expiration?
+
+
+No, none of these.
+It's completely free of charge.
+Junkbusters
+offers you the software to copy, use, modify and distribute
+as you wish, forever, at
+no charge
+under the
+GNU General Public License.
+
+You don't have to register,
+in fact we don't even provide a way to do so:
+the practice of registering software is
+usually just an
+excuse
+to send you solicitations and
+sell your name
+and information about your behavior.
+You are welcome to obtain and use our software as anonymously you wish.
+(Your
+IP
+address will naturally be
+disclosed
+when you download it,
+so if you work for a web ad company
+you might want to use a service such as the
+lpwa.com
+when you get it.
+We
+never
+want to be given any information that you consider private or confidential.)
+
+Does it run on Windows? On a Mac? On the AOL browser?
+
+
+For the latest information on availability, see the
+Distribution Information
+page.
+We
+don't
+think it will ever run on
+Windows 3.1.
+But you don't need to have it running on your computer
+if you get your
+ISP
+or Systems Administrator at
+work
+to run it.
+
+
+
+How can I get my ISP to run the Internet Junkbuster?
+
+
+Try their sales or support department
+(depending on whether you are already a customer).
+You might send them email including the following
+URL:
+
+ http://www.junkbusters.com/ht/en/ijbfaq.html#isps
+
+You could mention that many
+other
+ISPs
+provide it,
+and that you regard it as an important part of your decision on
+where to buy Internet service.
+
+
+
+Who chooses the options that control what is blocked?
+
+
+Whoever starts the
+Internet Junkbuster
+chooses the options and the blockfile.
+If your
+ISP
+runs it for you, they have to make these decision
+(though
+some
+may give you a choice of proxies,
+and a way to suggest new
+URLs
+to block).
+If you run it on your computer,
+You
+decide what's junk.
+SM
+
+
+
+How do I download and run the program on my computer?
+
+How can I tell which blockfile and options are being used?
+
+
+Just point your browser to
+http://internet.junkbuster.com/cgi-bin/show-proxy-args
+or to any
+URL
+ending in
+show-proxy-args
+(even if it doesn't exist).
+It needn't exist because the
+Internet Junkbuster 2.0
+intercepts the request, blocks it,
+and returns in its place
+information about itself.
+Using the
+URL
+above is useful for checking that your browser really is
+going through an
+Internet Junkbuster,
+because the
+junkbuster.com
+server returns a warning if the request actually gets to it.
+Some people set the home page of their browser to such a
+URL
+to be sure that it is configured to use the proxy.
+
+My browser started giving me ``server not responding'' messages
+
+
+Once your browser is told to use a proxy such as the
+Internet Junkbuster,
+it thinks of it as its server for everything,
+so this message means it can't talk to the proxy.
+The
+Internet Junkbuster
+may not be running,
+or you may have specified its proxy
+address
+incorrectly.
+Check that the details you entered are correct.
+If you have
+telnet
+you can try connecting to the appropriate port to see if the
+Internet Junkbuster
+is running.
+If your
+ISP
+is running the
+Internet Junkbuster,
+you may want to check with them.
+If you are running it yourself under
+UNIX ®,
+try looking at a
+ps ax
+to see if it is running.
+The
+port
+specified in its options should be the same one as your
+browser has configured.
+
+
+
+I've got this great idea for a new feature. Who do I tell?
+
+
+We'd be very interested to hear it, but please bear a few things in mind.
+
+We currently have a
+long wish list of things that we may or may not do
+in the near future, including
+a version for your favorite computer and a plug-in version.
+
+If you don't want to wait
+you're welcome to improve on our code, publish your version on the Web,
+and
+tell us
+where to find it.
+Projects that are especially welcome
+include
+a port to the Mac
+and extensions for
+HTTP
+1.1.
+
+
+
+
+My question isn't listed here. Who do I ask for support?
+
+If your
+ISP
+is providing
+the
+Internet Junkbuster
+for you,
+and your question is about how to use it,
+check their web page before asking them.
+
+Even though we don't offer the kind of
+support you might expect if you paid a lot of money for a software product,
+you can still ask us.
+But before you do, please consider whether
+you could ask someone closer to you.
+And please be patient if we're slow to reply: we
+never charge consumers
+for our services,
+so we have to subsidize consumers with revenue from companies,
+and our resources are limited.
+
+If your company or organization
+would be interested in a maintenance contract
+with phone and email support,
+hard copy documentation and source code and pre-compiled binaries on tape
+or disk,
+please
+ask us
+for a quote.
+
+What is the proxy address of the Internet Junkbuster?
+
+
+If you set up
+the
+Internet Junkbuster
+to run on the computer you browse from
+(rather than your
+ISP's server
+or some networked computer at work),
+the proxy will be on
+localhost
+(which is the special name used by every computer on the Internet to
+refer to itself)
+and
+the port will be
+8000
+(unless you have told the
+Internet Junkbuster
+to
+run on a different port with the
+listen-address
+option).
+So you when
+configuring your browser's proxy settings
+you typically enter the word
+localhost
+in the two boxes next to
+
+HTTP
+and
+
+Secure,
+and the number
+8000
+in the two boxes labelled
+to the right of those boxes.
+
+If your
+ISP
+or company is running
+the
+Internet Junkbuster
+for you,
+they will tell you the address to use.
+It will be the name of the computer it's running on
+(or possibly its numeric IP address),
+plus a port number.
+Port 8000 is the default, so assume this number if it is not specified.
+Sometimes a colon is used to glue them together,
+as in
+junkbuster.fictitous-pro-privacy-isp.net:8000
+but
+with most browsers
+you do not type the colon,
+you enter the address and port number in separate boxes.
+
+
+
+How do I tell the browser where to find the Internet Junkbuster?
+
+
+All current browsers can be told the address of a proxy to use.
+You enter the same information in two fields in your browser's proxy
+configuration screen (see list below): one for
+HTTP,
+and one for the Secure Protocol (assuming your browser supports
+SSL).
+If you find some information already entered for your proxy,
+see the
+next question.
+Here are the menus you go through to get to the proxy configuration settings.
+(We also recommend that you
+disable Java,
+which is a separate operation.)
+Make notes on the changes you make so you know how to undo them!
+You will need to know what you did
+in case you wish to
+discontinue
+using the proxy.
+
+
+For
+Netscape
+2.01, 2.02 and 3.0
+[Graphic Illustration]:
+
+Options;
+
+Network Preferences;
+
+Proxies;
+
+Manual Proxy Configuration View ;
+enter
+proxy address details
+under
+
+HTTP
+and
+
+Security Proxy;
+click on
+
+OK;
+click on the next
+
+OK.
+
+With Netscape 2.0,
+follow with
+
+Options,
+
+Save Options.
+
+With Netscape 4.X series, you first have to go through
+
+Edit/Preferences.
+[Graphic Illustration]
+Then in the frame on the left,
+click on triangle pointing to the right towards the word
+
+Advanced;
+it will switch to a triangle pointing down;
+and the words
+
+Cache,
+
+Proxies
+and
+
+Disk Space
+appear.
+Click on
+
+Proxies
+and the frame on the right will
+display a banner saying
+
+Proxies Configure proxies to access the Internet.
+Click the radio button labeled
+
+Manual proxy configuration
+then click the button labeled
+
+View;
+enter
+proxy address details
+under
+
+HTTP
+and
+
+Security Proxy;
+click on
+
+OK;
+click on the next
+
+OK.
+
+For
+Internet Explorer 3.0:
+
+View;
+
+Options;
+
+Connections;
+tick
+
+Connect through proxy server
+box;
+
+Settings;
+enter
+proxy address details
+
+HTTP
+Box, with port number in the second box;
+same with
+
+Secure;
+click on
+
+OK.
+
+On NT for MS-IE:
+
+Control Panel;
+
+Internet;
+
+Advanced;
+
+Proxy.
+
+For MS-IE 4.0: seems to be almost the same as for
+3.0,
+
+View;
+
+Internet Options;
+
+Connections;
+tick
+
+Connect through proxy server
+box;
+
+Settings;
+enter
+proxy address details
+
+HTTP
+Box, with port number in the second box;
+same with
+
+Secure;
+click on
+
+OK.
+Note that 4.0 has
+
+Advanced
+settings to allow
+HTTP
+1.1 through proxies;
+these must be disabled because the proxy does not currently understand
+HTTP
+1.1.
+Please
+tell us
+if you see any other differences.
+
+For
+Opera:
+
+Preferences,
+
+Proxy servers;
+check the box next to HTTP;
+enter the server and port number in the box on the other side;
+click on
+
+OK.
+
+For
+Lynx,
+Mosaic/X,
+Grail,
+and
+W3O
+Arena,
+you can specify the proxy via environment variables
+before starting the application.
+This will probably be done with something like either
+
+ setenv http_proxy http://localhost:8000/
+
+or
+
+ http_proxy=http://junkbuster.fictitous-pro-privacy-isp.net:8000/ export http_proxy
+
+depending on your shell and where the
+Internet Junkbuster
+lives.
+
+If your browser is not listed here,
+or if you notice an error, please
+tell us
+the correct procedure.
+
+
+
+What should I do if I find another proxy is already configured?
+
+
+Some
+ISPs
+and companies require all Web traffic to go through their proxy.
+In this case you would find your proxy configuration with values already set,
+possibly under
+Automatic Proxy Configuration
+(in the case of
+Netscape
+and
+MS-IE 3.0
+and above).
+It's probably a firewall proxy between your company and the outside world,
+or a
+caching proxy
+if you're using an
+ISP.
+
+What needs to be done in this case is to
+use the
+forwardfile
+option
+to tell the
+Internet Junkbuster
+the address of the other proxy.
+Specify a different (unused) port number
+with the
+listen-address
+option,
+and configure your browser to
+use that port.
+If you haven't done this kind of thing before,
+it's probably best to consult your systems administrator or
+ISP
+about it;
+check their web page first.
+
+
+
+What if I want to stop using the Internet Junkbuster?
+
+
+Just go through the same procedure you used to start your
+browser using the
+Internet Junkbuster,
+but remove the details you put in
+(or if there was something there before, restore it).
+You may need to use
+
+Save Options
+to make this change permanent.
+On Netscape 3.0 you can go through
+
+Options;
+
+Network Preferences;
+
+Proxies
+and click on
+
+No Proxy
+to turn it off, and later click on
+
+Manual Proxy Configuration
+if you want to start using it again.
+(No need to enter the again details under
+
+View
+as you did the
+first time;
+they should remain there unchanged.)
+
+Automatic dialing isn't working any more. How do I fix it?
+
+
+Some browsers (such as MSIE-4) can be configured to dial your
+ISP
+automatically when you click on a link,
+but this feature gets disabled if you specify a proxy running on your
+own computer
+(with address
+localhost
+or
+127.0.0.1)
+because these addresses don't require dialing.
+The
+Internet Junkbuster
+knows nothing about dialing, so it doesn't work.
+To make automatic dialing work,
+make up a name such as
+junkbuster.ijb
+and use that name in the proxy settings
+instead of
+localhost,
+and then add the line
+127.0.0.1 junkbuster.ijb
+to the file
+c:\windows\hosts
+(if there already is a line beginning with
+127.0.0.1
+just add
+junkbuster.ijb
+at the end of it.)
+
+Copy the sample configuration file
+(junkbstr.ini,
+previously called
+sconfig.txt
+and other names in earlier releases)
+to some convenient place such as
+/usr/local/lib/junkbuster/configfile
+or whatever you choose.
+The sample file has all the options commented out.
+You can remove the
+#
+character on any that you want, but it may be better to
+leave this until to later.
+Run it asynchronously:
+
+
+ junkbuster configfile &
+
+If you are running a version earlier than 2.0 you can start it with
+junkbuster &
+
+You'll probably want to add an entry to
+/etc/rc.d/rc.local
+or equivalent to start it at boot time.
+(Any output you specify should be redirected to a file.
+And don't forget the
+&
+at the end to run it asynchronously or your system will seize
+up after the next reboot.)
+
+
+
+
+How do I compile the code under Windows?
+
+
+A binary is currently being supplied with the source code,
+but if you prefer to compile it yourself here is the likely procedure.
+Most of these steps are repeated in our checklist for
+installation under Windows.
+
+Run the executable with the command:
+
+ junkbstr
+
+The program will produce a message
+indicating that it has started and is ready to serve.
+
+(Version 2.0.1 and above uses
+the file
+junkbstr.ini
+as the config file
+if it exists and no argument was given. If you have an earlier
+version or if you want it to use a different config file,
+simply specify that file as the argument.)
+
+To have the proxy start itself automatically
+when you login to Win95,
+drop the ``shortcut'' to the
+junkbstr
+executable into the StartUp folder:
+
+ C:\Windows\Start Menu\Programs\StartUp
+
+You might want to change the shortcut's
+Properties->Shortcut
+to
+Run: Minimized.
+If you specify the
+hide-console
+option then the
+DOS
+window will vanish after it starts.
+
+WinNT users can put it into their own
+StartUp folders or the Administrator
+can put it into the system's global StartUp folder.
+For details on how to make this a service under NT
+see our
+Windows page.
+
+
+
+
+How do I check that the proxy is working?
+
+
+Pick a page from somewhere (such as your bookmarks, or just one
+that your browser was pointing to)
+and
+
+Reload
+it.
+If you get a message along the lines of ``server not responding,
+using cached copy instead,'' see the advice
+above.
+If the page reloads OK, check that your browser is actually
+talking to the proxy by going to
+http://internet.junkbuster.com/cgi-bin/show-proxy-args
+or any
+URL
+ending in
+show-proxy-args
+(as described
+below,
+the proxy should intercept the request.)
+When you see ``Internet Junkbuster Proxy Status,''
+you'll know it's working.
+
+
+
+How and why would I have this proxy chained with other proxies?
+
+
+You may need the
+forwarding
+feature to ``daisy chain'' the
+Internet Junkbuster
+to another proxy, perhaps an
+anonymizing
+proxy to
+conceal
+your
+IP
+address,
+or a
+caching proxy
+from your
+ISP,
+or a
+firewall
+proxy between your company and the outside world.
+Version 2.0
+can be even configured to forward
+selectively
+according to the
+URL
+requested:
+for example, connecting directly to trusted hosts,
+but going through an anonymizing or firewall proxy for all other hosts.
+
+An
+ISP's
+caching proxy
+would typically be called something like
+cache.your-isp.net:8080
+(as described on you
+ISP's
+web page);
+you would put this information in your
+forwardfile
+as described in our manual.
+Your browser would be configured to
+the
+Internet Junkbuster
+for
+HTTP
+and Security Proxies as before,
+but you probably want to tell it to use the caching proxy
+for
+FTP
+and other protocols.
+If your
+ISP
+is running
+the
+Internet Junkbuster
+for you,
+they have probably already decided whether to chain with a caching proxy.
+
+
+
+How does the Internet Junkbuster work with SOCKS gateways?
+
+
+There is support for some
+gateways
+in
+Version 1.4
+and above.
+The gateway protocol used to be specified on the command line;
+it is
+now specified
+in the same file as
+forwarding.
+Note that the browser's proxy configuration must
+not
+specify a
+SOCKS
+host;
+it should specify the proxy as described
+above.
+
+
+
+How do I configure it to be just a plain old proxy?
+
+
+To get the proxy to do as little as possible (which means not deleting any
+sensitive headers), place in your
+configuration file the following three lines (each ending in a space
+then a period) to stop it changing sensitive headers:
+
+ referer .
+
+ from .
+
+ user-agent .
+
+ cookiefile mycookiefile
+
+The fourth line is also needed to specify a
+cookiefile
+that might be called
+mycookiefile
+containing a single line with a
+*
+character, to allow all cookies through.
+
+
+
+How do I shut down the proxy (to restart it)?
+
+
+It depends on your platform. Under Windows, use
+
+Ctrl-Break
+in the
+DOS
+window or
+the old three-fingered salute of
+
+Ctrl-Alt-Delete
+and select
+
+End Task.
+Under
+UNIX ®
+you'll need to
+kill
+the
+junkbuster
+process.
+If you don't know the process number to give to
+kill, try this:
+ps ax | grep junkbuster
+
+
+What do advertising companies think of this kind of technology?
+
+
+We've seen only a few public comments from the advertising industry on this,
+other than
+SEC filings.
+First, the president of the Internet Advertising Bureau told
+CNET
+that he wasn't worried by banner blockers.
+Second, after the Federal Trade Commission's
+workshop
+where we gave a live demonstration of our proxy before
+many eminent representatives of the industry,
+the
+Direct Marketing Association
+made the following
+statement in the closing paragraphs
+of their
+summary comments
+to the Commission.
+
+Clever shareware developers have come up with products that
+can obliterate cookies and advertisements for those consumers
+who have these concerns.
+The Internet is a market that is so democratic and flexible
+that it is easy for companies and software
+developers to respond to a perceived market need.
+
+Their attitude seems to be that they would prefer that
+people use technical solutions
+to protect their privacy than have protections
+imposed by legislation or government regulations.
+So, do you perceive a market need?
+Then here are some ways to flex your democratic muscles.
+
+
+
+Should we provide the Internet Junkbuster for our employees?
+
+
+That depends. Try this quick three-point test.
+
+
+Do you want to spend your communications budget
+on bandwidth that wastes your employees' time by forcing them to wait
+for a lot of annoying distractions while they're trying to
+do their jobs?
+
+If the answer to all three questions is yes,
+then you probably don't have any need for this kind of product.
+
+
+
+Can our company get commercial support for the software?
+
+
+Yes,
+ask us
+for a quote on a maintenance contract with your choice of
+phone and email support,
+hard copy documentation,
+source code and pre-compiled binaries on tape or disk,
+and email alerting of upgrades and issues.
+We also offer consulting services to help set up ``stealth browsing''
+capabilities to help reduce the footprints left while doing competitive
+analysis and other Web work where confidentiality is critical.
+
+
+
+I run an ISP. What issues should I consider before offering it?
+
+
+Many
+ISPs
+who offer the proxy to their customers have told us that
+most of their customers are
+delighted with it
+(although one reported that a customer complaint that without banner ads,
+surfing was like reading a novel: we recommend making it optional).
+Many
+ISPs
+like it because it reduces bandwidth requirements.
+To help get you started,
+here's a checklist we've developed from working with a few
+ISPs.
+You may think of more,
+and we'd be interested if you're willing to
+share them
+with us.
+
+
+If you get more than one request for
+the
+Internet Junkbuster
+you may want to tell your customers on your News page that you
+already
+know about it and are assessing it.
+
+Assess the
+level of
+security
+associated with the software.
+If access is to be
+restricted
+(to just dial-in ports, for example)
+how is this to be done?
+
+Consider
+whether to expect any additional load on computing resources required,
+and any change in use of bandwidth due to the blocking of large
+GIFs.
+
+If you run a
+caching proxy,
+decide whether the
+Internet Junkbuster
+will chain with it by default,
+and whether to offer an alternate with no caching.
+(Some
+ISPs
+don't, because they want to give customers an incentive to use caching
+and save bandwidth.)
+
+Decide on a naming scheme for your
+proxies.
+If you're running only one
+proxy on one machine,
+the simplest way is to just use port 8000 on your main machine,
+such as
+our-isp.net.
+But it would probably be safer to put an entry in your name server
+and call it something like
+junkbuster.our-isp.net.
+If running several proxies, you could either use different ports
+on the same machine, or if you have
+the opportunity to distribute the load over
+a few machines
+you could
+use different hostname aliases such as
+banner.junkbuster.our-isp.net,
+lynx.junkbuster.our-isp.net
+and
+oneway.junkbuster.our-isp.net
+(corresponding to the examples in the previous point).
+You may want to set up
+Automatic Proxy Configuration.
+
+The options used,
+and how to view the contents of the blockfile (which you can place on
+your web pages,
+preferably in a file called
+blocklist.html
+or
+blocklist.txt).
+
+An indication
+of whether suggestions for the blocklist are considered,
+and if so, how to submit them: to a particular email address,
+via web-based form, etc.
+
+Instructions
+on how to
+configure a browser.
+You may want to include details for only the two major browsers
+and leave the others to a link.
+
+What's a Proxy Server Server and how can I make money as one?
+
+
+Other organizations with web presence and some bandwidth to spare
+can set up as
+Proxy Server Servers
+
+(PS2s).
+The idea here is to allow users to choose their proxy configuration,
+and provide it to them on a semi-permanent basis.
+Users would fill in a form specifying what options they want in
+their proxy,
+possibly even at a very high level, such as
+``no ads''
+or ``no nudity.''
+This information is sent to a
+CGI
+script that
+configures a proxy, starts it running, and returns its address and port number
+(possibly along with configuration instructions for the browser
+that the user specified.)
+
+Users
+could be charged
+a subscription fee,
+or the service could be thrown in free in the hope of
+improving customer retention for some existing business
+(which is what
+ISPs
+are doing).
+It might be possible to make money by
+inserting new ads in the holes left where others were blocked,
+but the original owners might object.
+PS2s
+could differentiate themselves
+by providing frequently updated and comprehensive
+blocking of ads, or of offensive material based on their own grading system.
+Some content providers might do it for the chance to be the
+only company that the consumer permits to set cookies.
+(Identification could even be done via cookies,
+but this might not be popular with the kind of user who wants a proxy.)
+PS2s
+might sell specific or aggregate information about their
+users' browsing habits,
+so the agreement with users on whether they are permitted to do this
+would be important to both sides.
+
+Where can I get an example blockfile that stops most ads?
+
+
+The sample blockfile we provide blocks almost nothing,
+and we do not publish blockfiles that stop almost all banner ads.
+But others have; you can find them by
+asking Altavista.
+You can add any part of the new file to your old one
+(probably called
+sblock.ini
+if you haven't changed the default name in the latest version)
+or your just replace it completely.
+You
+probably
+don't need to restart the proxy.
+
+If you develop an interesting blocklist and publish it on the Web,
+you might want to include the word ``junkbuster'' in it
+and use the word ``blocklist'' in the file name given in the
+URL
+so that others can find it with the query given in the previous sentence.
+
+
+
+If I see an ad I wish I hadn't, how do I stop it?
+
+
+If your
+ISP
+is running the
+Internet Junkbuster,
+they should have a policy on whether they accept suggestions from
+their customers on what to block. Consult their web page.
+
+If you are running
+the
+Internet Junkbuster
+yourself, you have complete control over what gets through.
+Just add a pattern to cover the offending
+URL
+to your blockfile.
+Version 1.3 and later automatically rereads the blockfile when it changes,
+but if you're running an earlier version you'll
+have to
+stop it
+and restart it.
+
+Some people use the
+debug
+1
+option to display each
+URL
+in a window as the request is sent to the server.
+It's then usually an easy task to pick the offending
+URL
+from the list of recent candidates.
+
+Alternatively,
+you can use
+
+View Document Info
+(or
+
+View Document Source
+if your browser doesn't have that).
+The
+
+Info
+feature has the advantage of showing you the full
+URL
+including the host name,
+which may not be specified in the source:
+there you might see something like
+SRC="/ads/click_here_or_die.gif"
+indicating only the
+path.
+(The host name is assumed to be the same as the one the page came from.)
+
+But ads often
+come from a different site, in which case you
+might see something like
+SRC="grabem.n.trackem.com/Ad/Infinitum/SpaceID=1666"
+or longer.
+If the company looks like a pure ad warehouse
+(as in the last case),
+you may want to place just its domain name in the blockfile,
+which blocks all
+URLs
+from that site.
+
+If the ad comes from a server
+that you really want some content from,
+you can include enough of the path
+to avoid zapping stuff you might want.
+In the first example above,
+/ads/
+would seem to be enough.
+If you don't include the domain name,
+the pattern applies to all sites,
+so you don't want such patterns
+to be too general:
+for example
+/ad
+would block
+/admin/salaries/
+on your company's internal site.
+
+To speed the blocking of images, some
+UNIX ®
+users create a
+shell script called
+Image:
+containing a line such as
+echo $1 | sed s/http:..// >> $HOME/lib/blockfile
+that adds its argument to the user's blockfile.
+Once an offending image has been be found using
+
+View Document Info
+it's easy to cut-and-paste the line (or part of it) into a shell window.
+The same script can be linked to a file called
+Frame:
+to dealing with framed documents,
+and
+junkbuster:
+to accept the output of the
+debug
+option.
+
+When compiled without the
+regular expressions
+option, the
+Internet Junkbuster
+uses only very simple (and fast) matching methods.
+The pattern
+/banners
+will not stop
+/images/banners/huge.gif
+getting through: you would have to include the pattern
+/images/banners
+or something that matches in full from the left.
+So you can get what you want here,
+the matcher understands
+POSIX
+regular expressions:
+you can use
+/*.*/banners
+to block
+and any
+URL
+containing
+/banners
+(even in the middle of the path).
+(In Versions 1.1 through 1.4
+they were an option at compile time;
+from Version 2.0 they have become the default.)
+Regular expressions give you
+many more features
+than this,
+but if you're not already familiar with them you probably won't
+need to know anything beyond the
+/*.*/
+idiom.
+If you do, a
+man egrep
+is probably a good starting point).
+
+Don't forget the
+/
+(slash)
+at the beginning of the path.
+If you leave it out the line will be interpreted as a domain name,
+so
+ad
+would block all sites from Andorra
+(since
+.ad
+is the two-letter
+country code
+for that principality).
+
+How come this ad is still getting through anyway?
+
+
+If the ad had been displayed before you included its
+URL
+in the blockfile,
+it will probably be held in cache for some time,
+so it will be displayed without the need for any request to the server.
+Using the
+debug
+1
+option to show each
+URL
+as it is fetched is a good way to see exactly what is happening.
+
+How do I stop it blocking a URL that I actually want?
+
+
+You can change the patterns so they don't cover it,
+or use a simple feature in Version 1.1 and later: a line beginning with a
+~
+character means that a
+URL
+blocked by previous patterns that matches the rest of
+the line is let through.
+For example,
+the pattern
+/ad
+would block
+/addasite.html
+but not if followed by
+~/addasite
+in the blockfile.
+Or suppose you want to see everything that comes from
+a site you like, even if it looks like an ad: simply put
+~aSiteYouLike.com
+at the
+end
+of the blockfile.
+(Order is important, because the last matching line wins.)
+
+As well as unblocking
+pages that were unintentionally blocked,
+this feature is useful for unblocking ads from a specific source.
+This might be because you are interested in those particular ones,
+or if you have an explicit agreement to accept certain ads,
+such as those from a free web-based email provider.
+
+
+
+Can I block sites I don't want my children to see?
+
+
+Yes, but remember that
+children who are technically sophisticated enough
+to use the browsers' proxy configuration options
+could of course bypass any proxy.
+This kind of technology can be used as a gentle barrier to remind
+or guide the child,
+but nobody should expect it to replace the parent's role
+in setting and enforcing standards of online behavior for their children.
+
+Some
+ISPs
+are starting to provide specialized proxies to protect children.
+There are two basic approaches: the ``black list'' and the ``white list''
+approach.
+The black list approach allows the child
+to go anywhere not explicitly prohibited; the white list permits visits
+only to sites explicitly designated as acceptable.
+
+It's very easy for
+anyone to
+compile a white list from a page of ``recommended
+kids sites'' and to configure an
+Internet Junkbuster
+to allow access to those sites only.
+If you compile with the
+regex
+option,
+you can place a
+*
+(asterisk) as the first line of the blockfile (which blocks everything),
+and then list
+exceptions
+after that.
+Be careful to make the exception sufficiently broad:
+for example, using
+~www.uexpress.com/ups/comics/ch/
+as the exception for
+Calvin and Hobbes
+would block some of the graphic elements on the page;
+you would probably want a wider exception such as
+~www.uexpress.com/ups/
+to permit them.
+
+Version 2.0 has an experimental feature
+to permit only sites mentioned in a nominated
+trusted site.
+This allows organizations to build lists of sites for kids to browse,
+and the software automatically restricts access to those on the list.
+
+Many filtering
+products
+actually scan for keywords in
+the text of pages they retrieve
+before presenting it,
+but
+the
+Internet Junkbuster
+does not do this.
+Building a perfectly reliable black list system is hard,
+because it's very difficult to state
+in advance
+exactly
+what is obscene or unsuitable.
+For more info see our
+links
+page.
+
+
+
+What do I see when a page or graphic is blocked by the proxy?
+
+
+You usually see a broken image icon,
+but it depends on several factors beyond the proxy's control.
+If asked for a
+URL
+matching its blockfile, the proxy returns an
+HTML
+page containing a message identifying itself
+(currently the two words ``Internet Junkbuster'')
+with a status 202 (Accepted) instead of the usual 200 (OK).
+(Versions 1.X returned an error 404: Forbidden, which caused
+strange behavior in some cases.)
+Status 202 is described in the
+HTTP
+RFC
+as indicating that the request has been accepted but not completed,
+and that it might complete successfully in the future
+(in our case, if the blockfile were changed).
+
+The broken image icon is most common
+because the browser is usually expecting a graphic.
+But if it was expecting text, or if the page happens to be using certain
+HTML
+extensions
+such as
+layer
+and your browser is a late model from Microsoft,
+you may see the words ``Internet Junkbuster'' displayed as a hot link.
+
+Clicking on the link takes you to an explanation of
+the pattern in the blockfile that caused the block,
+so that you can edit the blockfile and go back and reload if you really
+want to see what was blocked. The explanatory link is generated by
+the proxy and is automatically intercepted based on its ending in
+ij-blocked-url;
+even though the site is specified as
+http://internet.junkbuster.com
+no request should actually made to that site.
+If one is, it means that the proxy was been removed after it
+generated the link.
+
+To summarize:
+the identifying link to the blocking explanation
+is usually turned into a broken image icon,
+but it may be displayed on a page alone,
+or they may may be restricted to the particular frame, layer or graphic area
+specified in the page containing them.
+The proxy has no way of knowing the context in which a
+URL
+will be used and cannot control how the blocking message will be rendered.
+
+
+
+Why not replace blocked banners with something invisible?
+
+
+Many users have suggested to us
+that blocked banners should be replaced by a something like a
+1x1 transparent
+GIF
+to make the page would look as if there was nothing ever there.
+Apart from making it harder to catch unintended blocking,
+this might also displease the owners of the page,
+who could argue that such a change constitutes a copyright infringement.
+We think that merely failing to allow an included graphic to be accessed
+would probably not be considered an infringement:
+after all this is what happens when a browser
+is configured not to load images automatically.
+However, we are
+not
+lawyers,
+so anyone in doubt should take appropriate advice.
+
+In a context where the copyright issue is resolved
+satisfactorily,
+a proxy could simply return a status 301 or 302 and
+specify a replacement
+URL
+in a
+Location
+and/or
+URI
+header.
+An alternative would be to use inline code to return a
+1 x 1 clear
+GIF.
+We do not publish sample code for this,
+and we have no way of stopping
+others
+who have.
+
+
+
+Why not block banners based on the dimensions of the image?
+
+
+Many users have pointed out that most banner ads come in standard sizes,
+so why not block all
+GIFs
+of those sizes?
+This would theoretically be without fetching the object
+because the dimensions are usually given in the
+IMG
+tag,
+but it would require substantial changes in the code,
+and we doubt whether it would be much more effective than a good block list.
+
+
+
+What about non-graphic advertising within the pages I want?
+
+
+The
+Internet Junkbuster
+deliberately
+does not provide a way of automatically editing the contents of a page,
+to remove textual advertising or
+to repair the holes left by blocked banners.
+Other packages such as
+WebFilter
+do.
+
+For the same reason,
+it has no way of stopping a new browser
+window being created, because this is done through the
+target
+attribute in the
+<a>
+and
+<base>
+elements,
+not through headers.
+Nor do we plan to add a feature to
+paralyze animated
+GIFs.
+
+
+
+Does it block ads on the broadcasting ``push'' systems? How about pop-up ads?
+
+
+We haven't tried it but we expect it would probably
+work on image ads on push channels.
+See also
+adchoice.
+
+Disabling
+Javascript
+stops some pop-up ads.
+One problem is that some advertisers throw open a new
+browser window to frame the ad. The ad is easily blocked,
+but the empty window remains. You can kill it easily, but this is a chore.
+We don't see how to stop them other than editing the
+HTML
+from the parent window, which we
+don't
+like to do.
+
+The
+TBTF
+newsletter warned subscribers to push information that
+in IE4,
+LOGTARGET
+allows
+servers to determine the
+URLs
+viewed at their site even if accessed from cache or through a proxy.
+If you use this browser see our instructions on
+how to disable
+this.
+
+Might some cookies still get through? How can I stop them?
+
+
+Yes, you should expect the occasional cookie to make it through to your browser.
+We know of at least three ways this can happen;
+please
+tell us
+if you find any others.
+One way is in secure documents, which are explained
+below.
+
+A
+few
+sites set cookies using a line such as
+<META HTTP-EQUIV="Set-Cookie" CONTENT="flavor=chocolate">
+in the
+HEAD
+section of an
+HTML
+document.
+Cookies can also be
+
+set and read
+in
+JavaScript.
+To see if this is happening in a document,
+view its source, look in the
+head
+for a section tagged
+script language="JavaScript".
+If it contains a reference to
+document.cookie,
+the page can manipulate your cookie file without sending any cookie headers.
+The
+Internet Junkbuster
+does not tamper with these methods.
+Fortunately they are rarely used at the moment.
+If a cookie gets set, it should be stopped
+by the proxy on its way back to the server when a page is requested,
+but it can still be read in Javascript.
+bu
+
+Exactly how do cookies get created and stored anyway?
+
+
+When a web site's server sends you a page it also sends
+certain ``header information'' which your browser records but does not display.
+One of these is a
+Set-Cookie
+header, which specifies the cookie information that the server wants your browser to record.
+Similarly, when your browser requests a page it also sends headers, specifying
+information such as the graphics formats it understands.
+If a cookie has previously been set by a site that matches the
+URL
+it is about to request,
+your browser adds a
+Cookie
+header quoting the previous information.
+
+If cookies can't get through, will some things stop working for me?
+
+
+Possibly.
+Some personalized services including certain
+
+chat
+rooms
+require cookies.
+Newspapers that require
+
+registration
+or
+
+subscription
+will not automatically recognize you if you don't send them the cookie they
+assigned you. And there are a very small number of sites that do
+strange things with cookies; they don't work for anyone that blocks
+cookies by any means.
+Some sites such as
+Microsoft
+explain that their content is so wonderfully compelling that
+they will withhold it from you unless you submit to their
+inserting cookies.
+
+It's possible to let cookies out but not in,
+which is enough to keep some sites happy, but not all of them:
+one newspaper site seems to go into an endless frenzy
+if deprived of fresh cookies.
+A cookiefile containing
+a single line consisting of the two characters
+>*
+(greater-than and star) permits server-bound cookies only.
+The
+*
+is a
+wildcard
+that matches all domains.
+
+If someone else is running the
+Internet Junkbuster
+for you and has a version
+that
+
+passes server-bound cookies through,
+you can try editing your browser's cookie
+file to contain just the ones you want,
+and restart your browser.
+To subscribe to a new service like this
+after you have started using the
+Internet Junkbuster,
+you can try the following:
+tell your browser to
+stop using
+the
+Internet Junkbuster,
+fill out and submit your subscription details
+(allowing that web site to set a cookie),
+then
+reconfigure your browser to use the
+Internet Junkbuster
+again
+(and stop more cookies being sent).
+This also requires the
+cookiefile
+option,
+and its success depends on the Web site
+not wanting to change your cookies at every session.
+For this reason it does not work at some major newspaper sites, for example.
+But you may prefer to
+look at whether other sites provide the same
+or better services without demanding the opportunity
+to track your behavior.
+The web is a buyer's market where most prices are zero:
+very few people pay
+for content with money, so why should you pay with your privacy?
+
+
+
+Can I control cookies on a per-site basis?
+
+
+Yes, since version 1.2 the
+Internet Junkbuster
+has included advanced cookie management facilities.
+Unless you specify otherwise,
+cookies are discarded (``crumbled'') by the
+Internet Junkbuster
+whether they came from the server or the browser.
+In Version 1.2 and later you can
+use the
+cookiefile
+option
+to specify when cookies are to be passed through intact.
+It uses the same syntax and
+matching
+algorithm as the blockfile.
+
+If the
+URL
+matches a pattern in the
+cookiefile
+then cookies are let through in both the browser's request for the
+URL
+and in the server's response.
+One-way permissions can be
+specified by starting the line with the
+>
+or
+<
+character.
+For example, a cookiefile consisting of the four lines
+
+ org
+
+ >send-user-cookies.org
+
+ <accept-server-cookies.org
+
+ ~block-all-cookies.org
+
+allows cookies to and from
+.org
+domains only, with the following exceptions:
+
+
+Cookies sent from servers in the domain
+send-user-cookies.org
+are blocked on their way to the client,
+but cookies sent by the browser to that domain are still be fed to them.
+
+The cookies of
+accept-server-cookies.org
+check in to the proxy and are passed through to the browser,
+but when they come back to the proxy they never check out.
+
+If
+the
+junkbuster
+was compiled with the regular expressions option
+they may be used in paths.
+Any logging to a
+``cookie jar''
+is separate and not affected.
+
+It's important to give hosts you want to be able
+to set cookies sufficient breadth. For example,
+instead of
+www.yahoo.com
+use
+yahoo.com
+because the company uses many different hosts ending in that domain.
+
+
+
+Can I make up my own fake cookies (wafers) to feed to servers?
+
+
+Yes,
+using the
+wafer
+option.
+We coined the term
+wafer
+to describe cookies chosen by a user,
+not the Web server.
+Servers may not find wafers as tasty as the cookies
+they make themselves.
+But users may enjoy controlling servers' diets for various reasons,
+such as the following.
+
+
+Users who consider cookies to
+be an unwelcome intrusion and a waste
+of their disk space can respond in kind.
+By writing ``signature wafers'' they can
+express their feelings about cookies,
+in a place that the people
+in charge of them are most likely to notice.
+
+Sites running a proxy
+that logs cookies to a file
+(such as the
+Internet Junkbuster
+does with the
+jarfile
+option on)
+may want to notify
+servers that their cookies are being intercepted,
+deleted or copied.
+One possible reason for doing this is the uncertain copyright status
+of cookie strings.
+Nothing
+here should be taken as legal advice: we are simply raising a question
+for any interested parties to consider,
+and make no representation that such measures are necessary or sufficient.
+Concerned proxy sites might decide to send a wafer
+(named ``NOTICE'' for example)
+containing text along the lines of the following.
+
+
+TO WHOM IT MAY CONCERN
+
+
+
+Do not send me any copyrighted information other than the
+document that I am requesting or any of its necessary components.
+
+
+In particular do not send me any cookies that
+are subject to a claim of copyright by anybody.
+Take notice that I refuse to be bound by any license condition
+(copyright or otherwise) applying to any cookie.
+
+
+Any company that tries to argue in court that the proxy site
+was breaching their copyright in the cookies would
+be met with the defense that the proxy site gave that company
+the opportunity to protect its copyright by simply
+not sending cookies after receiving the notice.
+
+Cookies can be as long as four thousand characters,
+so there's plenty of space for lawyerly verbosity,
+but white space, commas, and semi-colons are
+prohibited.
+Spaces can be turned into underscores.
+Alternatively,
+a
+URL
+could be sent as the cookie value,
+pointing to a document containing a notice,
+perhaps with a suggestive value such as
+
+http://www.junkbusters.com/ht/en/ijbfaq.html#licenses_on_cookies_refused
+
+But including the notice directly would probably be preferable
+because the addressee does not have to look it up.
+
+The
+Internet Junkbuster 2.0
+currently sends a full notice as a
+``vanilla wafer''
+if cookies are being logged to a cookie jar
+and no other wafers have been specified.
+It can be suppressed with the
+suppress-vanilla-wafer
+option,
+which might be used in situations where there is an established understanding
+between the proxy and all who serve it.
+
+Any wafers specified are sent to
+all sites regardless of the cookiefile.
+They are appended after any genuine cookies,
+to maintain compliance with
+RFC 2109
+in the event that a path was specified for a cookie.
+The
+RFC's provisions regarding the
+$
+character
+(such as the
+Version
+attribute)
+are transparent
+to the proxy; it simply quotes what was recited by the browser.
+
+If you want to send wafers only to specific sites,
+you could try putting them your browser's cookie file in a format
+conforming to the Netscape
+specification,
+and then specify in the proxy's cookiefile that cookies are to be
+sent to
+but not accepted from those sites, so they can't overwrite the file.
+This may work with Netscape but not all other browsers.
+
+
+
+Why would anyone want to save their cookies in a ``cookie jar?''
+
+
+We provided this capability just in case anyone wants it.
+There are a few possible reasons.
+
+
+It's conceivable that
+marketing companies might one day
+buy
+history files and cookie jars from consumers
+in the same way that they currently pay them to fill out survey forms.
+With this information they could
+gather psychographic information,
+see which competitors' sites the consumer has visited,
+and discover what advertising is being targeted at them.
+
+Some consumers might
+employ semi-automated means of sorting through
+their cookie jars, selecting which ones to place in their cookies
+file for use by their browsers.
+Their decisions could be based on payments offered,
+privacy rating systems such as
+TRUSTe
+proposes,
+or their own opinion of the company.
+It could be done manually or with software.
+
+Users may even start ``sharing'' cookies among themselves,
+sending back cookies that servers generated for other visitors.
+Servers that aren't expecting this possibility
+will be misled about their visitors' identities.
+Cookies could be shared among users on a single machine,
+or across continents via
+FTP
+and anonymous remailers.
+Privacy activists may promote
+cookie disinformation campaigns
+as a way to defend the public against abuse.
+If a significant percentage of people send disinformative cookies,
+user tracking via cookies may become less reliable and less used.
+
+ For details
+on how your identity can be revealed while you surf,
+see our page on
+privacy.
+Once you start using
+the
+Internet Junkbuster
+you should find that much of the information
+previously indicated on that page will no longer be provided.
+If the
+REMOTE HOST
+indicating your IP address is too close for comfort,
+see our suggestions
+below
+on how to
+conceal
+your IP address.
+We also recommend that you
+disable JavaScript
+and
+Java.
+
+
+If I use the Internet Junkbuster, will my anonymity be guaranteed?
+
+
+No. Your chances of remaining anonymous are improved,
+but unless you are an expert on Internet security
+it would be safest to assume that everything you do on the Web
+can be attributed to you personally.
+
+The
+Internet Junkbuster
+removes various information about you,
+but it's still possible that web sites can find out who you are.
+Here's one way this can happen.
+
+A few browsers
+disclose the user's email address
+in certain situations, such as when transferring a file by
+FTP.
+The
+Internet Junkbuster 2.0
+does not filter the
+FTP
+stream.
+If you need this feature, or are concerned about the mail handler
+of your browser disclosing your email address,
+you might consider
+products such as
+NSClean.
+
+Browsers downloaded as binaries
+could use non-standard headers to give out any information
+they can have access to: see the manufacturer's license agreement.
+It's impossible to anticipate and prevent every breach of privacy that
+might occur.
+The professionally paranoid prefer browsers available as source code,
+because anticipating their behavior is easier.
+
+
+
+Why should I trust my ISP or Junkbusters with my browsing data?
+
+
+You shouldn't have to trust us, and you certainly don't have to.
+We do not run the proxy as a service,
+where we could observe your online behavior.
+We provide source code so that everyone can see that the proxy isn't
+doing anything sneaky.
+
+You are already trusting your
+ISP
+not to look at an awful lot of information on what you do.
+They probably post a
+privacy policy
+on their site to reassure you.
+If they run a proxy for you, using it could actually
+make it slightly easier for them to monitor you,
+but we doubt that any sane
+ISP
+would try this,
+because if it were discovered customers would desert them.
+
+
+
+What private information from server-bound headers is removed?
+
+
+The
+Internet Junkbuster
+pounces on the following
+HTTP
+headers in requests to servers,
+unless instructed otherwise in the options.
+
+
+The
+FROM
+header,
+which a few browsers use to tell your email address to servers,
+is dropped
+unless the
+from
+option is set.
+
+The
+USER_AGENT
+header
+is changed to indicate that the browser is
+currently Mozilla (Netscape) 3.01 Gold
+with an unremarkable Macintosh configuration.
+Misidentification helps resist certain
+attacks.
+If your browser and hardware happen to be accurately identified,
+you might want to change the default.
+(Earlier versions of the
+Internet Junkbuster
+indicated different details;
+by altering them periodically we aim to hinder anyone trying to
+infer
+whether our proxy is present.)
+If you don't like the idea
+of incorrectly identifying your computer as a Mac,
+set it accordingly.
+
+
+The
+REFERER
+header
+(which indicates where the
+URL
+currently being requested was found)
+is dropped.
+A single static referer to replace all
+real referers may be specified using the
+referer
+option.
+Where no referer is provided by the browser, none is added;
+the
+add-header
+option with arguments such as
+-x 'Referer: http://me.me.me'
+can be used to send a bogus referer with every request.
+
+In
+Version 1.4
+and later you can use the
+-r @
+option to selectively disclose
+REFERER
+and
+USER_AGENT
+to only those sites you nominate.
+
+Some browsers
+send Referer and User-Agent information under different non-standard headers.
+The
+Internet Junkbuster 2.0
+stops
+UA
+headers,
+but others may get through.
+This information is also available via JavaScript,
+so
+disable disable
+it.
+Some search engines
+encode the query you typed
+in the
+URL
+that goes to advertisers to target a banner ad at you,
+so you will need to block the ad as well as the referer header,
+unless you want them (and anyone they might
+buy data
+from)
+to know
+everything you ever search for.
+
+Currently no
+HTTP
+response headers (browser bound)
+are removed,
+not even the
+Forwarded:
+or
+X-Forwarded-For:
+headers.
+Nor are any added,
+unless requested.
+We are considering a more flexible header management system for
+a future version.
+
+
+
+Might some things break because header information is changed?
+
+
+Possibly. If used with a browser less advanced than Netscape 3.0 or IE-3,
+indicating an advanced browser
+may encourage pages containing extensions that confuse your browser.
+If this becomes a problem
+upgrade your browser or
+use the
+user-agent
+option to indicate an
+older browser.
+In
+Version 1.4
+and later you can selectively reveal your real browser
+to only those sites you nominate.
+
+Because different browsers
+use different encodings of Russian characters,
+certain web servers convert pages on-the-fly according to the User Agent
+header. Giving a User Agent with the wrong operating system or
+browser manufacturer causes some Russian sites to be garbled;
+Russian surfers should
+change it
+to something closer.
+
+Some
+page access counters
+work by looking at the referer;
+they may fail or break when deprived.
+
+Some sites depend on getting a referer header,
+such as
+uclick.com,
+which serves comic strips
+for many newspaper sites,
+including
+Doonsbury
+for the
+Washington Post.
+(If you click on that last link, you can then get to a page containing
+the strip via the
+same
+URL
+we've linked to under
+Doonsbury,
+but if you click on the
+Doonsbury
+link directly, it gives you an error message suggesting that you
+use a browser that supports referers.)
+In
+Version 1.4
+and later you can use the
+-r @
+option
+and place a line like
+>uclick.com
+in your cookiefile.
+Wired News
+used to use referer to decide whether to add a navigation column to
+the page, but they have changed that.
+
+The weather maps of
+Intellicast
+have been blocked by their server when no referer or cookie is provided.
+You can use the same countermeasure with a line such as
+>208.194.150.32
+(or simply get your weather information
+elsewhere).
+
+How is misidentifying my browser good for security and privacy?
+
+
+Almost
+every
+major release of both leading browsers has contained
+bugs that allow malicious servers to compromise your privacy and security.
+Known bugs are quickly fixed, but millions of copies of the affected
+software remain out there, and yours is probably one of them.
+The
+header
+that normally identifies your browser tells such servers exactly which attacks
+to use against you.
+By misidentifying your browser you reduce the likelihood that they
+will be able to mount a successful attack.
+
+
+
+Does the Internet Junkbuster conceal my IP address?
+
+
+Web sites get the IP address of any proxy or browser they serve pages to.
+If you run the proxy on your own computer the IP address disclosed
+is the same as your browser would, unless you use the
+forwardfile
+option is used to chain to another proxy,
+in which case servers only get the last IP address in the chain.
+Chaining slightly slows browsing of course, but it improves anonymity.
+
+One public proxy that you can
+forward to is
+lpwa.com
+port 8000.
+Read about its privacy-enhancing
+features and the authentication procedures first,
+and note that it blocks
+referer
+in almost all cases,
+as well as some
+other headers.
+
+
+
+How can I set the proxy to remember my LPWA password?
+
+
+After you log in to
+LPWA
+it tells your browser to send a
+Proxy-authorization
+header with each request.
+Whenever you shut down the browser and start again with a new browser,
+you need to log in again.
+If you are the only person using the
+Internet Junkbuster
+proxy, you can avoid repeated logins to
+LPWA
+by telling the
+Internet Junkbuster
+to send the information by placing a line such as
+
+ add-header Proxy-authorization: Basic ZHVtbXk=.
+
+in the configuration file.
+The exact example above
+does not work
+because the code
+ZHVtbXk=.
+is a bogus one that
+LPWA
+would never generate;
+follow the procedure below to generate a valid one.
+
+
+Restart your
+Internet Junkbuster
+with
+debug 8
+so you can see the
+headers.
+
+Find the
+Proxy-authorization
+header from the debug output and paste it
+after the word
+add-header
+into the config file.
+Also change the debug value back again.
+
+This trick is convenient for sole users, but is not suitable when
+more than one person uses the proxy, because they will all get the
+same
+LPWA
+identity.
+
+
+
+Does the Internet Junkbuster thwart identification by identd?
+
+
+We think so,
+provided you are not the user running the
+proxy.
+If your computer (or your
+ISP's)
+is running the
+identd
+demon,
+servers can ask it for the identity of the
+user making the request at time you request a page from them.
+But if you're going through a proxy,
+they will identify the user name associated with the proxy, not you.
+A visit to
+http://ident.junkbusters.com
+lets you see what's happening.
+This test is (quite rightly) blocked by many
+firewalls;
+just interrupt the transfer if you get an abnormal wait after clicking.
+Running other applications
+may also expose you via
+identd;
+the proxy of course doesn't help then.
+
+
+
+Can web sites tell that I'm using the Internet Junkbuster?
+
+
+With the default options the proxy doesn't announce itself.
+Obvious indications such as
+Keep-Alive
+headers are
+deleted,
+but sites might notice that you can cancel cookies faster than
+any human could possibly click on a mouse.
+(If you want to provide a
+plausible explanation for this,
+change the User Agent header to a
+cookie-free
+or
+cookie-crunching
+browser).
+
+But when certain options
+are used they could figure out something's going on,
+even if they're not pushing cookies.
+If you use blocking
+they can tell from their logs that the graphics in their pages
+are not being requested selectively.
+The
+add-forwarded-header
+option explicitly announces to the server that a proxy is present,
+and
+sending them
+wafers
+is of course a dead giveaway.
+
+What happens with Secure Documents (SSL, https:)?
+
+
+If you enter a
+``Secure Document Area,''
+cookies and other header information
+such as User Agent and Referer
+are sent encrypted,
+so they cannot be filtered.
+We recommend getting your browser to alert you when this happens.
+(On Netscape:
+
+Options;
+
+Security;
+
+General;
+
+Show an alert before entering a secure document space.)
+We also recommend adding the line
+:443
+to the blockfile to stop all but sites specified in an exception
+after that line from using SSL.
+
+Will using this as my Security Proxy compromise security?
+
+
+We're not security experts, but we don't think so.
+The whole point of
+SSL
+is that the
+contents of messages are
+
+encrypted
+by the time
+they leave the browser and the server.
+Eavesdroppers (including proxies) can see where your messages are going
+whether you are running a proxy or not,
+but they only get to see the contents after they have been encrypted.
+
+
+
+Can I restrict use of the proxy to a set of nominated IP addresses?
+
+
+Yes, we added an
+access control
+file in Version 2.0.
+But before you use it please consider why you want to do it.
+If the reason is security,
+it probably means you need a firewall.
+
+The
+listen-address
+option provides a way of binding the proxy to a single IP address/port.
+The right way to do this is to choose a port inside your firewall, and
+deny access to it to those outside the firewall.
+The
+Internet Junkbuster
+is not a firewall proxy;
+it should not be expected to solve security problems.
+
+Are there any security risks for ISPs or others who offer the proxy?
+
+
+Yes.
+As with any service offered over the Internet,
+hackers can try to misuse it.
+A well-run
+ISP
+will have professionals who are experienced at assessing and containing
+these risks.
+
+It's possible to set up your machine so
+that other people can have access to your proxy,
+but if you lack expertise in computer security
+you probably shouldn't have your computer configured to offer
+this or any other service to the outside world.
+
+Hackers can attempt to gain access
+to the machine by various attacks,
+which we have tried to guard against but don't guarantee to thwart.
+They can also use the ``anonymizing'' quality of proxies
+to try to cover their tracks while hacking other computers.
+For this reason we recommend preventing it being used
+as an anonymous
+telnet
+by putting the pattern
+:23
+in the blockfile (it's included as standard equipment).
+(Actually the current implementation incidentally blocks telnet due to the
+way headers are handled, but it's best not to rely on this.)
+If you wish to block all ports except the default
+HTTP
+port 80,
+you can put the lines
+
+ :
+
+ ~:80
+
+at the beginning of the blockfile, but be aware that some servers
+run on non-default ports (e.g. 8080). You might also want to add the line
+~:443
+to allow
+SSL.
+
+On
+UNIX ®
+systems it is neither necessary nor desirable for the proxy to run as root.
+
+junkbuster
+is an instrumentable proxy that filters the
+HTTP
+stream between
+web servers and browsers.
+Its main purpose is to enhance privacy.
+
+Versions before 2.0 used command-line options;
+Versions from 2.0 onward use a configuration file.
+The following descriptions of the options first give the older
+command-line usage, then the new configfile line.
+
+In Versions 2.0.1 upwards on Windows,
+a start-up message is printed and the configuration is read from the file
+junkbstr.ini
+if it exists and no argument was given.
+
+All files except the configfile
+are checked for changes before each page is fetched,
+so they may edited without restarting the proxy.
+
+Block
+requests to
+URLs
+matching any pattern given in the lines of the
+blockfile.
+The
+junkbuster
+instead returns status 202, indicating that the request has been accepted
+(though not completed),
+and a
+message identifying itself
+(though the browser may
+display only a broken image icon).
+(Versions before 2.0 returned an error 403 (Forbidden).)
+The syntax of a pattern is
+[domain][:port][/path]
+(the
+http://
+or
+https://
+protocol part is omitted).
+To decide if a pattern matches a target, the domains are compared first,
+then the paths.
+
+To compare the domains,
+the pattern domain and the target
+domain specified in the
+URL
+are each broken into their components.
+(Components are separated by the
+.
+(period) character.)
+Next each of the target components
+is compared with the corresponding pattern component: last with last,
+next-to-last with next-to-last, and so on.
+(This is called
+right-anchored
+matching.)
+If all of the pattern components find their match in the target,
+then the domains are considered a match.
+Case is irrelevant when comparing domain components.
+
+A successfully
+matching pattern can be an anchored substring of a target, but
+not vice versa.
+Thus if a pattern doesn't specify a domain,
+it matches all domains.
+Furthermore, when comparing two components,
+the components must either match in their entirety or up to a wildcard
+*
+(star character) in the pattern. The wildcard feature
+implements only a "prefix" match capability ("abc*" vs. "abcdefg"),
+not suffix matching ("*efg" vs. "abcdefg") or
+infix matching ("abc*efg" vs. "abcdefg").
+The feature is restricted to the domain component;
+it is unrelated to the optional
+regular expression
+feature in the path
+(described below).
+
+If a numeric port
+is specified in the pattern domain, then the target port must
+match as well. The default port in a target is port 80.
+
+If the domain and port match,
+then the target
+URL
+path is checked for
+a match against the path in the pattern.
+Paths are compared with a simple case-sensitive
+left-anchored substring comparison.
+Once again, the pattern can be an
+anchored substring of the target, but not vice versa.
+A path of
+/
+(slash) would match all paths. Wildcards are not considered in
+path comparisons.
+
+For example, the target
+URL
+
+ the.yellow-brick-road.com/TinMan/has_no_brain
+
+would be matched (and blocked) by the following patterns
+
+ yellow-brick-road.com
+
+and
+
+ Yellow*.COM
+
+and
+
+ /TinM
+
+but not
+
+ follow.the.yellow-brick-road.com
+
+or
+
+ /tinman
+
+
+Lines beginning with a
+~
+(tilde) character are taken to be
+exceptions:
+a
+URL
+blocked by previous patterns that matches the rest of
+the line is let through. (The last match wins.)
+
+Patterns
+may contain
+POSIX
+regular expressions
+provided the
+junkbuster
+was compiled with this option
+(the default in Version 2.0 on).
+The idiom
+/*.*/ad
+can then be used
+to match any
+URL
+containing
+/ad
+(such as
+http://nomatterwhere.com/images/advert/g3487.gif
+for example).
+These expressions
+don't work
+in the domain part.
+
+In version 1.3 and later
+the blockfile and cookiefile are checked for changes before each request.
+
+Specifies a pair to be sent as a cookie with every request
+to the server.
+(Such boring cookies are called
+wafers.)
+This option may be called more than once to generate multiple wafers.
+The original
+Netscape specification
+prohibited
+semi-colons, commas and white space;
+these characters will be
+URL-encoded
+if used in wafers.
+
+
+The Path and Domain attributes are not currently supported.
+
+In Version 1.2 and later
+this option must be followed by a
+filename
+containing instructions on which sites are allowed to
+receive and set cookies.
+By default cookies are dropped in both the browser's request
+and the server's response, unless the
+URL
+requested matches an entry in the
+cookiefile.
+The matching algorithm is the same as for the blockfile.
+A leading
+>
+character allows
+server-bound
+cookies only;
+a
+<
+allows only browser-bound cookies;
+a
+~
+character stops cookies in
+both directions.
+Thus a cookiefile containing a single line with the two characters
+>*
+will pass on all cookies to servers but not give any new ones to the browser.
+
+All Set-cookie attempts by the server are
+logged
+to
+jarfile.
+If no wafer is specified,
+one containing a
+canned notice
+(the
+vanilla wafer)
+is added as an alert to the server
+unless the
+suppress-vanilla-wafer
+
+option is invoked.
+
+If the browser
+discloses an email address
+in the
+FROM
+header (most don't),
+replace it with
+from.
+If
+from
+is set to
+.
+(the period character)
+the
+FROM
+is passed to the server unchanged.
+The default is to delete the
+FROM
+header.
+
+Whenever the browser discloses the
+URL
+that
+led to
+the current request,
+replace it with
+referer.
+If
+referer
+is set to
+.
+(period)
+the
+URL
+is passed to the server unchanged.
+In
+Version 1.4
+and later, if referer is set to
+@
+(at) the
+URL
+is sent in cases where the cookiefile
+specifies that a cookie would be sent.
+(No way to send bogus referers selectively is provided.)
+The default is to delete Referer.
+
+Information disclosed by the browser
+about itself
+is replaced with the value
+user-agent.
+If
+user-agent
+is set to
+.
+(period)
+the
+User-Agent
+header is passed to the server unchanged,
+along with any
+UA
+headers produced by
+MS-IE
+(which would otherwise be deleted).
+In
+Version 1.4
+and later, if
+user-agent
+is set to
+@
+(at) these headers are sent unchanged in cases where the cookiefile
+specifies that a cookie would be sent,
+otherwise only default
+User-Agent
+header is sent.
+That default
+is Mozilla/3.0 (Netscape)
+with an unremarkable
+Macintosh
+configuration.
+If used with a browser less advanced than Mozilla/3.0 or IE-3, the default
+may encourage pages containing extensions that confuse the browser.
+
+
+If
+host
+is specified,
+bind the
+junkbuster
+to that
+IP
+address.
+If a
+port
+is specified, use it.
+The default
+port
+is 8000;
+the default host is
+localhost.
+Before Version 2.0.2,
+the default was to bind to all
+IP
+addresses
+(INADDR_ANY);
+but this has been restricted to
+localhost
+to avoid unintended security breaches.
+(To open the proxy to all, use the line
+
+ listen-address :8000
+
+in the configuration file.)
+
+Version 1.X required all
+HTTP
+requests from the client to be forwarded to the same destination.
+Version 2.0 takes its routing specification from a
+forwardfile,
+allowing selection of the proxy (a.k.a. forwarding host) and gateway
+according to the
+URL.
+Here is a typical line.
+
+
+* lpwa.com:8000 . .
+
+
+Each line contains four fields:
+target,
+forward_to,
+via_gateway_type
+and
+gateway.
+As usual, the
+last
+target
+domain that matches the requested
+URL
+wins,
+and the
+*
+character alone matches any domain.
+The target domain need not be a fully qualified
+hostname; it can be a general domain such as
+com
+or
+co.uk
+or even just a port number.
+For example, because
+LPWA
+does not handle
+SSL,
+the line above will typically be followed by a line such as
+
+
+:443 . . .
+
+to allow SSL transactions to proceed directly.
+The cautious would also
+add an entry in their blockfile to stop transactions
+to port 443 for all but specified trusted sites.
+
+If the winning
+forward_to
+field is
+.
+(the dot character) the proxy connects
+directly to the server given in the
+URL,
+otherwise it forwards to the host and port number specified.
+The default port is 8000.
+The
+via_gateway_type
+and
+gateway
+fields also use a dot to indicate no gateway protocol.
+The gateway protocols are explained
+below.
+
+The example line above in a forwardfile alone
+would send everything through port 8000 at
+lpwa.com
+with no gateway protocol,
+and is equivalent to the old
+-f lpwa.com:8000
+with no
+-g
+option.
+For more information see the example file provided with the distribution.
+
+Use
+gw_protocol
+as the gateway protocol.
+This option was introduced in Version 1.4,
+but was folded into the
+forwardfile
+option in Version 2.0.
+The default is to use no gateway protocol;
+this may be explicitly specified as
+direct
+on the command line
+or the dot character in the forwardfile.
+The
+SOCKS4
+protocol may be specified as
+socks
+or
+socks4.
+The
+SOCKS4A
+protocol is specified as
+socks4a.
+The
+SOCKS5
+protocol is not currently supported.
+The default
+SOCKS
+gw_port
+is 1080.
+
+The user identification capabilities of
+SOCKS4
+are deliberately not used;
+the user is always identified to the
+SOCKS
+server as
+userid=anonymous.
+If the server's policy is to reject requests from
+anonymous,
+the proxy will not work.
+Use a
+debug
+value of 3
+to see the status returned by the server.
+
+Set debug mode.
+The most common value is 1,
+to
+pinpoint
+offensive
+URLs,
+so they can be added to the blockfile.
+The value of
+N
+is a bitwise
+logical-OR
+of the following values:
+
+1 = URLs (show each URL requested by the browser);
+2 = Connections (show each connection to or from the proxy);
+4 = I/O (log I/O errors);
+8 = Headers (as each header is scanned, show the header and what is done to it);
+16 = Log everything (including debugging traces and the contents of the pages).
+Multiple
+debug
+lines are permitted; they are logical OR-ed together.
+
+Add
+X-Forwarded-For
+headers to the server-bound
+HTTP
+stream
+indicating the client
+IP
+address
+to the server,
+in the new style of
+Squid 1.1.4.
+If you want the traditional
+HTTP_FORWARDED
+response header, add it manually with the
+-x
+option.
+
+
+Add the
+HeaderText
+verbatim to requests to the server.
+Typical uses include
+adding old-style forwarding notices such as
+Forwarded: by http://pro-privacy-isp.net
+and reinstating the
+Proxy-Connection: Keep-Alive
+header
+(which the
+junkbuster
+deletes so as
+not
+to reveal its existence).
+No checking is done for correctness or plausibility,
+so it can be used to throw any old trash into the server-bound
+HTTP
+stream.
+Please don't litter.
+
+
+Doesn't
+fork()
+a separate process
+(or create a separate thread)
+to handle each connection.
+Useful when debugging to keep the process single threaded.
+
+Unless this option is used, the proxy talks to anyone who can connect to it,
+and everyone who can has equal permissions on where they can go.
+An access file allows restrictions to be placed on these two policies,
+by distinguishing some
+source
+IP
+addresses and/or
+some
+destination
+addresses.
+(If a
+forwarder or a gateway
+is being used, its address is considered the destination address,
+not the ultimate
+IP
+address of the
+URL
+requested.)
+
+Each line of the access file begins with
+either the word
+permit
+or
+deny
+followed by source and (optionally) destination addresses
+to be matched against those of the
+HTTP
+request.
+The last matching line specifies the result: if it was a
+deny
+line or if no line matched,
+the request will be refused.
+
+A source or destination
+can be specified as a single numeric
+IP
+address,
+or with a hostname, provided that the host's name
+can be resolved to a numeric address: this cannot be used to block all
+.mil
+domains for example,
+because there is no single address associated with that domain name.
+Either form may be followed by a slash and an integer
+N,
+specifying a subnet mask of
+N
+bits.
+For example,
+permit 207.153.200.72/24
+matches the entire Class-C subnet from
+207.153.200.0
+through 207.153.200.255.
+(A netmask of 255.255.255.0 corresponds to 24 bits of
+ones in the netmask, as with
+*_MASKLEN=24.)
+A value of 16 would be used for a Class-B subnet.
+A value of zero for
+N
+in the subnet mask length will cause any address to match;
+this can be used to express a default rule.
+For more information see the example file provided with the distribution.
+
+This feature is experimental, has not been fully documented and is
+very subject to change.
+The goal is for parents to be able to choose a page or site whose
+links they regard suitable for their
+young children
+and for the proxy to allow access only to sites mentioned there.
+To do this the proxy examines the
+referer
+variable on each page request to check they resulted from
+a click on the ``trusted referer'' site: if so the referred site
+is added to a list of trusted sites, so that the child can
+then move around that site.
+There are several uncertainties in this scheme that experience may be
+able to iron out; check back in the months ahead.
+
+(Obsolete) Accept the server's
+Set-cookie
+headers, passing them through to the browser.
+This option was removed in Version 1.2
+and replaced by an improvement to the
+-c
+option.
+
+
+
+
+Installation and Use
+
+
+Browsers must be told where to find the
+junkbuster
+(e.g.
+localhost
+port 8000).
+To set the
+HTTP
+proxy in Netscape 3.0,
+go through:
+
+Options;
+
+Network Preferences;
+
+Proxies;
+
+Manual Proxy Configuration;
+
+View.
+See the
+FAQ
+for other browsers.
+The
+Security Proxy
+should also be set to the same values,
+otherwise
+shttp:
+URLs
+won't work.
+
+To allow users to
+check
+that a
+junkbuster
+is running and how it is configured,
+it intercepts requests for any
+URL
+ending in
+/show-proxy-args
+and blocks it,
+returning instead returns information on its
+version number and
+current configuration
+including the contents of its blockfile.
+To get an explicit warning that no
+junkbuster
+intervened if the proxy was not configured,
+it's best to point it to a
+URL
+that does this, such as
+http://internet.junkbuster.com/cgi-bin/show-proxy-args
+on Junkbusters's website.
+
+Written and copyright by the Anonymous Coders and Junkbusters Corporation
+and made available under the
+GNU General Public License (GPL).
+This software comes with
+NO WARRANTY.
+Internet Junkbuster
+Proxy
+is a
+trademark
+of Junkbusters Corporation.
+