From c75584ebcc79f939fb4ec9c8f842cef6692640c7 Mon Sep 17 00:00:00 2001
From: oes
Date: Tue, 15 May 2001 13:59:57 +0000
Subject: [PATCH] *** empty log message ***
---
Junkbuster Status.URL | Bin 0 -> 56 bytes
Makefile.in | 281 ++
acconfig.h | 178 ++
aclfile | 102 +
amiga.c | 234 ++
amiga.h | 88 +
blocklist | 1060 ++++++
config | 207 ++
config.h | 195 ++
config.h.in | 194 ++
configure | 1968 ++++++++++++
configure.in | 257 ++
cookiefile | 67 +
cygwin.h | 63 +
doc/USER_DOC_IS_WIDELY_OBSOLETED | 0
doc/changes.txt | 991 ++++++
doc/gpl.html | 567 ++++
doc/ijbfaq.html | 3186 ++++++++++++++++++
doc/ijbman.html | 920 ++++++
encode.c | 400 +++
encode.h | 65 +
errlog.c | 407 +++
errlog.h | 80 +
filters.c | 1529 +++++++++
filters.h | 106 +
forward | 97 +
gateway.c | 287 ++
gateway.h | 69 +
icons/denyrule.ico | Bin 0 -> 318 bytes
icons/ico00001.ico | Bin 0 -> 318 bytes
icons/ico00002.ico | Bin 0 -> 318 bytes
icons/ico00003.ico | Bin 0 -> 318 bytes
icons/ico00004.ico | Bin 0 -> 318 bytes
icons/ico00005.ico | Bin 0 -> 318 bytes
icons/ico00006.ico | Bin 0 -> 318 bytes
icons/ico00007.ico | Bin 0 -> 318 bytes
icons/ico00008.ico | Bin 0 -> 318 bytes
icons/icon1.ico | Bin 0 -> 318 bytes
icons/idle.ico | Bin 0 -> 318 bytes
icons/junkbust.ico | Bin 0 -> 318 bytes
imagelist | 34 +
jbsockets.c | 476 +++
jbsockets.h | 72 +
jcc.c | 1224 +++++++
jcc.h | 96 +
junkbstr.txt | 206 ++
junkbuster.1 | 871 +++++
junkbuster.init | 149 +
junkbuster.logrotate | 22 +
junkbuster.monthly | 44 +
junkbuster.weekly | 21 +
killpopup.c | 245 ++
killpopup.h | 59 +
loadcfg.c | 869 +++++
loadcfg.h | 168 +
loaders.c | 2254 +++++++++++++
loaders.h | 103 +
miscutil.c | 252 ++
miscutil.h | 75 +
parsers.c | 1298 ++++++++
parsers.h | 114 +
pcre/chartables.c | 183 ++
pcre/config.h | 34 +
pcre/ltmain.sh | 4012 +++++++++++++++++++++++
pcre/pcre.c | 5151 ++++++++++++++++++++++++++++++
pcre/pcre.h | 110 +
pcre/pcre.in | 110 +
pcre/pcreposix.c | 280 ++
pcrs.c | 540 ++++
pcrs.h | 99 +
popup | 44 +
project.h | 447 +++
re_filterfile | 62 +
showargs.c | 467 +++
showargs.h | 60 +
ssplit.c | 235 ++
ssplit.h | 61 +
trust | 27 +
vc_junkbuster.dsp | 387 +++
vc_junkbuster.dsw | 29 +
w32.aps | Bin 0 -> 43740 bytes
w32.rc | 267 ++
w32log.c | 1321 ++++++++
w32log.h | 96 +
w32res.h | 130 +
w32rulesdlg.c | 532 +++
w32rulesdlg.h | 63 +
w32taskbar.c | 262 ++
w32taskbar.h | 65 +
win32.c | 273 ++
win32.h | 71 +
91 files changed, 37668 insertions(+)
create mode 100644 Junkbuster Status.URL
create mode 100644 Makefile.in
create mode 100644 acconfig.h
create mode 100644 aclfile
create mode 100644 amiga.c
create mode 100644 amiga.h
create mode 100644 blocklist
create mode 100644 config
create mode 100644 config.h
create mode 100644 config.h.in
create mode 100755 configure
create mode 100644 configure.in
create mode 100644 cookiefile
create mode 100644 cygwin.h
create mode 100644 doc/USER_DOC_IS_WIDELY_OBSOLETED
create mode 100644 doc/changes.txt
create mode 100644 doc/gpl.html
create mode 100644 doc/ijbfaq.html
create mode 100644 doc/ijbman.html
create mode 100644 encode.c
create mode 100644 encode.h
create mode 100644 errlog.c
create mode 100644 errlog.h
create mode 100644 filters.c
create mode 100644 filters.h
create mode 100644 forward
create mode 100644 gateway.c
create mode 100644 gateway.h
create mode 100644 icons/denyrule.ico
create mode 100644 icons/ico00001.ico
create mode 100644 icons/ico00002.ico
create mode 100644 icons/ico00003.ico
create mode 100644 icons/ico00004.ico
create mode 100644 icons/ico00005.ico
create mode 100644 icons/ico00006.ico
create mode 100644 icons/ico00007.ico
create mode 100644 icons/ico00008.ico
create mode 100644 icons/icon1.ico
create mode 100644 icons/idle.ico
create mode 100644 icons/junkbust.ico
create mode 100644 imagelist
create mode 100644 jbsockets.c
create mode 100644 jbsockets.h
create mode 100644 jcc.c
create mode 100644 jcc.h
create mode 100644 junkbstr.txt
create mode 100644 junkbuster.1
create mode 100644 junkbuster.init
create mode 100644 junkbuster.logrotate
create mode 100644 junkbuster.monthly
create mode 100644 junkbuster.weekly
create mode 100644 killpopup.c
create mode 100644 killpopup.h
create mode 100644 loadcfg.c
create mode 100644 loadcfg.h
create mode 100644 loaders.c
create mode 100644 loaders.h
create mode 100644 miscutil.c
create mode 100644 miscutil.h
create mode 100644 parsers.c
create mode 100644 parsers.h
create mode 100644 pcre/chartables.c
create mode 100644 pcre/config.h
create mode 100644 pcre/ltmain.sh
create mode 100644 pcre/pcre.c
create mode 100644 pcre/pcre.h
create mode 100644 pcre/pcre.in
create mode 100644 pcre/pcreposix.c
create mode 100644 pcrs.c
create mode 100644 pcrs.h
create mode 100644 popup
create mode 100644 project.h
create mode 100644 re_filterfile
create mode 100644 showargs.c
create mode 100644 showargs.h
create mode 100644 ssplit.c
create mode 100644 ssplit.h
create mode 100644 trust
create mode 100644 vc_junkbuster.dsp
create mode 100644 vc_junkbuster.dsw
create mode 100644 w32.aps
create mode 100644 w32.rc
create mode 100644 w32log.c
create mode 100644 w32log.h
create mode 100644 w32res.h
create mode 100644 w32rulesdlg.c
create mode 100644 w32rulesdlg.h
create mode 100644 w32taskbar.c
create mode 100644 w32taskbar.h
create mode 100644 win32.c
create mode 100644 win32.h
diff --git a/Junkbuster Status.URL b/Junkbuster Status.URL
new file mode 100644
index 0000000000000000000000000000000000000000..6c95de6d7dd1d98bf88e8084020edb372acbfdd1
GIT binary patch
literal 56
zcma#{%qvMP%1bQ?&d4t+NiHpkC|D9W#>
L)J-f(FJ=G$T<;X}
literal 0
HcmV?d00001
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.
+