be consistent with rh spec file
[privoxy.git] / doc / source / user-manual.sgml
1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
2 <!--
3  File        :  $Source: /cvsroot/ijbswa/current/doc/source/user-manual.sgml,v $
4
5  Purpose     :  user manual
6                 This file belongs into
7                 ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
8                 
9  $Id: user-manual.sgml,v 1.45 2002/03/09 17:43:53 swa Exp $
10
11  Written by and Copyright (C) 2001 the SourceForge
12  IJBSWA team.  http://ijbswa.sourceforge.net
13
14  Based on the Internet Junkbuster originally written
15  by and Copyright (C) 1997 Anonymous Coders and 
16  Junkbusters Corporation.  http://www.junkbusters.com
17 -->
18
19 <!--
20 Sat 03/02/02 04:53:47 PM
21
22 This should be ready for BETA release.
23
24 Hal Burgiss <hal@foobox.net>
25 -->
26
27 <article id="index">
28 <artheader>
29 <title>Junkbuster User Manual</title>
30
31 <pubdate>$Id: user-manual.sgml,v 1.45 2002/03/09 17:43:53 swa Exp $</pubdate>
32
33 <authorgroup>
34  <author>
35   <affiliation>
36    <orgname>By: Junkbuster Developers</orgname>
37    </affiliation>
38  </author>
39 </authorgroup>
40
41 <abstract>
42  <para>
43   The user manual gives users information on how to install, configure
44   and use <application>Internet Junkbuster</application>.
45   <application>Internet Junkbuster</application> is an application that
46   provides privacy and security to users of the World Wide Web.
47  </para>
48  <para>
49 You can find the latest version of the user manual at  <ulink url="http://ijbswa.sourceforge.net/user-manual/">http://ijbswa.sourceforge.net/user-manual/</ulink>.
50  </para>
51
52  <para>
53   Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>.
54  </para>
55 </abstract>
56
57 </artheader>
58
59
60 <!--   ~~~~~       New section      ~~~~~     -->
61
62 <sect1 id="introduction"><title>Introduction</title>
63 <para>
64  <application>Internet Junkbuster</application> is a web proxy with advanced
65  filtering capabilities for protecting privacy, filtering and modifying web
66  page content, managing cookies, controlling access, and removing ads,
67  banners, pop-ups and other obnoxious Internet Junk.
68  <application>Junkbuster</application> has a very flexible configuration and
69  can be customized to suit individual needs and tastes. <application>Internet
70  Junkbuster</application> has application for both stand-alone systems and
71  multi-user networks.
72 </para>
73
74 <para>
75  This documentation is included with the current BETA version of
76  <application>Internet Junkbuster</application> and is mostly complete at this
77  point. The most up to date reference for the time being is still the comments
78  in the source files and in the individual configuration files. Development
79  of version 3.0 is currently nearing completion, and includes many significant
80  changes and enhancements over earlier versions. The target release date for
81  stable v3.0 is <quote>soon</quote> ;-)
82 </para>
83
84 <para>
85  Since this is a BETA version, not all new features are well tested. This
86  documentation may be slightly out of sync as a result (especially with 
87  CVS sources). And there <emphasis>may be</emphasis> bugs, though hopefully
88  not many! 
89 </para>
90
91
92 <!--   ~~~~~       New section      ~~~~~     -->
93 <sect2>
94 <title>New Features</title>
95 <para>
96  In addition to <application>Junkbuster's</application> traditional features
97  of ad and banner blocking and cookie management, this is a list of new
98  features currently under development:
99 </para>
100
101 <para>
102  <itemizedlist>
103
104  <listitem>
105   <para>
106    Integrated browser based configuration and control utility (<ulink
107    url="http://i.j.b">http://i.j.b</ulink>). Browser-based tracing of rule
108    and filter effects.
109   </para>
110  </listitem> 
111
112  <listitem>
113   <para>
114    Modularized configuration that will allow for system wide settings, and
115    individual user settings. (not implemented yet, probably a 3.1 feature)
116   </para>
117  </listitem> 
118
119  <listitem>
120   <para>
121     Blocking of annoying pop-up browser windows.
122   </para>
123  </listitem> 
124
125  <listitem>
126   <para>
127    HTTP/1.1 compliant (most, but not all 1.1 features are supported).
128   </para>
129  </listitem> 
130
131  <listitem>
132   <para>
133    Support for Perl Compatible Regular Expressions in the configuration files, and 
134    generally a more sophisticated and flexible configuration syntax over
135    previous versions. 
136   </para>
137  </listitem> 
138
139  <listitem>
140   <para>
141    GIF de-animation. 
142   </para>
143  </listitem> 
144  
145  <listitem>
146   <para>
147    Web page content filtering (removes banners based on size,
148    invisible <quote>web-bugs</quote>, JavaScript, pop-ups, status bar abuse,
149    etc.)
150   </para>
151  </listitem> 
152  
153  <listitem>
154   <para>
155    Bypass many click-tracking scripts (avoids script redirection).
156  
157   </para>
158  </listitem> 
159  
160  <listitem>
161   <para>
162    Multi-threaded (POSIX and native threads).
163   </para>
164  </listitem> 
165
166  <listitem>
167   <para>
168    Auto-detection and re-reading of config file changes.
169   </para>
170  </listitem> 
171
172  <listitem>
173   <para>
174    User-customizable HTML templates (e.g. 404 error page).
175   </para>
176  </listitem> 
177
178  <listitem>
179   <para>
180    Improved cookie management features (e.g. session based cookies).
181   </para>
182 </listitem> 
183
184  <listitem>
185   <para>
186    Builds from source on most UNIX-like systems. Packages available for: Linux
187    (RedHat, SuSE, or Debian), Windows, Sun Solaris, Mac OSX, OS/2, HP-UX 11 and AmigaOS.
188  
189   </para>
190  </listitem> 
191
192  <listitem>
193   <para>
194    In addition, the configuration is much more powerful and versatile over-all.
195   </para>
196 </listitem> 
197
198  </itemizedlist>
199 </para>
200
201 </sect2>
202
203 </sect1>
204
205 <!--  ~  End section  ~  -->
206
207
208 <!--   ~~~~~       New section      ~~~~~     -->
209 <sect1 id="installation"><title>Installation</title>
210 <para>
211  <application>Junkbuster</application> is available as raw source code, or
212  pre-compiled binaries. See the <ulink
213  url="http://sourceforge.net/projects/ijbswa/">Junkbuster Home Page</ulink>
214  for binaries and current release info. <application>Junkbuster</application>
215  is also available via <ulink
216  url="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ijbswa/current/">CVS</ulink>.
217  This is the recommended approach at this time. But please be aware that CVS 
218  is constantly changing, and it may break in mysterious ways.
219 </para>
220
221 <!--   ~~~~~       New section      ~~~~~     -->
222 <sect2 id="installation-source"><title>Source</title>
223 <para>
224  For gzipped tar archives, unpack the source:
225 </para>
226
227 <para>
228  <screen>
229  tar xzvf ijb_source_* [.tgz or .tar.gz]
230  cd ijb_source_2.9.11_beta
231  </screen>
232 </para>
233
234 <para>
235  For retrieving the current CVS sources, you'll need the CVS 
236  package installed first. To download CVS source:
237 </para>
238
239 <para>
240  <screen>
241   cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login
242   cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co current
243   cd current
244  </screen>
245 </para>
246
247 <para>
248  This will create a directory named <filename>current/</filename>, which will 
249  contain the source tree.
250 </para>
251
252 <para>
253  Then, in either case, to build from tarball/CVS source:
254 </para>
255
256 <para>
257  <screen>
258  ./configure      (--help to see options)
259  make             (the make from gnu, gmake for *BSD) 
260  su 
261  make -n install  (to see where all the files will go)
262  make install     (to really install)
263  </screen>
264 </para>
265
266 <para>
267  For Redhat and SuSE Linux RPM packages, see below.
268 </para>
269
270 </sect2>
271
272
273 <!--   ~~~~~       New section      ~~~~~     -->
274 <sect2 id="installation-rh"><title>Red Hat</title>
275 <para>
276  To build Redhat RPM packages, install source as above. Then:
277 </para>
278
279 <para>
280  <screen>
281  autoheader   [suggested for CVS source]
282  autoconf     [suggested for CVS source]
283  ./configure
284  make redhat-dist
285  </screen>
286 </para>
287
288 <para>
289  This will create both binary and src RPMs in the usual places. Example:
290 </para>
291
292 <para>
293  &nbsp;&nbsp;&nbsp;/usr/src/redhat/RPMS/i686/junkbuster-2.9.11-1.i686.rpm
294 </para>
295 <para>
296  &nbsp;&nbsp;&nbsp;/usr/src/redhat/SRPMS/junkbuster-2.9.11-1.src.rpm
297 </para>
298
299 <para>
300  To install, of course:
301 </para>
302
303 <para>
304  <screen>
305  rpm -Uvv /usr/src/redhat/RPMS/i686/junkbuster-2.9.11-1.i686.rpm
306  </screen>
307 </para>
308
309 <para>
310  This will place the <application>Junkbuster</application> configuration 
311  files in <filename>/etc/junkbuster/</filename>, and log files in 
312  <filename>/var/log/junkbuster/</filename>.
313 </para>
314
315 </sect2>
316
317 <!--   ~~~~~       New section      ~~~~~     -->
318 <sect2 id="installation-suse"><title>SuSE</title>
319 <para>
320  To build SuSE RPM packages, install source as above. Then:
321 </para>
322
323 <para>
324  <screen>
325  autoheader   [suggested for CVS source]
326  autoconf     [suggested for CVS source]
327  ./configure
328  make suse-dist
329  </screen>
330 </para>
331
332 <para>
333  This will create both binary and src RPMs in the usual places. Example:
334 </para>
335
336 <para>
337  &nbsp;&nbsp;&nbsp;/usr/src/packages/RPMS/i686/junkbuster-2.9.11-1.i686.rpm
338 </para>
339 <para>
340  &nbsp;&nbsp;&nbsp;/usr/src/packages/SRPMS/junkbuster-2.9.11-1.src.rpm
341 </para>
342
343 <para>
344  To install, of course:
345 </para>
346
347 <para>
348  <screen>
349  rpm -Uvv /usr/src/packages/RPMS/i686/junkbuster-2.9.11-1.i686.rpm
350  </screen>
351 </para>
352
353 <para>
354  This will place the <application>Junkbuster</application> configuration 
355  files in <filename>/etc/junkbuster/</filename>, and log files in 
356  <filename>/var/log/junkbuster/</filename>.
357 </para>
358
359 </sect2>
360
361
362 <!--   ~~~~~       New section      ~~~~~     -->
363 <sect2 id="installation-os2"><title>OS/2</title>
364
365 <!--
366 Thanx David Schmidt!
367 -->
368
369 <para>
370  <application>Junkbuster</application> is packaged in a WarpIN self-
371  installing archive.  The self-installing program will be named depending
372  on the release version, something like:
373  <filename>ijbos2_setup_1.2.3.exe</filename>.  In order to install it, simply
374  run this executable or double-click on its icon and follow the WarpIN
375  installation panels.  A shadow of the <application>Junkbuster</application>
376  executable will be placed in your startup folder so it will start 
377  automatically whenever OS/2 starts.
378 </para>
379
380 <para>
381  The directory you choose to install <application>Junkbuster</application>
382  into will contain all of the configuration files.
383 </para>
384
385 <para>
386  If you would like to build binary images on OS/2 yourself, you will need
387  a few Unix-like tools: autoconf, autoheader and sh.  These tools will be
388  used to create the required config.h file, which is not part of the 
389  source distribution because it differs based on platform.  You will also
390  need a compiler.
391  The distribution has been created using IBM VisualAge compilers, but you
392  can use any compiler you like.  GCC/EMX has the disadvantage of needing 
393  to be single-threaded due to a limitation of EMX's implementation of the
394  select() socket call.
395 </para>
396
397 <para>
398  In addition to needing the source code distribution as outlined earlier,
399  you will want to extract the <filename>os2seutp</filename> directory from CVS:
400  <screen>
401  cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login          
402  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup
403  </screen>
404  This will create a directory named os2setup/, which will contain the
405  <filename>Makefile.vac</filename> makefile and <filename>os2build.cmd</filename>
406  which is used to completely create the binary distribution.  The sequence
407  of events for building the executable for yourself goes something like this:
408  <screen>
409  cd current
410  autoheader
411  autoconf
412  sh configure
413  cd ..\os2setup
414  nmake -f Makefile.vac
415  </screen>
416  You will see this sequence laid out in <filename>os2build.cmd</filename>.
417 </para>
418
419 </sect2>
420
421
422 <!--   ~~~~~       New section      ~~~~~     -->
423 <sect2 id="installation-win"><title>Windows</title>
424 <para>Click-click. (I need help on this. Not a clue here. Also for 
425 configuration section below. HB.)
426 </para>
427 </sect2>
428
429 <!--   ~~~~~       New section      ~~~~~     -->
430 <sect2 id="installation-other"><title>Other</title>
431 <para>
432  Some quick notes on other Operating Systems.
433 </para>
434
435 <para>
436  For FreeBSD (and other *BSDs?), the build will require <command>gmake</command> 
437  instead of the included <command>make</command>. <command>gmake</command> is
438  available from <ulink url="http://www.gnu.org">http://www.gnu.org</ulink>.
439  The rest should be the same as above for Linux/Unix.
440 </para>
441
442 </sect2>
443
444 </sect1>
445
446 <!--  ~  End section  ~  -->
447
448
449 <!--   ~~~~~       New section      ~~~~~     -->
450 <sect1 id="configuration"><title>JunkBuster Configuration</title>
451  <para>
452   All <application>JunkBuster</application> configuration is kept 
453   in text files. These files can be edited with a text editor.
454   Many important aspects of <application>JunkBuster</application> can 
455   also be controlled easily with a web browser.
456
457  </para>
458
459
460 <!--   ~~~~~       New section      ~~~~~     -->
461
462 <sect2>
463 <title>Controlling Junkbuster with Your Web Browser</title>
464 <para>
465  <application>JunkBuster</application> can be reached by the special 
466  URL <ulink url="http://i.j.b/">http://i.j.b/</ulink> (or alternately
467  <ulink url="http://ijbswa.sourceforge.net/config/">http://ijbswa.sourceforge.net/config/</ulink>, 
468  which is an internal page. You will see the following section:
469
470 </para>
471
472 <para>
473  <screen>
474
475 Please choose from the following options:
476
477     * Show information about the current configuration
478     * Show the source code version numbers
479     * Show the client's request headers.
480     * Show which actions apply to a URL and why
481     * Toggle JunkBuster on or off
482     * Edit the actions list
483
484  </screen>
485 </para>
486
487 <para>
488  This should be self-explanatory. Note the last item is an editor for the
489  <quote>actions list</quote>, which is where much of the ad, banner, cookie,
490  and URL blocking magic is configured as well as other advanced features of
491  <application>Junkbuster</application>. This is an easy way to adjust various
492  aspects of <application>Junkbuster</application> configuration. The actions
493  file, and other configuration files, are explained in detail below. 
494  <application>Junkbuster</application> will automatically detect any changes 
495  to these files.
496 </para>
497
498 <para>
499  <quote>Toggle JunkBuster On or Off</quote> is handy for sites that might 
500  have problems with your current actions and filters, or just to test if 
501  a site misbehaves, whether it is <application>JunkBuster</application> 
502  causing the problem or not. <application>Junkbuster</application> continues 
503  to run as a proxy in this case, but all filtering is disabled.
504
505 </para>
506
507 </sect2>
508
509 <!--  ~  End section  ~  -->
510
511
512
513
514 <!--   ~~~~~       New section      ~~~~~     -->
515
516 <sect2>
517 <title>Configuration Files Overview</title>
518 <para>
519  For Unix, *BSD and Linux, all configuration files are located in
520  <filename>/etc/junkbuster/</filename> by default. For MS Windows, OS/2, and
521  AmigaOS these are all in the same directory as the 
522  <application>Junkbuster</application> executable. The name and number of
523  configuration files has changed from previous versions, and is subject to
524  change as development progresses.
525 </para>
526
527 <para>
528  The installed defaults provide a reasonable starting point, though possibly
529  aggressive by some standards. For the time being, there are only three
530  default configuration files (this will change in time):
531 </para>
532
533 <para>
534  <itemizedlist>
535
536   <listitem>
537    <para>
538      The main configuration file is named <filename>config</filename>
539      on Linux, Unix, BSD, OS/2, and AmigaOS and <filename>config.txt</filename>
540      on Windows.
541    </para>
542   </listitem> 
543
544   <listitem>
545    <para>
546     The <filename>ijb.action</filename> file is used  to define various 
547     <quote>actions</quote> relating to images, banners, pop-ups, access
548     restrictions, banners and cookies. There is a CGI based editor for this
549     file that can be accessed via <ulink
550     url="http://i.j.b">http://i.j.b</ulink>. (Other actions 
551     files are included as well with differing levels of filtering 
552     and blocking, e.g. <filename>ijb-basic.action</filename>.)
553    </para>
554   </listitem> 
555
556   <listitem>
557    <para>
558     The <filename>re_filterfile</filename> file can be used to rewrite the raw
559     page content, including text as well as embedded HTML and JavaScript.
560    </para>
561   </listitem> 
562
563  </itemizedlist>
564 </para>
565
566 <para>
567  <filename>ijb.action</filename> and <filename>re_filterfile</filename> 
568  can use Perl style regular expressions for maximum flexibility. All files use
569  the <quote><literal>#</literal></quote> character to denote a comment. Such
570  lines are not processed by <application>Junkbuster</application>. After
571  making any changes, there is no need to restart
572  <application>Junkbuster</application> in order for the changes to take
573  effect. <application>Junkbuster</application> should detect such changes 
574  automatically.
575 </para>
576
577 <para>
578  While under development, the configuration content is subject to change. 
579  The below documentation may not be accurate by the time you read this. 
580  Also, what constitutes a <quote>default</quote> setting, may change, so 
581  please check all your configuration files on important issues.
582 </para>
583 </sect2>
584
585
586 <!--   ~~~~~       New section      ~~~~~     -->
587
588 <sect2>
589 <title>The Main Configuration File</title>
590 <para>
591  Again, the main configuration file is named <filename>config</filename> on
592  Linux/Unix/BSD and OS/2, and <filename>config.txt</filename> on Windows.
593  Configuration lines consist of an initial keyword followed by a list of
594  values, all separated by whitespace (any number of spaces or tabs). For
595  example:
596 </para>
597
598 <para>
599  <literal>
600   <msgtext> 
601    <literallayout>
602   <emphasis>blockfile blocklist.ini</emphasis>
603    </literallayout>
604   </msgtext> 
605  </literal>
606 </para>
607
608 <para>
609  Indicates that the blockfile is named <quote>blocklist.ini</quote>.
610 </para>
611
612 <para>
613  A <quote><literal>#</literal></quote> indicates a comment.  Any part of a
614  line following a <quote><literal>#</literal></quote> is ignored, except if
615  the <quote><literal>#</literal></quote> is preceded by a
616  <quote><literal>\</literal></quote>.
617 </para>
618
619 <para>
620  Thus, by placing a <quote><literal>#</literal></quote> at the start of an
621  existing configuration line, you can make it a comment and it will be treated
622  as if it weren't there. This is called <quote>commenting out</quote> an
623  option and can be useful to turn off features: If you comment out the
624  <quote>logfile</quote> line, <application>junkbuster</application> will not
625  log to a file at all. Watch for the <quote>default:</quote> section in each
626  explanation to see what happens if the option is left unset (or commented
627  out). 
628 </para>
629
630 <para>
631  Long lines can be continued on the next line by using a
632  <quote><literal>\</literal></quote> as the very last character.
633 </para>
634
635 <para>
636  There are various aspects of <application>Junkbuster</application> behavior 
637  that can be tuned.
638 </para>
639
640
641 <!--   ~~~~~       New section      ~~~~~     -->
642
643 <sect3>
644 <title>Defining Other Configuration Files</title>
645
646 <para>
647  <application>Junkbuster</application> can use a number of other files to tell it
648  what ads to block, what cookies to accept, etc.  This section of the
649  configuration file tells <application>Junkbuster</application> where to find
650  all those other files. 
651 </para>
652
653 <para>
654  On <application>Windows</application> and <application>AmigaOS</application>,
655  <application>Junkbuster</application> looks for these files in the same
656  directory as the executable.  On Unix and  OS/2,
657  <application>Junkbuster</application> looks for these files in the current
658  working directory. In either case, an absolute path name can be used to
659  avoid problems.
660 </para>
661
662 <para>
663  When development goes modular and multi-user, the blocker, filter, and
664  per-user config will be stored in subdirectories of <quote>confdir</quote>.
665  For now, only <filename>confdir/templates</filename> is used for storing HTML
666  templates for CGI results. 
667 </para>
668
669 <para>
670  The location of the configuration files:
671 </para>
672
673 <para>
674  <literal>
675   <msgtext> 
676    <literallayout>
677   <emphasis>confdir  /etc/junkbuster</emphasis>       # No trailing /, please.
678    </literallayout>
679   </msgtext> 
680  </literal>
681 </para>
682
683 <para>
684  The directory where all logging (i.e. <filename>logfile</filename> and 
685  <filename>jarfile</filename>) takes place. No trailing
686  <quote><literal>/</literal></quote>, please: 
687 </para>
688
689 <para>
690  <literal>
691   <msgtext> 
692    <literallayout>
693   <emphasis>logdir  /var/log/junkbuster</emphasis>
694    </literallayout>
695   </msgtext> 
696  </literal>
697 </para>
698
699 <para>
700  Note that all file specifications below are relative to 
701  the above two directories!
702 </para>
703
704 <para>
705  The <quote>ijb.action</quote> file contains patterns to specify the actions to
706  apply to requests for each site. Default: Cookies to and from all
707  destinations are kept only during the current browser session (i.e. they 
708  are not saved to disk). Pop-ups are disabled for all sites. All sites are
709  filtered if <quote>re_filterfile</quote> specified according to the 
710  contents of <quote>re_filterfile</quote>. No sites are blocked. The 
711  JunkBuster logo is displayed for filtered ads and other images . The syntax
712  of this file is explained in detail <link
713  linkend="actionsfile">below</link>. 
714 </para>
715
716 <para>
717  <literal>
718   <msgtext> 
719    <literallayout>
720   <emphasis>actionsfile  ijb.action</emphasis>
721    </literallayout>
722   </msgtext> 
723  </literal>
724 </para>
725
726 <para>
727  The <quote>re_filterfile</quote> file contains content modification rules.
728  These rules permit powerful changes on the content of Web pages, e.g., you
729  could disable your favorite JavaScript annoyances, rewrite the actual
730  content, or just have some fun replacing <quote>Microsoft</quote> with
731  <quote>MicroSuck</quote> wherever it appears on a Web page. Default: No
732  content modification, or whatever the developers are playing with :-/
733 </para>
734
735 <para>
736  Filtering requires buffering the page content, which may appear to slow down
737  page rendering since nothing is displayed until all content has passed 
738  the filters. (It does not really take longer, but seems that way since 
739  the page is not incrementally displayed.) This effect will be more noticeable
740  on slower connections.
741
742 </para>
743
744 <para>
745  <literal>
746   <msgtext> 
747    <literallayout>
748   <emphasis>re_filterfile  re_filterfile</emphasis>
749    </literallayout>
750   </msgtext> 
751  </literal>
752 </para>
753
754 <para>
755  The logfile is where all logging and error messages are written. The logfile
756  can be useful for tracking down a problem with
757  <application>Junkbuster</application> (e.g., it's not blocking an ad you
758  think it should block) but in most cases you probably will never look at it.
759 </para>
760
761 <para>
762  Your logfile will grow indefinitely, and you will probably want to
763  periodically remove it.  On Unix systems, you can do this with a cron job
764  (see <quote>man cron</quote>). For Redhat, a <command>logrotate</command> 
765  script has been included.
766 </para>
767
768 <para>
769  On SuSE Linux systems, you can place a line like <quote>/var/log/junkbuster.*
770  +1024k 644 nobody.nogroup</quote> in <filename>/etc/logfiles</filename>, with
771  the effect that cron.daily will automatically archive, gzip, and empty the
772  log, when it exceeds 1M size.
773 </para>
774
775 <para>
776  Default: Log to the a file named <filename>logfile</filename>. 
777  Comment out to disable logging.
778 </para>
779
780 <para>
781  <literal>
782   <msgtext> 
783    <literallayout>
784   <emphasis>logfile  logfile</emphasis>
785    </literallayout>
786   </msgtext> 
787  </literal>
788 </para>
789
790 <para>
791  The <quote>jarfile</quote> defines where
792  <application>Junkbuster</application> stores the cookies it intercepts.  Note
793  that if you use a <quote>jarfile</quote>, it may grow quite large. Default:
794  Don't store intercepted cookies.
795 </para>
796
797 <para>
798  <literal>
799   <msgtext> 
800    <literallayout>
801   <emphasis>#jarfile  jarfile</emphasis>
802    </literallayout>
803   </msgtext> 
804  </literal>
805 </para>
806
807 <para>
808  If you specify a <quote>trustfile</quote>,
809  <application>Junkbuster</application> will only allow access to sites that
810  are named in the trustfile. You can also mark sites as trusted referrers,
811  with the effect that access to untrusted sites will be granted, if a link
812  from a trusted referrer was used. The link target will then be added to the
813  <quote>trustfile</quote>. This is a very restrictive feature that typical
814  users most probably want to leave disabled. Default: Disabled, don't use the
815  trust mechanism.
816 </para>
817
818 <para>
819  <literal>
820   <msgtext> 
821    <literallayout>
822   <emphasis>#trustfile  trust</emphasis>
823    </literallayout>
824   </msgtext> 
825  </literal>
826 </para>
827  
828 <para>
829  If you use the trust mechanism, it is a good idea to write up some on-line
830  documentation about your blocking policy and to specify the URL(s) here. They
831  will appear on the page that your users receive when they try to access
832  untrusted content. Use multiple times for multiple URLs. Default: Don't
833  display links on the <quote>untrusted</quote> info page.
834 </para>
835
836 <para>
837  <literal>
838   <msgtext> 
839    <literallayout>
840   <emphasis>trust-info-url http://www.your-site.com/why_we_block.html</emphasis>
841   <emphasis>trust-info-url http://www.your-site.com/what_we_allow.html</emphasis>
842    </literallayout>
843   </msgtext> 
844  </literal>
845 </para>
846
847 </sect3>
848
849 <!--  ~  End section  ~  -->
850
851
852
853 <!--   ~~~~~       New section      ~~~~~     -->
854
855 <sect3>
856 <title>Other Configuration Options</title>
857
858 <para>
859  This part of the configuration file contains options that control how
860  <application>Junkbuster</application> operates.
861 </para>
862
863 <para>
864  <quote>Admin-address</quote> should be set to the email address of the proxy
865  administrator. It is used in many of the proxy-generated pages. Default:
866  fill@me.in.please.
867 </para>
868
869 <para>
870  <literal>
871   <msgtext> 
872    <literallayout>
873   <emphasis>#admin-address  fill@me.in.please</emphasis>
874    </literallayout>
875   </msgtext> 
876  </literal>
877 </para>
878
879 <para>
880  <quote>Proxy-info-url</quote> can be set to a URL that contains more info
881  about this <application>Junkbuster</application> installation, it's
882  configuration and policies. It is used in many of the proxy-generated pages
883  and its use is highly recommended in multi-user installations, since your
884  users will want to know why certain content is blocked or modified. Default:
885  Don't show a link to on-line documentation.
886 </para>
887
888 <para>
889  <literal>
890   <msgtext> 
891    <literallayout>
892   <emphasis>proxy-info-url  http://www.your-site.com/proxy.html</emphasis>
893    </literallayout>
894   </msgtext> 
895  </literal>
896 </para>
897
898 <para>
899  <quote>Listen-address</quote> specifies the address and port where
900  <application>Junkbuster</application> will listen for connections from your
901  Web browser.  The default is to listen on the localhost port 8118, and
902  this is suitable for most users.  (In your web browser, under proxy
903  configuration, list the proxy server as <quote>localhost</quote> and the
904  port as <quote>8118</quote>).
905 </para>
906
907 <para>
908  If you already have another service running on port 8118, or if you want to
909  serve requests from other machines (e.g. on your local network) as well, you
910  will need to override the default. The syntax is 
911  <quote>listen-address [&lt;ip-address&gt;]:&lt;port&gt;</quote>. If you leave
912  out the IP address, <application>junkbuster</application> will bind to all
913  interfaces (addresses) on your machine and may become reachable from the
914  Internet. In that case, consider using access control lists (acl's) (see
915  <quote>aclfile</quote> above), or a firewall.
916 </para>
917
918 <para>
919  For example, suppose you are running <application>Junkbuster</application> on
920  a machine which has the address 192.168.0.1 on your local private network
921  (192.168.0.0) and has another outside connection with a different address.
922  You want it to serve requests from inside only:
923 </para>
924
925 <para>
926  <literal>
927   <msgtext> 
928    <literallayout>
929   <emphasis>listen-address  192.168.0.1:8118</emphasis>
930    </literallayout>
931   </msgtext> 
932  </literal>
933 </para>
934
935 <para>
936  If you want it to listen on all addresses (including the outside
937  connection):
938 </para>
939
940 <para>
941  <literal>
942   <msgtext> 
943    <literallayout>
944   <emphasis>listen-address  :8118</emphasis>
945    </literallayout>
946   </msgtext> 
947  </literal>
948 </para>
949
950 <para>
951  If you do this, consider using ACLs (see <quote>aclfile</quote> above). Note:
952  you will need to point your browser(s) to the address and port that you have
953  configured here. Default: localhost:8118 (127.0.0.1:8118).
954 </para>
955
956 <para>
957  The debug option sets the level of debugging information to log in the
958  logfile (and to the console in the Windows version).  A debug level of 1 is
959  informative because it will show you each request as it happens.  Higher
960  levels of debug are probably only of interest to developers.
961 </para>
962
963 <para>
964  <literal>
965   <msgtext> 
966    <literallayout>
967   debug         1 # GPC   = show each GET/POST/CONNECT request
968   debug         2 # CONN  = show each connection status
969   debug         4 # IO    = show I/O status
970   debug         8 # HDR   = show header parsing
971   debug        16 # LOG   = log all data into the logfile
972   debug        32 # FRC   = debug force feature
973   debug        64 # REF   = debug regular expression filter 
974   debug       128 #       = debug fast redirects
975   debug       256 #       = debug GIF de-animation
976   debug       512 # CLF   = Common Log Format
977   debug      1024 #       = debug kill pop-ups
978   debug      4096 # INFO  = Startup banner and warnings.
979   debug      8192 # ERROR = Non-fatal errors
980     </literallayout>
981   </msgtext>
982  </literal>
983 </para>
984
985 <para>
986  It is <emphasis>highly recommended</emphasis> that you enable ERROR
987  reporting (debug 8192), at least until the next stable release.
988 </para>
989
990 <para>
991  The reporting of FATAL errors (i.e. ones which crash 
992  <application>JunkBuster</application>) is always on and cannot be disabled.
993 </para>
994
995 <para>
996  If you want to use CLF (Common Log Format), you should set <quote>debug
997  512</quote> ONLY, do not enable anything else.
998 </para>
999
1000 <para>
1001  Multiple <quote>debug</quote> directives, are OK - they're logical-OR'd
1002  together. 
1003 </para>
1004
1005 <para>
1006  <literal>
1007   <msgtext> 
1008    <literallayout>
1009   <emphasis>debug    15     # same as setting the first 4 listed above</emphasis>
1010    </literallayout>
1011   </msgtext> 
1012  </literal>
1013 </para>
1014
1015 <para>
1016  Default:
1017 </para>
1018
1019 <para>
1020  <literal>
1021   <msgtext> 
1022    <literallayout>
1023   <emphasis>debug   1     # URLs</emphasis>
1024   <emphasis>debug   4096  # Info</emphasis>
1025   <emphasis>debug   8192  # Errors - *we highly recommended enabling this*</emphasis>
1026    </literallayout>
1027   </msgtext> 
1028  </literal>
1029 </para>
1030
1031 <para>
1032  <application>Junkbuster</application> normally uses
1033  <quote>multi-threading</quote>, a software technique that permits it to
1034  handle many different requests simultaneously. In some cases you may wish to
1035  disable this -- particularly if you're trying to debug a problem.  The
1036  <quote>single-threaded</quote> option forces
1037  <application>Junkbuster</application> to handle requests sequentially.
1038  Default: Multi-threaded mode.
1039 </para>
1040
1041 <para>
1042  <literal>
1043   <msgtext> 
1044    <literallayout>
1045   <emphasis>#single-threaded</emphasis>
1046    </literallayout>
1047   </msgtext> 
1048  </literal>
1049 </para>
1050
1051 <para>
1052  <quote>toggle</quote> allows you to temporarily disable all
1053  <application>Junkbuster's</application>  filtering. Just set <quote>toggle
1054  0</quote>.
1055 </para>
1056
1057 <para>
1058  The Windows version of <application>Junkbuster</application> puts an icon in
1059  the system tray, which also allows you to change this option.  If you
1060  right-click on that icon (or select the <quote>Options</quote> menu), one
1061  choice is <quote>Enable</quote>. Clicking on enable toggles
1062  <application>Junkbuster</application> on and off. This is useful if you want
1063  to temporarily disable <application>Junkbuster</application>, e.g., to access
1064  a site that requires cookies which you would otherwise have blocked. This can also
1065  be toggled via a web browser at the <application>Junkbuster</application>
1066  internal address of <ulink url="http://i.j.b">http://i.j.b</ulink> on 
1067  any platform.
1068 </para>
1069
1070 <para>
1071  <quote>toggle 1</quote> means <application>Junkbuster</application> runs
1072  normally, <quote>toggle 0</quote> means that
1073  <application>Junkbuster</application> becomes a non-anonymizing non-blocking
1074  proxy. Default: 1 (on). 
1075 </para>
1076
1077 <para>
1078  <literal>
1079   <msgtext> 
1080    <literallayout>
1081   <emphasis>toggle    1</emphasis>
1082    </literallayout>
1083   </msgtext> 
1084  </literal>
1085 </para>
1086
1087 <para>
1088  For content filtering, i.e. the <quote>+filter</quote> and
1089  <quote>+deanimate-gif</quote> actions, it is necessary that 
1090  <application>Junkbuster</application> buffers the entire document body.
1091  This can be potentially dangerous, since a server could just keep sending
1092  data indefinitely and wait for your RAM to exhaust. With nasty consequences.
1093 </para>
1094
1095 <para>
1096  The <application>buffer-limit</application> option lets you set the maximum
1097  size in Kbytes that each buffer may use. When the documents buffer exceeds
1098  this size, it is flushed to the client unfiltered and no further attempt to
1099  filter the rest of it is made. Remember that there may multiple threads
1100  running, which might require increasing the <quote>buffer-limit</quote>
1101  Kbytes <emphasis>each</emphasis>, unless you have enabled 
1102  <quote>single-threaded</quote> above.
1103 </para>
1104
1105 <para>
1106  <literal>
1107   <msgtext> 
1108    <literallayout>
1109   <emphasis>buffer-limit    4069</emphasis>
1110    </literallayout>
1111   </msgtext> 
1112  </literal>
1113 </para>
1114
1115 <para>
1116  To enable the web-based <filename>ijb.action</filename> file editor set
1117  <application>enable-edit-actions</application> to 1, or 0 to disable.  Note
1118  that you must have compiled <application>JunkBuster</application> with
1119  support for this feature, otherwise this option has no effect. This 
1120  internal page can be reached at <ulink
1121  url="http://i.j.b">http://i.j.b</ulink>.
1122  </para>
1123
1124 <para>
1125  Security note: If this is enabled, anyone who can use the proxy
1126  can edit the actions file, and their changes will affect all users.
1127  For shared proxies, you probably want to disable this. Default: enabled.
1128 </para>
1129
1130 <para>
1131  <literal>
1132   <msgtext> 
1133    <literallayout>
1134   <emphasis>enable-edit-actions    1</emphasis>
1135    </literallayout>
1136   </msgtext> 
1137  </literal>
1138 </para>
1139
1140 <para>
1141  Allow <application>JunkBuster</application> to be toggled on and off
1142  remotely, using your web browser.  Set <quote>enable-remote-toggle</quote>to
1143  1 to enable, and 0 to disable.  Note that you must have compiled 
1144  <application>JunkBuster</application> with support for this feature,
1145  otherwise this option has no effect.
1146 </para>
1147
1148 <para>
1149  Security note:  If this is enabled, anyone who can use the proxy can toggle
1150  it on or off (see <ulink url="http://i.j.b">http://i.j.b</ulink>), and
1151  their changes will affect all users. For shared proxies, you probably want to
1152  disable this. Default: enabled.
1153 </para>
1154
1155 <para>
1156  <literal>
1157   <msgtext> 
1158    <literallayout>
1159   <emphasis>enable-remote-toggle    1</emphasis>
1160    </literallayout>
1161   </msgtext> 
1162  </literal>
1163 </para>
1164
1165 </sect3>
1166
1167 <!--  ~  End section  ~  -->
1168
1169
1170 <!--   ~~~~~       New section      ~~~~~     -->
1171
1172 <sect3>
1173 <title>Access Control List (ACL)</title>
1174 <para>
1175  Access controls are included at the request of some ISPs and systems
1176  administrators, and are not usually needed by individual users. Please note
1177  the warnings in the FAQ that this proxy is not intended to be a substitute
1178  for a firewall or to encourage anyone to defer addressing basic security
1179  weaknesses.
1180 </para>
1181
1182 <para>
1183  If no access settings are specified, the proxy talks to anyone that
1184  connects. If any access settings file are specified, then the proxy
1185  talks only to IP addresses permitted somewhere in this file and not
1186  denied later in this file.
1187 </para>
1188
1189 <para>
1190  Summary -- if using an ACL:
1191 </para>
1192
1193  <simplelist>
1194   <member>
1195    Client must have permission to receive service.
1196   </member>
1197  </simplelist>
1198  <simplelist>
1199   <member>
1200    LAST match in ACL wins.
1201   </member>
1202  </simplelist>
1203  <simplelist>
1204   <member>
1205    Default behavior is to deny service.
1206   </member>
1207  </simplelist>
1208
1209 <para>
1210  The syntax for an entry in the Access Control List is:
1211 </para>
1212
1213 <para>
1214  <literal>
1215   <msgtext> 
1216    <literallayout>
1217   ACTION    SRC_ADDR[/SRC_MASKLEN]    [ DST_ADDR[/DST_MASKLEN] ]
1218    </literallayout>
1219   </msgtext> 
1220  </literal>
1221 </para>
1222
1223 <para>
1224  Where the individual fields are:
1225 </para>
1226
1227 <para>
1228  <literal>
1229   <msgtext> 
1230    <literallayout>
1231  <emphasis>ACTION</emphasis>      = <quote>permit-access</quote> or <quote>deny-access</quote>
1232
1233  <emphasis>SRC_ADDR</emphasis>    = client hostname or dotted IP address
1234  <emphasis>SRC_MASKLEN</emphasis> = number of bits in the subnet mask for the source
1235
1236  <emphasis>DST_ADDR</emphasis>    = server or forwarder hostname or dotted IP address
1237  <emphasis>DST_MASKLEN</emphasis> = number of bits in the subnet mask for the target
1238    </literallayout>
1239   </msgtext> 
1240  </literal>
1241 </para>
1242
1243
1244 <para> 
1245  The field separator (FS) is whitespace (space or tab).
1246 </para>
1247
1248 <para>
1249  IMPORTANT NOTE: If the <application>junkbuster</application> is using a
1250  forwarder (see below) or a gateway for a particular destination URL, the
1251  <literal>DST_ADDR</literal> that is examined is the address of the forwarder
1252  or the gateway and <emphasis>NOT</emphasis> the address of the ultimate
1253  target. This is necessary because it may be impossible for the local
1254  <application>Junkbuster</application> to determine the address of the
1255  ultimate target (that's often what gateways are used for).
1256 </para>
1257
1258 <para>
1259  Here are a few examples to show how the ACL features work:
1260 </para>
1261
1262 <para>
1263  <quote>localhost</quote> is OK -- no DST_ADDR implies that
1264  <emphasis>ALL</emphasis> destination addresses are OK:
1265 </para>
1266
1267 <para>
1268  <literal>
1269   <msgtext> 
1270    <literallayout>
1271   <emphasis>permit-access  localhost</emphasis>
1272    </literallayout>
1273   </msgtext> 
1274  </literal>
1275 </para>
1276
1277 <para>
1278  A silly example to illustrate permitting any host on the class-C subnet with
1279  <application>Junkbuster</application> to go anywhere:
1280 </para>
1281
1282 <para>
1283  <literal>
1284   <msgtext> 
1285    <literallayout>
1286   <emphasis>permit-access    www.junkbusters.com/24</emphasis>
1287    </literallayout>
1288   </msgtext> 
1289  </literal>
1290 </para>
1291
1292 <para>
1293  Except deny one particular IP address from using it at all:
1294 </para>
1295
1296 <para>
1297  <literal>
1298   <msgtext> 
1299    <literallayout>
1300   <emphasis>deny-access      ident.junkbusters.com</emphasis>
1301    </literallayout>
1302   </msgtext> 
1303  </literal>
1304 </para>
1305
1306 <para>
1307  You can also specify an explicit network address and subnet mask.
1308  Explicit addresses do not have to be resolved to be used.
1309 </para>
1310
1311 <para>
1312  <literal>
1313   <msgtext> 
1314    <literallayout>
1315   <emphasis>permit-access    207.153.200.0/24</emphasis>
1316    </literallayout>
1317   </msgtext> 
1318  </literal>
1319 </para>
1320
1321 <para>
1322  A subnet mask of 0 matches anything, so the next line permits everyone.
1323 </para>
1324
1325 <para>
1326  <literal>
1327   <msgtext> 
1328    <literallayout>
1329   <emphasis>permit-access    0.0.0.0/0</emphasis>
1330    </literallayout>
1331   </msgtext> 
1332  </literal>
1333 </para>
1334
1335 <para>
1336  Note, you <emphasis>cannot</emphasis> say:
1337 </para>
1338
1339 <para>
1340  <literal>
1341   <msgtext> 
1342    <literallayout>
1343   <emphasis>permit-access    .org</emphasis>
1344    </literallayout>
1345   </msgtext> 
1346  </literal>
1347 </para>
1348
1349 <para>
1350  to allow all *.org domains. Every IP address listed must resolve fully.
1351 </para>
1352
1353 <para>
1354  An ISP may want to provide a <application>Junkbuster</application> that is
1355  accessible by <quote>the world</quote> and yet restrict use of some of their
1356  private content to hosts on its internal network (i.e. its own subscribers).
1357  Say, for instance the ISP owns the Class-B IP address block 123.124.0.0 (a 16
1358  bit netmask). This is how they could do it:
1359 </para>
1360
1361 <para>
1362  <literal>
1363   <msgtext> 
1364    <literallayout>
1365  <emphasis>permit-access 0.0.0.0/0   0.0.0.0/0</emphasis>   # other clients can go anywhere 
1366                                        # with the following exceptions:
1367  
1368  <emphasis>deny-access</emphasis>   0.0.0.0/0   123.124.0.0/16 # block all external requests for
1369                                           # sites on the ISP's network
1370
1371  <emphasis>permit 0.0.0.0/0   www.my_isp.com</emphasis>        # except for the ISP's main 
1372                                           # web site
1373
1374  <emphasis>permit 123.124.0.0/16 0.0.0.0/0</emphasis>          # the ISP's clients can go 
1375                                           # anywhere
1376    </literallayout>
1377   </msgtext> 
1378  </literal>
1379 </para>
1380
1381 <para>
1382  Note that if some hostnames are listed with multiple IP addresses, 
1383  the primary value returned by DNS (via gethostbyname()) is used. Default:
1384  Anyone can access the proxy.
1385 </para>
1386
1387 </sect3>
1388
1389 <!--  ~  End section  ~  -->
1390
1391
1392 <!--   ~~~~~       New section      ~~~~~     -->
1393
1394 <sect3>
1395 <title>Forwarding</title>
1396
1397 <para>
1398  This feature allows chaining of HTTP requests via multiple proxies.
1399  It can be used to better protect privacy and confidentiality when
1400  accessing specific domains by routing requests to those domains
1401  to a special purpose filtering proxy such as lpwa.com. Or to use 
1402  a caching proxy to speed up browsing.
1403 </para>
1404
1405 <para>
1406  It can also be used in an environment with multiple networks to route
1407  requests via multiple gateways allowing transparent access to multiple
1408  networks without having to modify browser configurations.
1409 </para>
1410
1411 <para>
1412  Also specified here are SOCKS proxies. <application>Junkbuster</application>
1413  SOCKS 4 and SOCKS 4A. The difference is that SOCKS 4A will resolve the target
1414  hostname using DNS on the SOCKS server, not our local DNS client.
1415 </para>
1416
1417 <para>
1418  The syntax of each line is:
1419 </para>
1420
1421 <para>
1422  <literal>
1423   <msgtext> 
1424    <literallayout>
1425  <emphasis>forward target_domain[:port] http_proxy_host[:port]</emphasis>
1426  <emphasis>forward-socks4  target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</emphasis>
1427  <emphasis>forward-socks4a target_domain[:port] socks_proxy_host[:port] http_proxy_host[:port]</emphasis>
1428    </literallayout>
1429   </msgtext> 
1430  </literal>
1431 </para>
1432
1433 <para>
1434  If http_proxy_host is <quote>.</quote>, then requests are not forwarded to a
1435  HTTP proxy but are made directly to the web servers.
1436 </para>
1437
1438 <para>
1439  Lines are checked in sequence, and the last match wins.
1440 </para>
1441
1442 <para>
1443  There is an implicit line equivalent to the following, which specifies that
1444  anything not finding a match on the list is to go out without forwarding
1445  or gateway protocol, like so:
1446 </para>
1447
1448 <para>
1449  <literal>
1450   <msgtext> 
1451    <literallayout>
1452   <emphasis>forward   .*   .       </emphasis># implicit
1453    </literallayout>
1454   </msgtext> 
1455  </literal>
1456 </para>
1457
1458 <para>
1459  In the following common configuration, everything goes to Lucent's LPWA,
1460  except SSL on port 443 (which it doesn't handle):
1461 </para>
1462
1463 <para>
1464  <literal>
1465   <msgtext> 
1466    <literallayout>
1467  <emphasis>forward   .*     lpwa.com:8000</emphasis>
1468  <emphasis>forward   :443   .</emphasis>
1469    </literallayout>
1470   </msgtext> 
1471  </literal>
1472 </para>
1473
1474 <para>
1475  See the FAQ for instructions on how to automate the login procedure for LPWA.
1476  Some users have reported difficulties related to LPWA's use of
1477  <quote>.</quote> as the last element of the domain, and have said that this
1478  can be fixed with this:
1479 </para>
1480    
1481 <para>
1482  <literal>
1483   <msgtext> 
1484    <literallayout>
1485   <emphasis>forward   lpwa.  lpwa.com:8000</emphasis>
1486    </literallayout>
1487   </msgtext> 
1488  </literal>
1489 </para>
1490  
1491 <para>
1492  (NOTE: the syntax for specifying target_domain has changed since the
1493  previous paragraph was written -- it will not work now.  More information
1494  is welcome.)
1495 </para>
1496
1497 <para>
1498  In this fictitious example, everything goes via an ISP's caching proxy,
1499  except requests to that ISP:
1500 </para>
1501
1502 <para>
1503  <literal>
1504   <msgtext> 
1505    <literallayout>
1506  <emphasis>forward    .*         caching.myisp.net:8000</emphasis>
1507  <emphasis>forward    myisp.net  .</emphasis>
1508    </literallayout>
1509   </msgtext> 
1510  </literal>
1511 </para>
1512
1513 <para>
1514  For the @home network, we're told the forwarding configuration is this:
1515 </para>
1516
1517
1518 <para>
1519  <literal>
1520   <msgtext> 
1521    <literallayout>
1522   <emphasis>forward    .*    proxy:8080</emphasis>
1523    </literallayout>
1524   </msgtext> 
1525  </literal>
1526 </para>
1527
1528 <para>
1529  Also, we're told they insist on getting cookies and JavaScript, so you should 
1530  add home.com to the cookie file. We consider JavaScript a security risk.
1531  Java need not be enabled.
1532 </para>
1533
1534 <para>
1535  In this example direct connections are made to all <quote>internal</quote>
1536  domains, but everything else goes through Lucent's LPWA by way of the
1537  company's SOCKS gateway to the Internet.
1538 </para>
1539
1540 <para>
1541  <literal>
1542   <msgtext> 
1543    <literallayout>
1544  <emphasis>forward-socks4  .*  lpwa.com:8000  firewall.my_company.com:1080</emphasis>
1545  <emphasis>forward    my_company.com  .</emphasis>
1546    </literallayout>
1547   </msgtext> 
1548  </literal>
1549 </para>
1550
1551 <para>
1552  This is how you could set up a site that always uses SOCKS but no forwarders:
1553 </para>
1554
1555 <para>
1556  <literal>
1557   <msgtext> 
1558    <literallayout>
1559   <emphasis>forward-socks4a   .*  .  firewall.my_company.com:1080</emphasis>
1560    </literallayout>
1561   </msgtext> 
1562  </literal>
1563 </para>
1564
1565 <para>
1566  An advanced example for network administrators:
1567 </para>
1568
1569 <para>
1570  If you have links to multiple ISPs that provide various special content to
1571  their subscribers, you can configure forwarding to pass requests to the
1572  specific host that's connected to that ISP so that everybody can see all
1573  of the content on all of the ISPs.
1574 </para>
1575
1576 <para>
1577  This is a bit tricky, but here's an example:
1578 </para>
1579
1580
1581 <para>
1582  host-a has a PPP connection to isp-a.com. And host-b has a PPP connection to
1583  isp-b.com. host-a can run a <application>Junkbuster</application> proxy with
1584  forwarding like this: 
1585 </para>
1586
1587 <para>
1588  <literal>
1589   <msgtext> 
1590    <literallayout>
1591  <emphasis>forward    .*         .</emphasis>
1592  <emphasis>forward    isp-b.com  host-b:8118</emphasis>
1593    </literallayout>
1594   </msgtext> 
1595  </literal>
1596 </para>
1597
1598 <para>
1599  host-b can run a <application>Junkbuster</application> proxy with forwarding
1600  like this: 
1601 </para>
1602
1603 <para>
1604  <literal>
1605   <msgtext> 
1606    <literallayout>
1607  <emphasis>forward    .*          .</emphasis>
1608  <emphasis>forward    isp-a.com   host-a:8118</emphasis>
1609    </literallayout>
1610   </msgtext> 
1611  </literal>
1612 </para>
1613
1614 <para>
1615  Now, <emphasis>anyone</emphasis> on the Internet (including users on host-a
1616  and host-b) can set their browser's proxy to <emphasis>either</emphasis>
1617  host-a or host-b and be able to browse the content on isp-a or isp-b.
1618 </para>
1619
1620 <para>
1621  Here's another practical example, for University of Kent at
1622  Canterbury students with a network connection in their room, who
1623  need to use the University's Squid web cache.
1624 </para>
1625
1626 <para>
1627  <literal>
1628   <msgtext> 
1629    <literallayout>
1630  <emphasis>forward  *. ssbcache.ukc.ac.uk:3128</emphasis>  # Use the proxy, except for:
1631  <emphasis>forward  .ukc.ac.uk            .    </emphasis> # Anything on the same domain as us
1632  <emphasis>forward  *                     .    </emphasis> # Host with no domain specified
1633  <emphasis>forward  129.12.*.*            .    </emphasis> # A dotted IP on our /16 network.
1634  <emphasis>forward  127.*.*.*             .    </emphasis> # Loopback address
1635  <emphasis>forward  localhost.localdomain .    </emphasis> # Loopback address
1636  <emphasis>forward  www.ukc.mirror.ac.uk  .    </emphasis> # Specific host
1637    </literallayout>
1638   </msgtext> 
1639  </literal>
1640 </para>
1641
1642 <para>
1643  If you intend to chain <application>Junkbuster</application> and 
1644  <application>squid</application> locally, then chain as 
1645  <literal>browser -> squid -> junkbuster</literal> is the recommended way. 
1646 </para>
1647
1648 <para>
1649  Your squid configuration could then look like this:
1650 </para>
1651
1652 <para>
1653  <literal>
1654   <msgtext> 
1655    <literallayout>
1656   # Define junkbuster as parent cache 
1657  <!-- per feedback from user...
1658   cache_peer 127.0.0.1 8118 parent 0 no-query 
1659  --> 
1660   cache_peer 127.0.0.1 parent 8118 0 no-query
1661   
1662   # Define ACL for protocol FTP 
1663   acl FTP proto FTP 
1664
1665   # Do not forward ACL FTP to junkbuster 
1666   always_direct allow FTP 
1667
1668   # Do not forward ACL CONNECT (https) to junkbuster 
1669   always_direct allow CONNECT 
1670
1671   # Forward the rest to junkbuster 
1672   never_direct allow all 
1673    </literallayout>
1674   </msgtext> 
1675  </literal>
1676 </para>
1677
1678 </sect3>
1679
1680 <!--  ~  End section  ~  -->
1681
1682
1683 <!--   ~~~~~       New section      ~~~~~     -->
1684
1685 <sect3>
1686 <title>Windows GUI Options</title>
1687 <!--
1688 Removed references to Win32. HB 09/23/01
1689 -->
1690 <para>
1691  <application>Junkbuster</application> has a number of options specific to the
1692  Windows GUI interface:
1693 </para>
1694
1695 <para>
1696  If <quote>activity-animation</quote> is set to 1, the
1697  <application>Junkbuster</application> icon will animate when
1698  <quote>Junkbuster</quote> is active. To turn off, set to 0.
1699 </para>
1700
1701 <para>
1702  <literal>
1703   <msgtext> 
1704    <literallayout>
1705   <emphasis>activity-animation   1</emphasis>
1706    </literallayout>
1707   </msgtext> 
1708  </literal>
1709 </para>
1710
1711 <para>
1712  If <quote>log-messages</quote> is set to 1,
1713  <application>Junkbuster</application> will log messages to the console
1714  window:
1715 </para>
1716
1717 <para>
1718  <literal>
1719   <msgtext> 
1720    <literallayout>
1721   <emphasis>log-messages       1</emphasis>
1722    </literallayout>
1723   </msgtext> 
1724  </literal>
1725 </para>
1726
1727 <para> 
1728  If <quote>log-buffer-size</quote> is set to 1, the size of the log buffer,
1729  i.e. the amount of memory used for the log messages displayed in the
1730  console window, will be limited to <quote>log-max-lines</quote> (see below).
1731 </para>
1732
1733 <para>
1734  Warning: Setting this to 0 will result in the buffer to grow infinitely and
1735  eat up all your memory!
1736 </para>
1737
1738 <para>
1739  <literal>
1740   <msgtext> 
1741    <literallayout>
1742   <emphasis>log-buffer-size      1</emphasis>
1743    </literallayout>
1744   </msgtext> 
1745  </literal>
1746 </para>
1747
1748 <para>
1749  <application>log-max-lines</application> is the maximum number of lines held
1750  in the log buffer. See above.
1751 </para>
1752
1753 <para>
1754  <literal>
1755   <msgtext> 
1756    <literallayout>
1757   <emphasis>log-max-lines      200</emphasis>
1758    </literallayout>
1759   </msgtext> 
1760  </literal>
1761 </para>
1762
1763 <para>
1764  If <quote>log-highlight-messages</quote> is set to 1,
1765  <application>Junkbuster</application> will highlight portions of the log
1766  messages with a bold-faced font:
1767 </para>
1768
1769 <para>
1770  <literal>
1771   <msgtext> 
1772    <literallayout>
1773   <emphasis>log-highlight-messages   1</emphasis>
1774    </literallayout>
1775   </msgtext> 
1776  </literal>
1777 </para>
1778
1779 <para>
1780  The font used in the console window:
1781 </para>
1782
1783 <para>
1784  <literal>
1785   <msgtext> 
1786    <literallayout>
1787   <emphasis>log-font-name        Comic Sans MS</emphasis>
1788    </literallayout>
1789   </msgtext> 
1790  </literal>
1791 </para>
1792
1793 <para>
1794  Font size used in the console window:
1795 </para>
1796
1797 <para>
1798  <literal>
1799   <msgtext> 
1800    <literallayout>
1801   <emphasis>log-font-size        8</emphasis>
1802    </literallayout>
1803   </msgtext> 
1804  </literal>
1805 </para>
1806
1807 <para>  
1808  <quote>show-on-task-bar</quote> controls whether or not
1809  <application>Junkbuster</application> will appear as a button on the Task bar
1810  when minimized:
1811 </para>
1812
1813 <para>
1814  <literal>
1815   <msgtext> 
1816    <literallayout>
1817   <emphasis>show-on-task-bar     0</emphasis>
1818    </literallayout>
1819   </msgtext> 
1820  </literal>
1821 </para>
1822
1823 <para>
1824  If <quote>close-button-minimizes</quote> is set to 1, the Windows close
1825  button will minimize <application>Junkbuster</application> instead of closing
1826  the program (close with the exit option on the File menu).
1827 </para>
1828
1829 <para>
1830  <literal>
1831   <msgtext> 
1832    <literallayout>
1833   <emphasis>close-button-minimizes  1</emphasis>
1834    </literallayout>
1835   </msgtext> 
1836  </literal>
1837 </para>
1838
1839 <para>
1840  The <quote>hide-console</quote> option is specific to the MS-Win console
1841  version of <application>JunkBuster</application>. If this option is used,
1842  <application>Junkbuster</application> will disconnect from and hide  the
1843  command console.
1844 </para>
1845
1846 <para>
1847  <literal>
1848   <msgtext> 
1849    <literallayout>
1850   #hide-console
1851    </literallayout>
1852   </msgtext> 
1853  </literal>
1854 </para>
1855
1856 </sect3>
1857 </sect2>
1858
1859 <!--  ~  End section  ~  -->
1860
1861
1862 <!--   ~~~~~       New section      ~~~~~     -->
1863 <sect2 id="actionsfile">
1864 <title>The Actions File</title>
1865
1866 <para>
1867  The <quote>ijb.action</quote> file (formerly
1868  <filename>actionsfile</filename>) is used to define what actions
1869  <application>Junkbuster</application> takes, and thus determines how images,
1870  cookies and various other aspects of HTTP content and transactions are
1871  handled. Images can be anything you want, including ads, banners, or just
1872  some obnoxious image that you would rather not see. Cookies can be accepted
1873  or rejected, or accepted only during the current browser session (i.e. 
1874  not written to disk). Changes to <filename>ijb.action</filename> should 
1875  be immediately visible to <application>Junkbuster</application> without 
1876  the need to restart.
1877 </para>
1878
1879 <para>
1880  To determine which actions apply to a request, the URL of the request is
1881  compared to all patterns in this file. Every time it matches, the list of
1882  applicable actions for the URL is incrementally updated. You can trace
1883  this process by visiting <ulink
1884  url="http://i.j.b/show-url-info">http://i.j.b/show-url-info</ulink>. 
1885 </para>
1886
1887 <para>
1888  The actions file can be edited with a browser by loading 
1889  <ulink url="http://i.j.b/">http://i.j.b/</ulink>, and then select 
1890  <quote>Edit Actions</quote>.
1891 </para>
1892
1893 <para>
1894  There are four types of lines in this file: comments (begin with a 
1895  <quote>#</quote> character), actions, aliases and patterns, all of which are
1896  explained below, as well as the configuration file syntax that 
1897  <application>Junkbuster</application> understands.
1898
1899 </para>
1900
1901
1902 <!--   ~~~~~       New section      ~~~~~     -->
1903 <sect3>
1904 <title>URL Domain and Path Syntax</title>
1905 <para>
1906  Generally, a pattern has the form &lt;domain&gt;/&lt;path&gt;, where both the
1907  &lt;domain&gt; and &lt;path&gt; part are optional. If you only specify a
1908  domain part, the <quote>/</quote> can be left out:
1909 </para>
1910
1911 <para>
1912  <emphasis>www.example.com</emphasis> - is a domain only pattern and will match any request to
1913  <quote>www.example.com</quote>.
1914 </para>
1915
1916 <para>
1917  <emphasis>www.example.com/</emphasis> - means exactly the same.
1918 </para>
1919
1920 <para>
1921  <emphasis>www.example.com/index.html</emphasis> - matches only the single
1922  document <quote>/index.html</quote> on <quote>www.example.com</quote>.
1923 </para>
1924
1925 <para>
1926  <emphasis>/index.html</emphasis> - matches the document <quote>/index.html</quote>, regardless of
1927  the domain.
1928 </para>
1929
1930 <para>
1931  <emphasis>index.html</emphasis> - matches nothing, since it would be
1932  interpreted as a domain name and there is no top-level domain called
1933  <quote>.html</quote>.
1934 </para>
1935
1936 <para>
1937  The matching of the domain part offers some flexible options: if the
1938  domain starts or ends with a dot, it becomes unanchored at that end. 
1939  For example:
1940 </para>
1941
1942 <para>
1943  <emphasis>.example.com</emphasis> - matches any domain that <emphasis>ENDS</emphasis> in 
1944  <quote>.example.com</quote>.
1945 </para>
1946
1947 <para>
1948  <emphasis>www.</emphasis> - matches any domain that <emphasis>STARTS</emphasis> with
1949  <quote>www</quote>.
1950 </para>
1951
1952 <para>
1953  Additionally, there are wild-cards that you can use in the domain names
1954  themselves. They work pretty similar to shell wild-cards: <quote>*</quote>
1955  stands for zero or more arbitrary characters, <quote>?</quote> stands for
1956  any single character. And you can define character classes in square
1957  brackets and they can be freely mixed:
1958 </para>
1959
1960 <para>
1961  <emphasis>ad*.example.com</emphasis> - matches <quote>adserver.example.com</quote>, 
1962  <quote>ads.example.com</quote>, etc but not <quote>sfads.example.com</quote>.
1963 </para>
1964
1965 <para>
1966  <emphasis>*ad*.example.com</emphasis> - matches all of the above, and then some.
1967 </para>
1968
1969 <para>
1970  <emphasis>.?pix.com</emphasis> - matches <quote>www.ipix.com</quote>,
1971  <quote>pictures.epix.com</quote>, <quote>a.b.c.d.e.upix.com</quote>, etc. 
1972 </para>
1973
1974 <para>
1975  <emphasis>www[1-9a-ez].example.com</emphasis> - matches <quote>www1.example.com</quote>, 
1976  <quote>www4.example.com</quote>, <quote>wwwd.example.com</quote>, 
1977  <quote>wwwz.example.com</quote>, etc., but <emphasis>not</emphasis> 
1978  <quote>wwww.example.com</quote>.
1979 </para>
1980
1981 <para>
1982  If <application>Junkbuster</application> was compiled with
1983  <quote>pcre</quote> support (default), Perl compatible regular expressions
1984  can be used. See the <filename>pcre/docs/</filename> directory or <quote>man
1985  perlre</quote> (also available on  <ulink
1986  url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>)
1987  for details. A brief discussion of regular expressions is in the 
1988  <link linkend="regex">Appendix</link>. For instance:
1989 </para>
1990
1991 <para>
1992  <emphasis>/.*/advert[0-9]+\.jpe?g</emphasis>  - would match a URL from any
1993  domain, with any path that includes <quote>advert</quote> followed
1994  immediately by one or more digits, then a <quote>.</quote> and ending in
1995  either <quote>jpeg</quote> or <quote>jpg</quote>. So we match
1996  <quote>example.com/ads/advert2.jpg</quote>, and
1997  <quote>www.example.com/ads/banners/advert39.jpeg</quote>, but not
1998  <quote>www.example.com/ads/banners/advert39.gif</quote> (no gifs in the
1999  example pattern).
2000 </para>
2001
2002 <para>
2003  Please note that matching in the path is case
2004  <emphasis>INSENSITIVE</emphasis> by default, but you can switch to case
2005  sensitive at any point in the pattern by using the 
2006  <quote>(?-i)</quote> switch:
2007 </para>
2008
2009 <para>
2010  <emphasis>www.example.com/(?-i)PaTtErN.*</emphasis> - will match only
2011  documents whose path starts with <quote>PaTtErN</quote> in
2012  <emphasis>exactly</emphasis> this capitalization.
2013 </para>
2014
2015 </sect3>
2016
2017 <!--  ~  End section  ~  -->
2018
2019
2020
2021 <!--   ~~~~~       New section      ~~~~~     -->
2022
2023 <sect3>
2024 <title>Actions</title>
2025 <para>
2026  Actions are enabled if preceded with a <quote>+</quote>, and disabled if 
2027  preceded with a <quote>-</quote>. Actions are invoked by enclosing the 
2028  action name in curly braces (e.g. {+some_action}), followed by a list of 
2029  URLs to which the action applies. There are three classes of actions:
2030 </para>
2031
2032 <para>
2033  <itemizedlist>
2034
2035  <listitem>
2036   <para>  
2037    Boolean (e.g. <quote>+/-block</quote>):
2038   </para>
2039   <para>
2040    <literal>
2041     <msgtext> 
2042      <literallayout>
2043   <emphasis>{+name}</emphasis>        # enable this action
2044   <emphasis>{-name}</emphasis>        # disable this action
2045      </literallayout>
2046     </msgtext> 
2047    </literal>
2048   </para>
2049  </listitem>
2050
2051
2052  <listitem>
2053   <para>  
2054    parameterized (e.g. <quote>+/-hide-user-agent</quote>):
2055   </para>
2056   <para>
2057    <literal>
2058     <msgtext> 
2059      <literallayout>
2060   <emphasis>{+name{param}}</emphasis>  # enable action and set parameter to <quote>param</quote>
2061   <emphasis>{-name}</emphasis>         # disable action
2062      </literallayout>
2063     </msgtext> 
2064    </literal>
2065   </para>
2066  </listitem>
2067  
2068  <listitem>
2069   <para>  
2070    Multi-value (e.g. <quote>{+/-add-header{Name: value}}</quote>, <quote>{+/-wafer{name=value}}</quote>):
2071   </para>
2072   <para>
2073    <literal>
2074     <msgtext> 
2075      <literallayout>
2076   <emphasis>{+name{param}}</emphasis>   # enable action and add parameter <quote>param</quote>
2077   <emphasis>{-name{param}}</emphasis>   # remove the parameter <quote>param</quote>
2078   <emphasis>{-name}</emphasis>          # disable this action totally
2079      </literallayout>
2080     </msgtext> 
2081    </literal>
2082   </para>
2083  </listitem>
2084
2085  </itemizedlist>
2086 </para>
2087
2088 <para>
2089  If nothing is specified in this file, no <quote>actions</quote> are taken.
2090  So in this case <application>JunkBuster</application> would just be a
2091  normal, non-blocking, non-anonymizing proxy. You must specifically
2092  enable the privacy and blocking features you need (although the 
2093  provided default <filename>ijb.action</filename> file will 
2094  give a good starting point).
2095 </para>
2096
2097 <para>
2098  Later defined actions always over-ride earlier ones.  For multi-valued
2099  actions, the actions are applied in the order they are specified.
2100 </para>
2101
2102 <para>
2103  The list of valid <application>Junkbuster</application> <quote>actions</quote> are:
2104 </para>
2105
2106 <para>
2107  <itemizedlist>
2108  
2109  <listitem>
2110   <para>  
2111    Add the specified HTTP header, which is not checked for validity.
2112    You may specify this many times to specify many different headers:
2113   </para>
2114   <para>
2115    <literal>
2116     <msgtext> 
2117      <literallayout>
2118   <emphasis>+add-header{Name: value}</emphasis>
2119      </literallayout>
2120     </msgtext> 
2121    </literal>
2122   </para>
2123  </listitem>
2124  
2125  
2126  <listitem>
2127   <para>  
2128    Block this URL totally.
2129   </para>
2130   <para>
2131    <literal>
2132     <msgtext> 
2133      <literallayout>
2134   <emphasis>+block</emphasis>
2135      </literallayout>
2136     </msgtext> 
2137    </literal>
2138   </para>
2139  </listitem>
2140  
2141  
2142  <listitem>
2143   <para>  
2144    De-animate all animated GIF images, i.e. reduce them to their last frame.
2145    This will also shrink the images considerably (in bytes, not pixels!). If
2146    the option <quote>first</quote> is given, the first frame of the animation
2147    is used as the replacement. If <quote>last</quote> is given, the last frame
2148    of the animation is used instead, which probably makes more sense for most
2149    banner animations, but also has the risk of not showing the entire last
2150    frame (if it is only a delta to an earlier frame).
2151   </para>
2152   <para>
2153    <literal>
2154     <msgtext> 
2155      <literallayout>
2156   <emphasis>+deanimate-gifs{last}</emphasis>
2157   <emphasis>+deanimate-gifs{first}</emphasis>
2158      </literallayout>
2159     </msgtext> 
2160    </literal>
2161   </para>
2162  </listitem>
2163  
2164  <listitem>
2165   <para>
2166    <quote>+downgrade</quote> will downgrade HTTP/1.1 client requests to
2167    HTTP/1.0 and downgrade the responses as well. Use this action for servers
2168    that use HTTP/1.1 protocol features that
2169    <application>Junkbuster</application> doesn't handle well yet. HTTP/1.1 
2170    is only partially implemented. Default is not to downgrade requests.
2171   </para>
2172   <para>
2173    <literal>
2174     <msgtext> 
2175      <literallayout>
2176   <emphasis>+downgrade</emphasis>
2177      </literallayout>
2178     </msgtext> 
2179    </literal>
2180   </para>
2181  </listitem> 
2182  
2183  <listitem>
2184   <para>  
2185    Many sites, like yahoo.com, don't just link to other sites. Instead, they
2186    will link to some script on their own server, giving the destination as a
2187    parameter, which will then redirect you to the final target. URLs resulting
2188    from this scheme typically look like:
2189    http://some.place/some_script?http://some.where-else.
2190   </para>
2191   <para>
2192    Sometimes, there are even multiple consecutive redirects encoded in the
2193    URL. These redirections via scripts make your web browsing more traceable,
2194    since the server from which you follow such a link can see where you go to.
2195    Apart from that, valuable bandwidth and time is wasted, while your browser
2196    ask the server for one redirect after the other. Plus, it feeds the
2197    advertisers.
2198   </para>
2199   <para>
2200    The <quote>+fast-redirects</quote> option enables interception of these
2201    requests by <application>Junkbuster</application>, who will cut off all but
2202    the last valid URL in the request and send a local redirect back to your
2203    browser without contacting the remote site.
2204   </para>
2205   <para>
2206    <literal>
2207     <msgtext> 
2208      <literallayout>
2209   <emphasis>+fast-redirects</emphasis>
2210      </literallayout>
2211     </msgtext> 
2212    </literal>
2213   </para>
2214  </listitem>
2215
2216  <listitem>
2217   <para>  
2218    Filter the website through the re_filterfile:
2219   </para>
2220   <para>
2221    <literal>
2222     <msgtext> 
2223      <literallayout>
2224  <emphasis>+filter{filename}</emphasis>
2225      </literallayout>
2226     </msgtext> 
2227    </literal>
2228   </para>
2229  </listitem>
2230
2231  <listitem>
2232   <para>  
2233    Block any existing X-Forwarded-for header, and do not add a new one:
2234   </para>
2235   <para>
2236    <literal>
2237     <msgtext> 
2238      <literallayout>
2239   <emphasis>+hide-forwarded</emphasis>
2240      </literallayout>
2241     </msgtext> 
2242    </literal>
2243   </para>
2244  </listitem>
2245
2246  <listitem>
2247   <para>  
2248    If the browser sends a <quote>From:</quote> header containing your e-mail
2249    address, this either completely removes the header (<quote>block</quote>), or
2250    changes it to the specified e-mail address.
2251   </para>
2252   <para>
2253    <literal>
2254     <msgtext> 
2255      <literallayout>
2256   <emphasis>+hide-from{block}</emphasis>
2257   <emphasis>+hide-from{spam@sittingduck.xqq}</emphasis>
2258      </literallayout>
2259     </msgtext> 
2260    </literal>
2261   </para>
2262  </listitem>
2263  
2264  <listitem>
2265   <para>  
2266    Don't send the <quote>Referer:</quote> (sic) header to the web site.  You
2267    can block it, forge a URL to the same server as the request (which is
2268    preferred because some sites will not send images otherwise) or set it to a
2269    constant string of your choice.
2270   </para>
2271   <para>
2272    <literal>
2273     <msgtext> 
2274      <literallayout>
2275   <emphasis>+hide-referer{block}</emphasis>
2276   <emphasis>+hide-referer{forge}</emphasis>
2277   <emphasis>+hide-referer{http://nowhere.com}</emphasis>
2278      </literallayout>
2279     </msgtext> 
2280    </literal>
2281   </para>
2282  </listitem>
2283  
2284  <listitem>
2285   <para>  
2286    Alternative spelling of <quote>+hide-referer</quote>.  It has the same
2287    parameters, and can be freely mixed with, <quote>+hide-referer</quote>.
2288    (<quote>referrer</quote> is the correct English spelling, however the HTTP
2289    specification has a bug - it requires it to be spelled <quote>referer</quote>.) 
2290   </para>
2291   <para>
2292    <literal>
2293     <msgtext> 
2294      <literallayout>
2295   <emphasis>+hide-referrer{...}</emphasis>
2296      </literallayout>
2297     </msgtext> 
2298    </literal>
2299   </para>
2300  </listitem>
2301
2302  <listitem>
2303   <para>  
2304    Change the <quote>User-Agent:</quote> header so web servers can't tell your
2305    browser type.  Warning! This breaks many web sites.  Specify the
2306    user-agent value you want. Example, pretend to be using Netscape on
2307    Linux:
2308   </para>
2309   <para>
2310    <literal>
2311     <msgtext> 
2312      <literallayout>
2313   <emphasis>+hide-user-agent{Mozilla (X11; I; Linux 2.0.32 i586)}</emphasis>
2314      </literallayout>
2315     </msgtext> 
2316    </literal>
2317   </para>
2318  <!-- 
2319   <para>
2320    Or to identify yourself explicitly as a <quote>Junkbuster</quote> user:
2321   </para>
2322   <para>
2323    <literal>
2324     <msgtext> 
2325      <literallayout>
2326   <emphasis>+hide-user-agent{JunkBuster/1.0}</emphasis>
2327      </literallayout>
2328     </msgtext> 
2329    </literal>
2330   </para>
2331    (Don't change the version number from 1.0 - after all, why tell them?)
2332   <para>
2333   </para>
2334   <para>
2335    <literal>
2336     <msgtext> 
2337      <literallayout>
2338   <emphasis>+hide-user-agent{browser-type}</emphasis>
2339      </literallayout>
2340     </msgtext> 
2341    </literal>
2342   </para>
2343 -->
2344  </listitem>
2345
2346  <listitem>
2347   <para>  
2348    Treat this URL as an image.  This only matters if it's also <quote>+block</quote>ed,
2349     in which case a <quote>blocked</quote> image can be sent rather than a HTML page.
2350     See <quote>+image-blocker{}</quote> below for the control over what is actually sent.
2351   </para>
2352   <para>
2353    <literal>
2354     <msgtext> 
2355      <literallayout>
2356   <emphasis>+image</emphasis>
2357      </literallayout>
2358     </msgtext> 
2359    </literal>
2360   </para>
2361  </listitem>
2362  
2363  <listitem>
2364   <para>  
2365    Decides what to do with URLs that end up tagged with <quote>{+block
2366    +image}</quote>, e.g an advertizement. There are five options.
2367    <quote>-image-blocker</quote> will send a HTML <quote>blocked</quote> page,
2368    usually resulting in a <quote>broken image</quote> icon.
2369    <quote>+image-blocker{logo}</quote> will send a <quote>JunkBuster</quote>
2370    logo image. <quote>+image-blocker{blank}</quote> will send a 1x1
2371    transparent GIF image. And finally,
2372    <quote>+image-blocker{http://xyz.com}</quote> will send a HTTP temporary
2373    redirect to the specified image. This has the advantage of the icon being
2374    being cached by the browser, which will speed up the display.
2375    <quote>+image-blocker{pattern}</quote> will send a checkboard type pattern,
2376    which scales better than the logo (which can get blocky if the browser 
2377    enlarges it too much).
2378   </para>
2379   <para>
2380    <literal>
2381     <msgtext> 
2382      <literallayout>
2383   <emphasis>+image-blocker{logo}</emphasis>
2384   <emphasis>+image-blocker{blank}</emphasis>
2385   <emphasis>+image-blocker{http://i.j.b/send-banner}</emphasis>
2386      </literallayout>
2387     </msgtext> 
2388    </literal>
2389   </para>
2390  </listitem>
2391  
2392  <listitem>
2393    <para> 
2394    By default (i.e. in the absence of a <quote>+limit-connect</quote>
2395    action), <application>Junkbuster</application> will only allow CONNECT
2396    requests to port 443, which is the standard port for https as a 
2397    precaution.
2398   </para>
2399  
2400   <para>
2401    The CONNECT methods exists in HTTP to allow access to secure websites
2402    (https:// URLs) through proxies. It works very simply: the proxy
2403    connects to the server on the specified port, and then short-circuits
2404    its connections to the client <emphasis>and</emphasis> to the remote proxy.
2405    This can be a big security hole, since CONNECT-enabled proxies can
2406    be abused as TCP relays very easily.
2407   </para>
2408   
2409   <para> 
2410    If you want to allow CONNECT for more ports than this, or want to forbid
2411    CONNECT altogether, you can specify a comma separated list of ports and
2412    port ranges (the latter using dashes, with the minimum defaulting to 0 and
2413    max to 65K):
2414   </para>
2415
2416   <para>
2417    <literal>
2418     <msgtext> 
2419      <literallayout>
2420   <emphasis>+limit-connect{443}                 # This is the default and need no be specified.</emphasis>
2421   <emphasis>+limit-connect{80,443}              # Ports 80 and 443 are OK.</emphasis>
2422   <emphasis>+limit-connect{-3, 7, 20-100, 500-} # Port less than 3, 7, 20 to 100</emphasis>
2423   <emphasis>                                    #and above 500 are OK.</emphasis>
2424      </literallayout>
2425     </msgtext> 
2426    </literal>
2427   </para>
2428
2429  </listitem> 
2430  
2431  <listitem>
2432   <para>
2433    <quote>+no-compression</quote> prevents the website from compressing the
2434    data. Some websites do this, which can be a problem for
2435    <application>Junkbuster</application>, since <quote>+filter</quote>,
2436    <quote>+no-popup</quote> and <quote>+gif-deanimate</quote> will not work on
2437    compressed data. This will slow down connections to those websites,
2438    though. Default is <quote>nocompression</quote> is turned on.
2439   </para>
2440
2441   <para>
2442    <literal>
2443     <msgtext> 
2444      <literallayout>
2445   <emphasis>+nocompression</emphasis>
2446      </literallayout>
2447     </msgtext> 
2448    </literal>
2449   </para>
2450  </listitem> 
2451  
2452  <listitem>
2453   <para>  
2454    If the website sets cookies, <quote>no-cookies-keep</quote> will make sure
2455    they are erased when you exit and restart your web browser. This makes
2456    profiling cookies useless, but won't break sites which require cookies so
2457    that you can log in for transactions. Default: on.
2458   </para>
2459   <para>
2460    <literal>
2461     <msgtext> 
2462      <literallayout>
2463   <emphasis>+no-cookies-keep</emphasis>
2464      </literallayout>
2465     </msgtext> 
2466    </literal>
2467   </para>
2468  </listitem>
2469  
2470  <listitem>
2471   <para>  
2472    Prevent the website from reading cookies:
2473   </para>
2474   <para>
2475    <literal>
2476     <msgtext> 
2477      <literallayout>
2478   <emphasis>+no-cookies-read</emphasis>
2479      </literallayout>
2480     </msgtext> 
2481    </literal>
2482   </para>
2483  </listitem>
2484  
2485  <listitem>
2486   <para>  
2487    Prevent the website from setting cookies:
2488   </para>
2489   <para>
2490    <literal>
2491     <msgtext> 
2492      <literallayout>
2493   <emphasis>+no-cookies-set</emphasis>
2494      </literallayout>
2495     </msgtext> 
2496    </literal>
2497   </para>
2498  </listitem>
2499  
2500  <listitem>
2501   <para>  
2502    Filter the website through a built-in filter to disable those obnoxious 
2503    JavaScript pop-up windows via window.open(), etc. The two alternative
2504    spellings are equivalent.
2505   </para>
2506   <para>
2507    <literal>
2508     <msgtext> 
2509      <literallayout>
2510   <emphasis>+no-popup</emphasis>
2511   <emphasis>+no-popups</emphasis>
2512      </literallayout>
2513     </msgtext> 
2514    </literal>
2515   </para>
2516  </listitem>
2517  
2518  <listitem>
2519   <para>  
2520    This action only applies if you are using a <filename>jarfile</filename>
2521    for saving cookies. It sends a cookie to every site stating that you do not
2522    accept any copyright on cookies sent to you, and asking them not to track
2523    you.  Of course, this is a (relatively) unique header they could use to
2524    track you.
2525   </para>
2526   <para>
2527    <literal>
2528     <msgtext> 
2529      <literallayout>
2530   <emphasis>+vanilla-wafer</emphasis>
2531      </literallayout>
2532     </msgtext> 
2533    </literal>
2534   </para>
2535  </listitem>
2536  
2537  <listitem>
2538   <para>  
2539    This allows you to add an arbitrary cookie. It can be specified multiple
2540    times in order to add as many cookies as you like.
2541   </para>
2542   <para>
2543    <literal>
2544     <msgtext> 
2545      <literallayout>
2546   <emphasis>+wafer{name=value}</emphasis>
2547      </literallayout>
2548     </msgtext> 
2549    </literal>
2550   </para>
2551  </listitem>
2552
2553  </itemizedlist>
2554 </para>
2555
2556 <para>
2557  The meaning of any of the above is reversed by preceding the action with a 
2558  <quote>-</quote>, in place of the <quote>+</quote>.
2559 </para>
2560
2561 <para>
2562  Some examples:
2563 </para>
2564
2565 <para>
2566  Turn off cookies by default, then allow a few through for specified sites:
2567 </para>
2568   
2569 <para>
2570  <literal>
2571   <msgtext> 
2572    <literallayout>
2573  # Turn off all persistent cookies
2574  { +no-cookies-read }
2575  { +no-cookies-set }
2576  # Allow cookies for this browser session ONLY
2577  { +no-cookies-keep }
2578
2579  # Exceptions to the above, sites that benefit from persistent cookies
2580  { -no-cookies-read }
2581  { -no-cookies-set }
2582  { -no-cookies-keep }
2583  .javasoft.com
2584  .sun.com
2585  .yahoo.com
2586  .msdn.microsoft.com
2587  .redhat.com
2588
2589  # Alternative way of saying the same thing
2590  {-no-cookies-set -no-cookies-read -no-cookies-keep}
2591  .sourceforge.net
2592  .sf.net
2593    </literallayout>
2594   </msgtext> 
2595  </literal>
2596 </para>
2597
2598 <para>
2599  Now turn off <quote>fast redirects</quote>, and then we allow two exceptions:
2600 </para>
2601
2602 <para>
2603  <literal>
2604   <msgtext> 
2605    <literallayout>
2606  # Turn them off!
2607  {+fast-redirects}
2608  
2609  # Reverse it for these two sites, which don't work right without it.
2610  {-fast-redirects}
2611  www.ukc.ac.uk/cgi-bin/wac\.cgi\?
2612  login.yahoo.com
2613    </literallayout>
2614   </msgtext> 
2615  </literal>
2616 </para>
2617
2618 <para>
2619  Turn on page filtering, with one exception for sourceforge:
2620 </para>
2621
2622 <para>
2623  <literal>
2624   <msgtext> 
2625    <literallayout>
2626  # Run everything through the default filter file (<filename>re_filterfile</filename>):
2627  {+filter}
2628  
2629  # But please don't re_filter code from sourceforge!
2630  {-filter}
2631  .cvs.sourceforge.net
2632    </literallayout>
2633   </msgtext> 
2634  </literal>
2635 </para>
2636
2637 <para>
2638  Now some URLs that we want <quote>blocked</quote>, ie we won't see them.
2639  Many of these use regular expressions that will expand to match multiple 
2640  URLs:
2641 </para>
2642
2643 <para>
2644  <literal>
2645   <msgtext> 
2646    <literallayout>
2647   # Blocklist:
2648   {+block}
2649   /.*/(.*[-_.])?ads?[0-9]?(/|[-_.].*|\.(gif|jpe?g))
2650   /.*/(.*[-_.])?count(er)?(\.cgi|\.dll|\.exe|[?/])
2651   /.*/(ng)?adclient\.cgi
2652   /.*/(plain|live|rotate)[-_.]?ads?/
2653   /.*/(sponsor)s?[0-9]?/
2654   /.*/_?(plain|live)?ads?(-banners)?/
2655   /.*/abanners/
2656   /.*/ad(sdna_image|gifs?)/
2657   /.*/ad(server|stream|juggler)\.(cgi|pl|dll|exe)
2658   /.*/adbanners/
2659   /.*/adserver
2660   /.*/adstream\.cgi
2661   /.*/adv((er)?ts?|ertis(ing|ements?))?/
2662   /.*/banner_?ads/
2663   /.*/banners?/
2664   /.*/banners?\.cgi/
2665   /.*/cgi-bin/centralad/getimage
2666   /.*/images/addver\.gif
2667   /.*/images/marketing/.*\.(gif|jpe?g)
2668   /.*/popupads/
2669   /.*/siteads/
2670   /.*/sponsor.*\.gif
2671   /.*/sponsors?[0-9]?/
2672   /.*/advert[0-9]+\.jpg
2673   /Media/Images/Adds/
2674   /ad_images/
2675   /adimages/
2676   /.*/ads/
2677   /bannerfarm/
2678   /grafikk/annonse/
2679   /graphics/defaultAd/
2680   /image\.ng/AdType
2681   /image\.ng/transactionID
2682   /images/.*/.*_anim\.gif # alvin brattli
2683   /ip_img/.*\.(gif|jpe?g)
2684   /rotateads/
2685   /rotations/ 
2686   /worldnet/ad\.cgi
2687   /cgi-bin/nph-adclick.exe/
2688   /.*/Image/BannerAdvertising/
2689   /.*/ad-bin/
2690   /.*/adlib/server\.cgi
2691   /autoads/
2692    </literallayout>
2693   </msgtext> 
2694  </literal>
2695 </para>
2696
2697 </sect3>
2698
2699 <!--  ~  End section  ~  -->
2700
2701
2702 <!--   ~~~~~       New section      ~~~~~     -->
2703 <sect3>
2704 <title>Aliases</title>
2705 <para>
2706  Custom <quote>actions</quote>, known to <application>Junkbuster</application>
2707  as <quote>aliases</quote>, can be defined by combining other <quote>actions</quote>.
2708  These can in turn be invoked just like the built-in <quote>actions</quote>.
2709  Currently, an alias can contain any character except space, tab, <quote>=</quote>,
2710  <quote>{</quote> or <quote>}</quote>. But please use only <quote>a</quote>-
2711  <quote>z</quote>, <quote>0</quote>-<quote>9</quote>, <quote>+</quote>, and
2712  <quote>-</quote>. Alias names are not case sensitive, and 
2713  <emphasis>must be defined  before anything</emphasis> else in the
2714  <filename>ijb.action</filename>file ! And there can only be one set of
2715  <quote>aliases</quote> defined.
2716 </para>
2717
2718 <para>
2719  Now let's define a few aliases:
2720 </para>
2721
2722 <para>
2723  <literal>
2724   <msgtext> 
2725    <literallayout>
2726  # Useful customer aliases we can use later. These must come first!
2727  {{alias}}
2728  +no-cookies = +no-cookies-set +no-cookies-read
2729  -no-cookies = -no-cookies-set -no-cookies-read
2730  fragile     = -block -no-cookies -filter -fast-redirects -hide-referer -no-popups
2731  shop        = -no-cookies -filter -fast-redirects
2732  +imageblock = +block +image
2733
2734  #For people who don't like to type too much:  ;-)
2735  c0 = +no-cookies
2736  c1 = -no-cookies
2737  c2 = -no-cookies-set +no-cookies-read
2738  c3 = +no-cookies-set -no-cookies-read
2739  #... etc.  Customize to your heart's content.
2740    </literallayout>
2741   </msgtext> 
2742  </literal>
2743 </para>
2744
2745 <para>
2746  Some examples using our <quote>shop</quote> and <quote>fragile</quote>
2747  aliases from above:
2748 </para>
2749
2750 <para>
2751  <literal>
2752   <msgtext> 
2753    <literallayout>
2754  # These sites are very complex and require
2755  # minimal interference.
2756  {fragile}
2757  .office.microsoft.com
2758  .windowsupdate.microsoft.com
2759  .nytimes.com
2760
2761  # Shopping sites - still want to block ads.
2762  {shop}
2763  .quietpc.com
2764  .worldpay.com   # for quietpc.com
2765  .jungle.com
2766  .scan.co.uk
2767
2768  # These shops require pop-ups
2769  {shop -no-popups}
2770  .dabs.com
2771  .overclockers.co.uk
2772    </literallayout>
2773   </msgtext> 
2774  </literal>
2775 </para>
2776
2777 </sect3>
2778 </sect2>
2779
2780 <!--  ~  End section  ~  -->
2781
2782
2783 <!--   ~~~~~       New section      ~~~~~     -->
2784 <sect2 id="filterfile">
2785 <title>The Filter File</title>
2786 <para>
2787  Any web page can be dynamically modified with the filter file. This
2788  modification can be removal, or re-writing, of any web page content,
2789  including tags and non-visible content. The default filter file is
2790  <filename>re_filterfile</filename>, located in the config directory. 
2791 </para>
2792
2793 <para>
2794  This file uses regular expressions to alter or remove any string in the
2795  target page. The expressions can only operate on one line at a time .Some
2796  examples from the included default <filename>re_filterfile</filename>:
2797 </para>
2798
2799 <para>
2800  Stop web pages from displaying annoying messages in the status bar by
2801  deleting such references:
2802 </para>
2803
2804 <para>
2805  <literal>
2806   <msgtext> 
2807    <literallayout>
2808  # The status bar is for displaying link targets, not pointless buzzwords.
2809  # Again, check it out on http://www.airport-cgn.de/.
2810  s/status='.*?';*//ig
2811    </literallayout>
2812   </msgtext> 
2813  </literal>
2814 </para>
2815
2816 <para>
2817  Just for kicks, replace any occurrence of <quote>Microsoft</quote> with
2818  <quote>MicroSuck</quote>: 
2819 </para>
2820
2821 <para>
2822  <literal>
2823   <msgtext> 
2824    <literallayout>
2825  s/microsoft(?!.com)/MicroSuck/ig
2826    </literallayout>
2827   </msgtext> 
2828  </literal>
2829 </para>
2830
2831 <para>
2832  Kill those auto-refresh tags:
2833 </para>
2834
2835 <para>
2836  <literal>
2837   <msgtext> 
2838    <literallayout>
2839  # Kill refresh tags. I like to refresh myself. Manually.
2840  # check it out on http://www.airport-cgn.de/ and go to the arrivals page.
2841  #
2842  s/&lt;meta[^&gt;]*http-equiv[^&gt;]*refresh.*URL=([^&gt;]*?)"?&gt;/&lt;link rev="x-refresh" href=$1&gt;/i
2843  s/&lt;meta[^&gt;]*http-equiv="?page-enter"?[^&gt;]*content=[^&gt;]*&gt;/&lt;!--no page enter for me--&gt;/i
2844    </literallayout>
2845   </msgtext> 
2846  </literal>
2847 </para>
2848
2849 </sect2>
2850
2851 <!--  ~  End section  ~  -->
2852
2853
2854
2855 <!--   ~~~~~       New section      ~~~~~     -->
2856
2857 <sect2>
2858 <title>Templates</title>
2859 <para>
2860  When <application>Junkbuster</application> displays one of its internal 
2861  pages, such as a 404 Not Found error page, it uses the appropriate template.
2862  On Linux, BSD, and Unix, these are located in
2863  <filename>/etc/junkbuster/templates</filename> by default. These may be
2864  customized, if desired.
2865
2866 </para>
2867 </sect2>
2868
2869 </sect1>
2870
2871 <!--  ~  End section  ~  -->
2872
2873
2874
2875 <!--   ~~~~~       New section      ~~~~~     -->
2876 <sect1 id="quickstart"><title>Quickstart to Using Junkbuster</title>
2877 <para>
2878  Install package, then run and enjoy! <application>JunkBuster</application> 
2879  is typically started by specifying the main configuration file to be 
2880  used on the command line. Example Unix startup command:
2881 </para>
2882
2883 <para>
2884  <screen>
2885  
2886  # /usr/sbin/junkbuster /etc/junkbuster/config
2887  
2888  </screen>
2889 </para>
2890
2891 <para>
2892  An init script is provided for SuSE and Redhat.
2893 </para>
2894
2895 <para>
2896 For for SuSE: /etc/rc.d/junkbuster start
2897 </para>
2898
2899 <para>
2900 For RedHat: /etc/rc.d/init.d/junkbuster start
2901 </para>
2902
2903
2904 <para>
2905  If no configuration file is specified on the command line,
2906  <application>Junkbuster</application> will look for a file named
2907  <filename>config</filename> in the current directory. Except on Win32 where
2908  it will try <filename>config.txt</filename>. If no file is specified on the
2909  command line and no default configuration file can be found, 
2910  <application>Junkbuster</application> will fail to start.
2911 </para>
2912
2913 <para>
2914  Be sure your browser is set to use the proxy which is by default at
2915  localhost, port 8118. With <application>Netscape</application> (and
2916  <application>Mozilla</application>), this can be set under <literal>Edit
2917  -&gt; Preferences -&gt; Advanced -&gt; Proxies -&gt; HTTP Proxy</literal>.
2918  For <application>Internet Explorer</application>: <literal>Tools &gt;
2919  Internet Properties -&gt; Connections -&gt; LAN Setting</literal>. Then,
2920  check <quote>Use Proxy</quote> and fill in the appropriate info (Address:
2921  localhost, Port: 8118). Include if HTTPS proxy support too.
2922 </para>
2923
2924 <para>
2925  The included default configuration files should give a reasonable starting
2926  point, though may be somewhat aggressive in blocking junk. You will probably
2927  want to keep an eye out for sites that require persistent cookies, and add these to
2928  <filename>ijb.action</filename> as needed. By default, most of these will
2929  be accepted only during the current browser session, until you add them to
2930  the configuration. If you want the browser to handle this instead, you will
2931  need to edit <filename>ijb.action</filename> and disable this feature. If you
2932  use more than one browser, it would make more sense to let
2933  <application>Junkbuster</application> handle this. In which case, the
2934  browser(s) should be set to accept all cookies.
2935 </para>
2936
2937 <para>
2938  If a particular site shows problems loading properly, try adding it 
2939  to the <literal>{fragile}</literal> section of
2940  <filename>ijb.action</filename>. This will turn off most actions for 
2941  this site.
2942 </para>
2943
2944 <para>
2945  <application>Junkbuster</application> is HTTP/1.1 compliant,  but not all 1.1
2946  features are as yet implemented. If browsers that support HTTP/1.1 (like
2947  <application>Mozilla</application> or recent versions of I.E.) experience
2948  problems, you might try to force HTTP/1.0 compatibility. For Mozilla, look
2949  under <literal>Edit -&gt; Preferences -&gt; Debug -&gt; Networking</literal>.
2950  Or set the <quote>+downgrade</quote> config option in
2951  <filename>ijb.action</filename>.
2952 </para>
2953
2954 <para>
2955  After running <application>Junkbuster</application> for a while, you can 
2956  start to fine tune the configuration to suit your personal, or site, 
2957  preferences and requirements. There are many, many aspects that can 
2958  be customized. <quote>Actions</quote> (as specified in <filename>ijb.action</filename>) 
2959  can be adjusted by pointing your browser to 
2960  <ulink url="http://i.j.b/">http://i.j.b/</ulink>, 
2961  and then follow the link to <quote>edit the actions list</quote>. 
2962  (This is an internal page and does not require Internet access.)
2963 </para>
2964
2965 <para>
2966  In fact, various aspects of <application>Junkbuster</application>
2967  configuration can be viewed from this page, including 
2968  current configuration parameters, source code version numbers, 
2969  the browser's request headers, and <quote>actions</quote> that apply 
2970  to a given URL. In addition to the <filename>ijb.action</filename> file 
2971  editor mentioned above, <application>Junkbuster</application> can also 
2972  be turned <quote>on</quote> and <quote>off</quote> from this page.
2973 </para>
2974
2975 <para>
2976  If you encounter problems, please verify it is a
2977  <application>Junkbuster</application> bug, by disabling
2978  <application>Junkbuster</application>, and then trying the same page. 
2979  Also, try another browser if possible to eliminate browser or site 
2980  problems. Before reporting it as a bug, see if there is not a configuration 
2981  option that is enabled that is causing the page not to load. You can 
2982  then add an exception for that page or site. If a bug, please report it to
2983  the developers (see below). 
2984 </para>
2985
2986
2987
2988 <!--   ~~~~~       New section      ~~~~~     -->
2989
2990 <sect2>
2991 <title>Command Line Options</title>
2992 <para>
2993  <application>JunkBuster</application> may be invoked with the following
2994  command-line options:
2995 </para>
2996
2997 <para>
2998  <itemizedlist>
2999
3000  <listitem>
3001   <para>
3002     <emphasis>--version</emphasis>
3003   </para>
3004   <para>
3005      Print version info and exit, Unix only.
3006   </para>
3007  </listitem> 
3008  <listitem>
3009   <para>
3010     <emphasis>--help</emphasis>
3011   </para>
3012   <para>
3013    Print a short usage info and exit, Unix only.
3014   </para>
3015  </listitem> 
3016  <listitem>
3017   <para>
3018    <emphasis>--no-daemon</emphasis>
3019   </para>
3020   <para>
3021    Don't become a daemon, i.e. don't fork and become process group
3022    leader, don't detach from controlling tty. Unix only.
3023   </para>
3024  </listitem> 
3025  <listitem>
3026   <para>
3027    <emphasis>--pidfile FILE</emphasis>
3028   
3029   </para>
3030   <para>
3031    On startup, write the process ID to <emphasis>FILE</emphasis>. Delete the
3032    <emphasis>FILE</emphasis> on exit. Failiure to create or delete the
3033    <emphasis>FILE</emphasis> is non-fatal. If no <emphasis>FILE</emphasis>
3034    option is given, no PID file will be used. Unix only.
3035   </para>
3036  </listitem> 
3037  <listitem>
3038   <para>
3039    <emphasis>--user USER[.GROUP]</emphasis>
3040   
3041   </para>
3042   <para>
3043    After (optionally) writing the PID file, assume the user  ID  of
3044    <emphasis>USER</emphasis>, and if included the GID of GROUP.  Exit if the
3045    privileges are not sufficient to do so. Unix only.
3046   </para>
3047  </listitem> 
3048  <listitem>
3049   <para>
3050     <emphasis>configfile</emphasis>
3051   </para>
3052   <para>
3053     If no <emphasis>configfile</emphasis> is included on the command line, 
3054     <application>JunkBuster</application> will look for a file named 
3055     <quote>config</quote> in the current directory (except on Win32 
3056     where it will look for <quote>config.txt</quote> instead). Specify 
3057     full path to avoid confusion.
3058   </para>
3059  </listitem> 
3060
3061  </itemizedlist>
3062 </para>
3063
3064 </sect2>
3065
3066 </sect1>
3067
3068 <!--  ~  End section  ~  -->
3069
3070
3071
3072 <!--   ~~~~~       New section      ~~~~~     -->
3073
3074 <sect1 id="contact"><title>Contacting the Developers, Bug Reporting and Feature
3075 Requests</title>
3076 <para>
3077 We value your feedback. However, to provide you with the best support,
3078 please note:
3079
3080  <itemizedlist>
3081
3082   <listitem><para>Use the <ulink url="http://sourceforge.net/tracker/?group_id=11118&#38;atid=211118">Sourceforge support forum</ulink> to get
3083   help.</para></listitem>
3084  
3085   <listitem><para>Submit bugs only thru our <ulink url="http://sourceforge.net/tracker/?group_id=11118&#38;atid=111118">Sourceforge bug
3086       forum</ulink>. 
3087 Make sure that the bug has not already been submitted.  Please try to
3088 verify that it is a <application>Junkbuster</application> bug, and not
3089 a browser or site bug first. If you are using your own custom configuration,
3090 please try the stock configs to see if the problem is a configuration
3091 related bug.  And if not using the latest development snapshot, please
3092 try the latest one. Or even better, CVS sources.</para>
3093 </listitem>
3094
3095  
3096   <listitem><para>Submit feature requests only thru our <ulink
3097       url="http://sourceforge.net/tracker/?atid=361118&#38;group_id=11118&#38;func=browse">Sourceforge feature request forum</ulink>.</para></listitem>
3098
3099
3100  </itemizedlist>
3101
3102 </para>
3103
3104 <para>
3105 For any other issues, feel free to use the <ulink url="http://sourceforge.net/mail/?group_id=11118">mailing lists</ulink>.
3106 </para>
3107
3108 <para>
3109  Anyone interested in actively participating in development and related 
3110  discussions can join the appropriate mailing list  
3111  <ulink url="http://sourceforge.net/mail/?group_id=11118">here</ulink>.
3112  Archives are available here too.
3113 </para>
3114
3115 </sect1>
3116
3117
3118 <!--   ~~~~~       New section      ~~~~~     -->
3119 <sect1 id="copyright"><title>Copyright and History</title>
3120
3121 <sect2>
3122 <title>License</title>
3123 <para>
3124  <application>Internet Junkbuster</application> is free software; you can
3125  redistribute it and/or modify it under the terms of the GNU General Public
3126  License as published by the Free Software Foundation; either version 2 of the
3127  License, or (at your option) any later version.
3128 </para>
3129
3130 <para>
3131  This program is distributed in the hope that it will be useful, but WITHOUT
3132  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
3133  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
3134  details, which is available from <ulink
3135  url="http://www.gnu.org/copyleft/gpl.html">the Free Software Foundation,
3136  Inc</ulink>, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
3137 </para>
3138
3139 </sect2>
3140
3141 <!--  ~  End section  ~  -->
3142
3143
3144 <!--   ~~~~~       New section      ~~~~~     -->
3145
3146 <sect2>
3147 <title>History</title>
3148 <para>
3149  <application>Junkbuster</application> was originally written by Anonymous 
3150  Coders and <ulink
3151  url="http://www.junkbusters.com/ht/en/ijbfaq.html">Junkbuster's
3152  Corporation</ulink>, and was released as free open-source software under the
3153  GNU GPL. <ulink url="http://www.waldherr.org/junkbuster/">Stefan
3154  Waldherr</ulink> made many improvements, and started the <ulink
3155  url="http://sourceforge.net/projects/ijbswa/">SourceForge project</ulink> to
3156  rekindle development. There are now several active developers contributing.
3157  The last stable release was v2.0.2, which has now grown whiskers ;-).
3158 </para>
3159
3160 </sect2>
3161
3162 </sect1>
3163
3164 <!--   ~~~~~       New section      ~~~~~     -->
3165 <sect1 id="seealso"><title>See also</title>
3166 <para>
3167  
3168  <simplelist>
3169   <member>
3170    &nbsp; <ulink url="http://sourceforge.net/projects/ijbswa">http://sourceforge.net/projects/ijbswa</ulink>
3171   </member>
3172  </simplelist>
3173  <simplelist>
3174   <member>
3175    &nbsp; <ulink url="http://ijbswa.sourceforge.net/">http://ijbswa.sourceforge.net/</ulink>
3176   </member>
3177  </simplelist>
3178  <simplelist>
3179   <member>
3180    &nbsp; <ulink url="http://i.j.b/">http://i.j.b/</ulink>
3181   </member>
3182  </simplelist>
3183  <simplelist>
3184   <member>
3185    &nbsp; <ulink url="http://www.junkbusters.com/ht/en/cookies.html">http://www.junkbusters.com/ht/en/cookies.html</ulink>
3186   </member>
3187  </simplelist>
3188  <simplelist>
3189   <member>
3190    &nbsp; <ulink url="http://www.waldherr.org/junkbuster/">http://www.waldherr.org/junkbuster/</ulink>
3191   </member>
3192  </simplelist>
3193  <simplelist>
3194   <member>
3195    &nbsp; <ulink url="http://privacy.net/analyze/">http://privacy.net/analyze/</ulink>
3196   </member>
3197  </simplelist>
3198  <simplelist>
3199   <member>
3200    &nbsp;<ulink url="http://www.squid-cache.org/">http://www.squid-cache.org/</ulink>
3201   </member>
3202  </simplelist>
3203
3204 </para>
3205 </sect1>
3206
3207
3208
3209 <!--   ~~~~~       New section      ~~~~~     -->
3210 <sect1 id="appendix"><title>Appendix</title>
3211
3212
3213 <!--   ~~~~~       New section      ~~~~~     -->
3214 <sect2 id="regex">
3215 <title>Regular Expressions</title>
3216 <para>
3217  <application>Junkbuster</application> can use <quote>regular expressions</quote> 
3218  in various config files. Assuming support for <quote>pcre</quote> (Perl
3219  Compatible Regular Expressions) is compiled in, which is the default. Such
3220  configuration directives do not require regular expressions, but they can be
3221  used to increase flexibility by matching a pattern with wild-cards against
3222  URLs.
3223 </para>
3224
3225 <para>
3226  If you are reading this, you probably don't understand what <quote>regular
3227  expressions</quote> are, or what they can do. So this will be a very brief
3228  introduction only. A full explanation would require a book ;-)
3229 </para>
3230
3231 <para>
3232  <quote>Regular expressions</quote> is a way of matching one character
3233  expression against another to see if it matches or not. One of the
3234  <quote>expressions</quote> is a literal string of readable characters
3235  (letter, numbers, etc), and the other is a complex string of literal
3236  characters combined with wild-cards, and other special characters, called
3237  meta-characters. The <quote>meta-characters</quote> have special meanings and
3238  are used to build the complex pattern to be matched against. Perl Compatible
3239  Regular Expressions is an enhanced form of the regular expression language
3240  with backward compatibility.
3241 </para>
3242
3243 <para>
3244  To make a simple analogy, we do something similar when we use wild-card
3245  characters when listing files with the <command>dir</command> command in DOS. 
3246  <literal>*.*</literal> matches all filenames. The <quote>special</quote>
3247  character here is the asterisk which matches any and all characters. We can be
3248  more specific and use <literal>?</literal> to match just individual
3249  characters. So <quote>dir file?.text</quote> would match
3250  <quote>file1.txt</quote>, <quote>file2.txt</quote>, etc. We are pattern
3251  matching, using a similar technique to <quote>regular expressions</quote>!
3252 </para>
3253
3254 <para>
3255  Regular expressions do essentially the same thing, but are much, much more
3256  powerful. There are many more <quote>special characters</quote> and ways of 
3257  building complex patterns however. Let's look at a few of the common ones,
3258  and then some examples:
3259 </para>
3260
3261 <simplelist>
3262  <member>
3263   <emphasis>.</emphasis> - Matches any single character, e.g. <quote>a</quote>,
3264   <quote>A</quote>, <quote>4</quote>, <quote>:</quote>, or <quote>@</quote>.
3265  </member>
3266 </simplelist>
3267
3268 <simplelist>
3269  <member>
3270   <emphasis>?</emphasis> - The preceding character or expression is matched ZERO or ONE
3271   times. Either/or.
3272  </member>
3273 </simplelist>
3274
3275 <simplelist>
3276  <member>
3277   <emphasis>+</emphasis> - The preceding character or expression is matched ONE or MORE
3278   times.
3279  </member>
3280 </simplelist>
3281
3282 <simplelist>
3283  <member>
3284   <emphasis>*</emphasis> - The preceding character or expression is matched ZERO or MORE
3285   times.
3286  </member>
3287 </simplelist>
3288
3289 <simplelist>
3290  <member>
3291   <emphasis>\</emphasis> - The <quote>escape</quote> character denotes that
3292   the following character should be taken literally. This is used where one of the 
3293   special characters (e.g. <quote>.</quote>) needs to be taken literally and
3294   not as a special meta-character.
3295  </member>
3296 </simplelist>
3297
3298 <simplelist>
3299  <member>
3300   <emphasis>[]</emphasis> - Characters enclosed in brackets will be matched if
3301   any of the enclosed characters are encountered.
3302  </member>
3303 </simplelist>
3304
3305 <simplelist>
3306  <member>
3307   <emphasis>()</emphasis> - parentheses are used to group a sub-expression,
3308   or multiple sub-expressions.
3309  </member>
3310 </simplelist>
3311
3312 <simplelist>
3313  <member>
3314   <emphasis>|</emphasis> - The <quote>bar</quote> character works like an
3315   <quote>or</quote> conditional statement. A match is successful if the
3316   sub-expression on either side of <quote>|</quote> matches.
3317  </member>
3318 </simplelist>
3319
3320 <simplelist>
3321  <member>
3322   <emphasis>s/string1/string2/g</emphasis> - This is used to rewrite strings of text. 
3323   <quote>string1</quote> is replaced by <quote>string2</quote> in this
3324   example.
3325  </member>
3326 </simplelist>
3327
3328 <para>
3329  These are just some of the ones you are likely to use when matching URLs with 
3330  <application>Junkbuster</application>, and is a long way from a definitive
3331  list. This is enough to get us started with a few simple examples which may
3332  be more illuminating:
3333 </para>
3334
3335 <para>
3336  <emphasis><literal>/.*/banners/.*</literal></emphasis> - A  simple example
3337  that uses the common combination of <quote>.</quote> and <quote>*</quote> to 
3338  denote any character, zero or more times. In other words, any string at all.
3339  So we start with a literal forward slash, then our regular expression pattern 
3340  (<quote>.*</quote>) another literal forward slash, the string
3341  <quote>banners</quote>, another forward slash, and lastly another
3342  <quote>.*</quote>. We are building 
3343  a directory path here. This will match any file with the path that has a
3344  directory named <quote>banners</quote> in it. The <quote>.*</quote> matches
3345  any characters, and this could conceivably be more forward slashes, so it
3346  might expand into a much longer looking path. For example, this could match:
3347  <quote>/eye/hate/spammers/banners/annoy_me_please.gif</quote>, or just
3348  <quote>/banners/annoying.html</quote>, or almost an infinite number of other
3349  possible combinations, just so it has <quote>banners</quote> in the path
3350  somewhere.
3351 </para>
3352
3353 <para>
3354  A now something a little more complex:
3355 </para>
3356
3357 <para>
3358  <emphasis><literal>/.*/adv((er)?ts?|ertis(ing|ements?))?/</literal></emphasis> - 
3359  We have several literal forward slashes again (<quote>/</quote>), so we are
3360  building another expression that is a file path statement. We have another 
3361  <quote>.*</quote>, so we are matching against any conceivable sub-path, just so
3362  it matches our expression. The only true literal that <emphasis>must
3363  match</emphasis> our pattern is <application>adv</application>, together with
3364  the forward slashes. What comes after the <quote>adv</quote> string is the
3365  interesting part. 
3366 </para>
3367
3368 <para>
3369  Remember the <quote>?</quote> means the preceding expression (either a
3370  literal character or anything grouped with <quote>(...)</quote> in this case)
3371  can exist or not, since this means either zero or one match. So
3372  <quote>((er)?ts?|ertis(ing|ements?))</quote> is optional, as are the
3373  individual sub-expressions: <quote>(er)</quote>,
3374  <quote>(ing|ements?)</quote>, and the <quote>s</quote>. The <quote>|</quote>
3375  means <quote>or</quote>. We have two of those. For instance, 
3376  <quote>(ing|ements?)</quote>, can expand to match either <quote>ing</quote> 
3377  <emphasis>OR</emphasis> <quote>ements?</quote>. What is being done here, is an
3378  attempt at matching as many variations of <quote>advertisement</quote>, and 
3379  similar, as possible. So this would expand to match just <quote>adv</quote>,
3380  or <quote>advert</quote>, or <quote>adverts</quote>, or
3381  <quote>advertising</quote>, or <quote>advertisement</quote>, or
3382  <quote>advertisements</quote>. You get the idea. But it would not match 
3383  <quote>advertizements</quote> (with a <quote>z</quote>). We could fix that by
3384  changing our regular expression to: 
3385  <quote>/.*/adv((er)?ts?|erti(s|z)(ing|ements?))?/</quote>, which would then match
3386  either spelling.
3387 </para>
3388
3389 <para>
3390  <emphasis><literal>/.*/advert[0-9]+\.(gif|jpe?g)</literal></emphasis> - Again 
3391  another path statement with forward slashes. Anything in the square brackets 
3392  <quote>[]</quote> can be matched. This is using <quote>0-9</quote> as a
3393  shorthand expression to mean any digit one through nine. It is the same as
3394  saying <quote>0123456789</quote>. So any digit matches. The <quote>+</quote>
3395  means one or more of the preceding expression must be included. The preceding 
3396  expression here is what is in the square brackets -- in this case, any digit 
3397  one through nine. Then, at the end, we have a grouping: <quote>(gif|jpe?g)</quote>. 
3398  This includes a <quote>|</quote>, so this needs to match the expression on
3399  either side of that bar character also. A simple <quote>gif</quote> on one side, and the other
3400  side will in turn match either <quote>jpeg</quote> or <quote>jpg</quote>,
3401  since the <quote>?</quote> means the letter <quote>e</quote> is optional and
3402  can be matched once or not at all. So we are building an expression here to
3403  match image GIF or JPEG type image file. It must include the literal
3404  string <quote>advert</quote>, then one or more digits, and a <quote>.</quote>
3405  (which is now a literal, and not a special character, since it is escaped
3406  with <quote>\</quote>), and lastly either <quote>gif</quote>, or
3407  <quote>jpeg</quote>, or <quote>jpg</quote>. Some possible matches would
3408  include: <quote>//advert1.jpg</quote>,
3409  <quote>/nasty/ads/advert1234.gif</quote>,
3410  <quote>/banners/from/hell/advert99.jpg</quote>. It would not match
3411  <quote>advert1.gif</quote> (no leading slash), or
3412  <quote>/adverts232.jpg</quote> (the expression does not include an
3413  <quote>s</quote>), or <quote>/advert1.jsp</quote> (<quote>jsp</quote> is not
3414  in the expression anywhere).
3415 </para>
3416
3417 <para>
3418  <emphasis><literal>s/microsoft(?!.com)/MicroSuck/i</literal></emphasis> - This is 
3419  a substitution. <quote>MicroSuck</quote> will replace any occurrence of 
3420  <quote>microsoft</quote>.  The <quote>i</quote> at the end of the expression
3421  means ignore case. The <quote>(?!.com)</quote> means 
3422  the match should fail if <quote>microsoft</quote> is followed by
3423  <quote>.com</quote>. In other words, this acts like a <quote>NOT</quote>
3424  modifier. In case this is a hyperlink, we don't want to break it ;-).
3425 </para>
3426
3427 <para>
3428  We are barely scratching the surface of regular expressions here so that you
3429  can understand the default <application>Junkbuster</application>
3430  configuration files, and maybe use this knowledge to customize your own
3431  installation. There is much, much more that can be done with regular
3432  expressions. Now that you know enough to get started, you can learn more on
3433  your own :/
3434 </para>
3435
3436 <para>
3437  More reading on Perl Compatible Regular expressions: 
3438  <ulink url="http://www.perldoc.com/perl5.6/pod/perlre.html">http://www.perldoc.com/perl5.6/pod/perlre.html</ulink>
3439 </para>
3440
3441 </sect2>
3442
3443 <!--  ~  End section  ~  -->
3444
3445
3446 <!--   ~~~~~       New section      ~~~~~     -->
3447 <sect2>
3448 <title>JunkBuster's Internal Pages</title>
3449
3450 <para>
3451  Since <application>JunkBuster</application> proxies each requested 
3452  web page, it is easy for <application>JunkBuster</application> to 
3453  trap certain URLs. In this way, we can talk directly to
3454  <application>JunkBuster</application>, and see how it is 
3455  configured, see how our rules are being applied, change these 
3456  rules and other configuration options, and even turn
3457  <application>JunkBuster</application> off.
3458
3459 </para>
3460
3461 <para>
3462  The URLs listed below are the special ones that allow direct access 
3463  to <application>JunkBuster</application>. Of course,
3464  <application>JunkBuster</application> must be running to access these. If 
3465  not, you will get a friendly error message.
3466
3467 </para>
3468
3469 <para>
3470  <itemizedlist>
3471
3472  <listitem>
3473   <para>  
3474    Junkbuster main page: 
3475   </para>
3476   <blockquote>
3477    <para> 
3478      <ulink url="http://ijbswa.sourceforge.net/config/">http://ijbswa.sourceforge.net/config/</ulink>
3479    </para>
3480   </blockquote>
3481   <para>
3482    Alternately, this may be reached at <ulink url="http://i.j.b/">http://i.j.b/</ulink>, 
3483    but this variation may not work as reliably as the above in some
3484    configurations.
3485   </para>
3486  </listitem>
3487
3488  <listitem>
3489   <para>  
3490     Show information about the current configuration: 
3491   </para>
3492    <blockquote>
3493    <para> 
3494     <ulink url="http://ijbswa.sourceforge.net/config/show-status">http://ijbswa.sourceforge.net/config/show-status</ulink>
3495    </para>
3496   </blockquote>
3497  </listitem>
3498  
3499  <listitem>
3500   <para>  
3501     Show the source code version numbers:
3502   </para>
3503   <blockquote>
3504    <para> 
3505     <ulink url="http://ijbswa.sourceforge.net/config/show-version">http://ijbswa.sourceforge.net/config/show-version</ulink>
3506    </para>
3507   </blockquote>
3508  </listitem>
3509  
3510  <listitem>
3511   <para>  
3512    Show the client's request headers:
3513   </para>
3514   <blockquote>
3515    <para> 
3516     <ulink url="http://ijbswa.sourceforge.net/config/show-request">http://ijbswa.sourceforge.net/config/show-request</ulink>
3517    </para>
3518   </blockquote>
3519  </listitem>
3520  
3521  <listitem>
3522   <para>  
3523    Show which actions apply to a URL and why:
3524   </para>
3525    <blockquote>
3526    <para> 
3527     <ulink url="http://ijbswa.sourceforge.net/config/show-url-info">http://ijbswa.sourceforge.net/config/show-url-info</ulink>
3528    </para>
3529   </blockquote>
3530  </listitem>
3531  
3532  <listitem>
3533   <para>  
3534    Toggle JunkBuster on or off:
3535   </para>
3536    <blockquote>
3537    <para> 
3538     <ulink url="http://ijbswa.sourceforge.net/config/toggle">http://ijbswa.sourceforge.net/config/toggle</ulink>
3539    </para>
3540   </blockquote>
3541   <para>
3542    Short cuts. Turn off, then on: 
3543   </para>
3544    <blockquote>
3545    <para> 
3546      <ulink url="http://ijbswa.sourceforge.net/config/toggle?set=disable">http://ijbswa.sourceforge.net/config/toggle?set=disable</ulink>
3547    </para>
3548   </blockquote>
3549    <blockquote>
3550    <para> 
3551      <ulink url="http://ijbswa.sourceforge.net/config/toggle?set=enable">http://ijbswa.sourceforge.net/config/toggle?set=enable</ulink>
3552    </para>
3553   </blockquote>
3554  </listitem>
3555
3556  <listitem>
3557   <para>  
3558    Edit the actions list file:
3559   </para>
3560    <blockquote>
3561    <para> 
3562     <ulink url="http://ijbswa.sourceforge.net/config/edit-actions">http://ijbswa.sourceforge.net/config/edit-actions</ulink>
3563    </para>
3564   </blockquote>
3565  </listitem>
3566  
3567  </itemizedlist>
3568 </para>
3569
3570 <para>
3571  These may be bookmarked for quick reference.
3572
3573 </para>
3574
3575 </sect2>
3576
3577 </sect1>
3578
3579  <!--
3580
3581  This program is free software; you can redistribute it 
3582  and/or modify it under the terms of the GNU General
3583  Public License as published by the Free Software
3584  Foundation; either version 2 of the License, or (at
3585  your option) any later version.
3586
3587  This program is distributed in the hope that it will
3588  be useful, but WITHOUT ANY WARRANTY; without even the
3589  implied warranty of MERCHANTABILITY or FITNESS FOR A
3590  PARTICULAR PURPOSE.  See the GNU General Public
3591  License for more details.
3592
3593  The GNU General Public License should be included with
3594  this file.  If not, you can view it at
3595  http://www.gnu.org/copyleft/gpl.html
3596  or write to the Free Software Foundation, Inc., 59
3597  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
3598
3599  $Log: user-manual.sgml,v $
3600  Revision 1.45  2002/03/09 17:43:53  swa
3601  more distros
3602
3603  Revision 1.44  2002/03/09 17:08:48  hal9
3604  New section on Jon's actions file editor, and move some stuff around.
3605
3606  Revision 1.43  2002/03/08 00:47:32  hal9
3607  Added imageblock{pattern}.
3608
3609  Revision 1.42  2002/03/07 18:16:55  swa
3610  looks better
3611
3612  Revision 1.41  2002/03/07 16:46:43  hal9
3613  Fix a few markup problems for jade.
3614
3615  Revision 1.40  2002/03/07 16:28:39  swa
3616  provide correct feedback channels
3617
3618  Revision 1.39  2002/03/06 16:19:28  hal9
3619  Note on perceived filtering slowdown per FR.
3620
3621  Revision 1.38  2002/03/05 23:55:14  hal9
3622  Stupid I did it again. Double hyphen in comment breaks jade.
3623
3624  Revision 1.37  2002/03/05 23:53:49  hal9
3625  jade barfs on '- -' embedded in comments. - -user option broke it.
3626
3627  Revision 1.36  2002/03/05 22:53:28  hal9
3628  Add new - - user option.
3629
3630  Revision 1.35  2002/03/05 00:17:27  hal9
3631  Added section on command line options.
3632
3633  Revision 1.34  2002/03/04 19:32:07  oes
3634  Changed default port to 8118
3635
3636  Revision 1.33  2002/03/03 19:46:13  hal9
3637  Emphasis on where/how to report bugs, etc
3638
3639  Revision 1.32  2002/03/03 09:26:06  joergs
3640  AmigaOS changes, config is now loaded from PROGDIR: instead of
3641  AmiTCP:db/junkbuster/ if no configuration file is specified on the
3642  command line.
3643
3644  Revision 1.31  2002/03/02 22:45:52  david__schmidt
3645  Just tweaking
3646
3647  Revision 1.30  2002/03/02 22:00:14  hal9
3648  Updated 'New Features' list. Ran through spell-checker.
3649
3650  Revision 1.29  2002/03/02 20:34:07  david__schmidt
3651  Update OS/2 build section
3652
3653  Revision 1.28  2002/02/24 14:34:24  jongfoster
3654  Formatting changes.  Now changing the doctype to DocBook XML 4.1
3655  will work - no other changes are needed.
3656
3657  Revision 1.27  2002/01/11 14:14:32  hal9
3658  Added a very short section on Templates
3659
3660  Revision 1.26  2002/01/09 20:02:50  hal9
3661  Fix bug re: auto-detect config file changes.
3662
3663  Revision 1.25  2002/01/09 18:20:30  hal9
3664  Touch ups for *.action files.
3665
3666  Revision 1.24  2001/12/02 01:13:42  hal9
3667  Fix typo.
3668
3669  Revision 1.23  2001/12/02 00:20:41  hal9
3670  Updates for recent changes.
3671
3672  Revision 1.22  2001/11/05 23:57:51  hal9
3673  Minor update for startup now daemon mode.
3674
3675  Revision 1.21  2001/10/31 21:11:03  hal9
3676  Correct 2 minor errors
3677
3678  Revision 1.18  2001/10/24 18:45:26  hal9
3679  *** empty log message ***
3680
3681  Revision 1.17  2001/10/24 17:10:55  hal9
3682  Catching up with Jon's recent work, and a few other things.
3683
3684  Revision 1.16  2001/10/21 17:19:21  swa
3685  wrong url in documentation
3686
3687  Revision 1.15  2001/10/14 23:46:24  hal9
3688  Various minor changes. Fleshed out SEE ALSO section.
3689
3690  Revision 1.13  2001/10/10 17:28:33  hal9
3691  Very minor changes.
3692
3693  Revision 1.12  2001/09/28 02:57:04  hal9
3694  Ditto :/
3695
3696  Revision 1.11  2001/09/28 02:25:20  hal9
3697  Ditto.
3698
3699  Revision 1.9  2001/09/27 23:50:29  hal9
3700  A few changes. A short section on regular expression in appendix.
3701
3702  Revision 1.8  2001/09/25 00:34:59  hal9
3703  Some additions, and re-arranging.
3704
3705  Revision 1.7  2001/09/24 14:31:36  hal9
3706  Diddling.
3707
3708  Revision 1.6  2001/09/24 14:10:32  hal9
3709  Including David's OS/2 installation instructions.
3710
3711  Revision 1.2  2001/09/13 15:27:40  swa
3712  cosmetics
3713
3714  Revision 1.1  2001/09/12 15:36:41  swa
3715  source files for junkbuster documentation
3716
3717  Revision 1.3  2001/09/10 17:43:59  swa
3718  first proposal of a structure.
3719
3720  Revision 1.2  2001/06/13 14:28:31  swa
3721  docs should have an author.
3722
3723  Revision 1.1  2001/06/13 14:20:37  swa
3724  first import of project's documentation for the webserver.
3725
3726  -->
3727
3728 </article>