Cosmetic documentation update.
[privoxy.git] / doc / ijbman.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
2 <!-- $Id$\r
3 \r
4      See copyright details at end of file\r
5 \r
6      After changing this file, please run it through "HTML Tidy"\r
7      (from http://www.w3.org/People/Raggett/tidy/)\r
8      It should have no warnings or errors.\r
9 -->\r
10 \r
11 <html>\r
12   <head>\r
13     <title>Internet Junkbuster Technical Information</title>\r
14     <meta name="description" content=\r
15     "The manual page for the Internet Junkbuster, free software to removes banner ads, cookies, and other stuff you don't want from your web browser.">\r
16     <meta name="keywords" content=\r
17     "stop, junk, busters, junkbusters, junkbuster, mail, email, e-mail, direct, spam, privacy, sharing, names, renting, direct, marketing, database, databases, junk mail, lists, environment, consumer, sending, opt out ">\r
18 <style type="text/css">\r
19 <!--\r
20 h2           { text-align: Center; font-family: arial, helvetica, sans-serif }\r
21 p.sans       { font-family: arial, helvetica, sans-serif }\r
22 b.dot        { color: #FF0000 }\r
23 b.eg         { font-family: arial, helvetica, sans-serif }\r
24 -->\r
25 </style>\r
26   </head>\r
27 \r
28   <body bgcolor="#f8f8f0" link="#000078" alink="#ff0022" vlink=\r
29   "#787878">\r
30     <p class="sans"><a href="http://ijbswa.sourceforge.net/">\r
31     Website</a> <b class="dot">&middot;</b> <b>Manual</b> <b class=\r
32     "dot">&middot;</b> <a href="ijbfaq.html">FAQ</a> <b class=\r
33     "dot">&middot;</b> <a href="gpl.html">GPL</a></p>\r
34 \r
35     <h1 align="center"><a name="top_of_page"></a>Internet\r
36     J<small>UNK<i style="color: #FF0000">BUSTER</i></small>\r
37     Technical Information</h1>\r
38 \r
39     <p align="center" class="sans"><a href="#description">\r
40     Options</a> <b class="dot">&middot;</b> <a href="#show">\r
41     Checking Options</a> <b class="dot">&middot;</b> <a href=\r
42     "#install">Installation</a> <b class="dot">&middot;</b> <a\r
43     href="#copyright">Copyright</a> <b class="dot">&middot;</b> <a\r
44     href="ijbfaq.html#top_of_page">(FAQ)</a></p>\r
45 \r
46     <h1>This document is out of date</h1>\r
47 \r
48     <p><b>Development of JunkBuster is ongoing and this document is\r
49     no longer current. However, it may provide some assistance. If\r
50     you have problems, please use the <a href=\r
51     "http://groups.yahoo.com/group/junkbuster-users/">Yahoo Groups\r
52     mailing list</a> (which includes an archive of mail), the\r
53     SourceForge.net <a href=\r
54     "http://sourceforge.net/projects/ijbswa/">project page</a>, or\r
55     see the project's <a href="http://ijbswa.sourceforge.net/">home\r
56     page</a>. Please also bear in mind that versions 2.9.x of\r
57     JunkBuster are development releases, and are not production\r
58     quality.</b></p>\r
59 \r
60     <h2><a name="man"></a>Manual Page</h2>\r
61 \r
62     <p>A copy of this page in standard <code>man</code> macro\r
63     format is included in the <a href="ijbfaq.html#tar">tar\r
64     archive</a>.</p>\r
65 \r
66     <h3><a name="name"></a><img border="0" src="fb.gif" alt="*"\r
67     width="14" height="14">&nbsp; Name</h3>\r
68 \r
69     <p><b><code>junkbuster</code></b> - The Internet Junkbuster\r
70     Proxy <a href=\r
71     "http://www.junkbusters.com/ht/en/legal.html#marks"><small>\r
72     <sup>TM</sup></small></a></p>\r
73 \r
74     <h3><a name="synopsis"></a><img border="0" src="fb.gif" alt="*"\r
75     width="14" height="14">&nbsp; Synopsis</h3>\r
76 \r
77     <p><code><b>junkbuster</b></code> <i>configfile</i> (Unix)<br>\r
78      <b><code>junkbstr.exe</code></b> [<i>configfile</i>]\r
79     (Windows)</p>\r
80 \r
81     <h3><a name="description"></a><img border="0" src="fb.gif" alt=\r
82     "*" width="14" height="14">&nbsp; Description</h3>\r
83 \r
84     <p><b><code>junkbuster</code></b> is an instrumentable proxy\r
85     that filters the HTTP stream between web servers and browsers.\r
86     Its main purposes are to block adverts and enhance privacy.</p>\r
87 \r
88     <p><a name="dual"></a>It is configured using a configuration\r
89     file and several files listing URL patterns.&nbsp; The\r
90     configuration file must be specified on the command line.&nbsp;\r
91     The Windows version will default to using the configuration\r
92     file <code>junkbstr.ini</code> if it exists and no argument was\r
93     given.</p>\r
94 \r
95     <p><a name="reread"></a>All files except the main configuration\r
96     file are checked for changes before each page is fetched, so\r
97     they may edited without restarting the proxy.</p>\r
98 \r
99     <h4>Options</h4>\r
100 \r
101     <dl>\r
102       <dt><i><a name="o_b"></a></i><a name=\r
103       "blockfile"></a><code>blockfile</code>&nbsp;&nbsp; <i>\r
104       blockfile</i></dt>\r
105 \r
106       <dd>\r
107         <p><a href="ijbfaq.html#blocking">Block</a> requests to\r
108         URLs matching any pattern given in the lines of the <i>\r
109         blockfile</i>. The <b><code>junkbuster</code></b> instead\r
110         returns status 202, indicating that the request has been\r
111         accepted (though not completed), and a <a href=\r
112         "ijbfaq.html#show">message identifying itself</a> (though\r
113         the browser may display only a broken image icon).&nbsp;\r
114         The syntax of a pattern is <code>\r
115         [domain][:port][/path]</code> (the <code>http://</code> or\r
116         <code>https://</code> protocol part is omitted). To decide\r
117         if a pattern matches a target, the domains are compared\r
118         first, then the paths.</p>\r
119 \r
120         <p><a name="compare"></a>To compare the domains, the\r
121         pattern domain and the target domain specified in the URL\r
122         are each broken into their components. (Components are\r
123         separated by the <code>.</code> (period) character.) Next\r
124         each of the target components is compared with the\r
125         corresponding pattern component: last with last,\r
126         next-to-last with next-to-last, and so on. (This is called\r
127         <i><dfn>right-anchored</dfn></i> matching.) If all of the\r
128         pattern components find their match in the target, then the\r
129         domains are considered a match. Case is irrelevant when\r
130         comparing domain components.</p>\r
131 \r
132         <p><a name="substring"></a>A successfully matching pattern\r
133         can be an anchored substring of a target, but not vice\r
134         versa. Thus if a pattern doesn't specify a domain, it\r
135         matches all domains. <a name="wildcard"></a>Furthermore,\r
136         when comparing two components, the components must either\r
137         match in their entirety or up to a wildcard <code>*</code>\r
138         (star character) in the pattern. The wildcard feature\r
139         implements only a "prefix" match capability ("abc*" vs.\r
140         "abcdefg"), not suffix matching ("*efg" vs. "abcdefg") or\r
141         infix matching ("abc*efg" vs. "abcdefg"). The feature is\r
142         restricted to the domain component; it is unrelated to the\r
143         optional regular expression feature in the path <a href=\r
144         "#regex">(described below).</a></p>\r
145 \r
146         <p><a name="numeric"></a>If a numeric port is specified in\r
147         the pattern domain, then the target port must match as\r
148         well. The default port in a target is port 80.</p>\r
149 \r
150         <p><a name="onward"></a>If the domain and port match, then\r
151         the target URL path is checked for a match against the path\r
152         in the pattern. Paths are compared with a simple\r
153         case-sensitive left-anchored substring comparison. Once\r
154         again, the pattern can be an anchored substring of the\r
155         target, but not vice versa. A path of <code>/</code>\r
156         (slash) would match all paths. Wildcards are not considered\r
157         in path comparisons.</p>\r
158 \r
159         <p><a name="example"></a>For example, the target URL<br>\r
160          &nbsp;&nbsp;&nbsp; <code>\r
161         the.yellow-brick-road.com/TinMan/has_no_brain</code><br>\r
162          would be matched (and blocked) by the following\r
163         patterns<br>\r
164          &nbsp;&nbsp;&nbsp; <code>yellow-brick-road.com</code><br>\r
165          and<br>\r
166          &nbsp;&nbsp;&nbsp;<code>Yellow*.COM</code><br>\r
167          and<br>\r
168          &nbsp;&nbsp;&nbsp;<code>/TinM</code><br>\r
169          but not<br>\r
170          &nbsp;&nbsp;&nbsp; <code>\r
171         follow.the.yellow-brick-road.com</code><br>\r
172          or<br>\r
173          &nbsp;&nbsp;&nbsp;<code>/tinman</code><br>\r
174         </p>\r
175 \r
176         <p><a name="comments"></a>Comments in a blockfile start\r
177         with a <code>#</code> (hash) character and end at a new\r
178         line. Blank lines are also ignored.</p>\r
179 \r
180         <p><a name="except"></a>Lines beginning with a <code>\r
181         ~</code> (tilde) character are taken to be <a href=\r
182         "ijbfaq.html#exceptions">exceptions:</a> a URL blocked by\r
183         previous patterns that matches the rest of the line is let\r
184         through. (The last match wins.)</p>\r
185 \r
186         <p><a name="regex"></a>Patterns may contain POSIX <a href=\r
187         "ijbfaq.html#regex">regular expressions</a> provided the\r
188         <b><code>junkbuster</code></b> was compiled with this\r
189         option (the default in Version 2.0 on). The idiom <code>\r
190         /*.*/ad</code> can then be used to match any URL containing\r
191         <code>/ad</code> (such as <code>\r
192         http://nomatterwhere.com/images/advert/g3487.gif</code> for\r
193         example). These expressions <a href="#substring">don't\r
194         work</a> in the domain part.</p>\r
195 \r
196         <p><a name="rereads"></a>In version 1.3 and later the\r
197         blockfile and cookiefile are checked for changes before\r
198         each request.</p>\r
199       </dd>\r
200 \r
201       <dt><i><a name="o_w"></a></i><a name=\r
202       "wafer"></a><code>wafer</code>&nbsp;&nbsp; <i>\r
203       NAME=VALUE</i></dt>\r
204 \r
205       <dd>\r
206         <p>Specifies a pair to be sent as a cookie with every\r
207         request <a href="ijbfaq.html#wafers">to the server.</a>\r
208         (Such boring cookies are called <i>wafers</i>.) This option\r
209         may be called more than once to generate multiple wafers.\r
210         The original Netscape specification prohibited semi-colons,\r
211         commas and white space; these characters will be\r
212         URL-encoded if used in wafers. \r
213         <!-- Aside: genuine cookies are not encoded --> \r
214         <!-- Aside: we could use quoted string as specified in the new RFC -->\r
215         The Path and Domain attributes are not currently\r
216         supported.</p>\r
217       </dd>\r
218 \r
219       <dt><i><a name="o_c"></a></i><a name=\r
220       "cookiefile"></a><code>cookiefile</code>&nbsp;&nbsp; <i>\r
221       cookiefile</i></dt>\r
222 \r
223       <dd>\r
224         <p>Enforce the cookie management policy specified in the\r
225         <i>cookiefile.</i> <a name="java"></a>If this option is not\r
226         used all cookies are silently crunched, so that users who\r
227         never want cookies aren't bothered by browsers asking\r
228         whether each cookie should be accepted. However, cookies\r
229         can <a href="ijbfaq.html#breakthrough">still get\r
230         through</a> via <a href=\r
231         "http://www.junkbusters.com/ht/en/links.html#javascript">\r
232         JavaScript</a> and SSL, so alerts should be left on.</p>\r
233 \r
234         <p><a name="dropping"></a>In Version 1.2 and later this\r
235         option must be followed by a <a href="ijbfaq.html#crumble">\r
236         filename</a> containing instructions on which sites are\r
237         allowed to receive and set cookies. <a name="drop"></a>By\r
238         default cookies are dropped in both the browser's request\r
239         and the server's response, unless the URL requested matches\r
240         an entry in the <i>cookiefile</i>. The matching algorithm\r
241         is the same as for the blockfile. A leading <code>\r
242         &gt;</code> character allows <a href=\r
243         "ijbfaq.html#directional">server-bound</a> cookies only; a\r
244         <code>&lt;</code> allows only browser-bound cookies; a\r
245         <code>~</code> character stops cookies in <a href=\r
246         "ijbfaq.html#crumble">both directions.</a> Thus a\r
247         cookiefile containing a single line with the two characters\r
248         <code>&gt;*</code> will pass on all cookies to servers but\r
249         not give any new ones to the browser.</p>\r
250       </dd>\r
251 \r
252       <dt><i><a name="o_j"></a></i><a name=\r
253       "jarfile"></a><code>jarfile</code>&nbsp;&nbsp; <i>\r
254       jarfile</i></dt>\r
255 \r
256       <dd>\r
257         <p>All Set-cookie attempts by the server are <a href=\r
258         "ijbfaq.html#jar">logged</a> to <i>jarfile</i>. If no wafer\r
259         is specified, one containing a <a href=\r
260         "ijbfaq.html#notice">canned notice</a> (the <i>vanilla\r
261         wafer</i>) is added as an alert to the server unless the <a\r
262         href="#suppress-vanilla-wafer">suppress-vanilla-wafer</a>\r
263         option is invoked.</p>\r
264       </dd>\r
265 \r
266       <dt><i><a name="o_v"></a></i><a name=\r
267       "suppress-vanilla-wafer"></a><code>suppress-vanilla-wafer</code></dt>\r
268 \r
269       <dd>\r
270         <p>Suppress the vanilla wafer.</p>\r
271       </dd>\r
272 \r
273       <dt><i><a name="o_t"></a></i><a name=\r
274       "from"></a><code>from</code>&nbsp;&nbsp;<i>from</i></dt>\r
275 \r
276       <dd>\r
277         <p>If the browser <a href="ijbfaq.html#from">discloses an\r
278         email address</a> in the <code>FROM</code> header (most\r
279         don't), replace it with <i>from.</i> If <i>from</i> is set\r
280         to <b>.</b> (the period character) the <code>FROM</code> is\r
281         passed to the server unchanged. The default is to delete\r
282         the <code>FROM</code> header.</p>\r
283       </dd>\r
284 \r
285       <dt><i><a name="o_r"></a></i><a name=\r
286       "referer"></a><code>referer</code>&nbsp;&nbsp; <i>\r
287       referer</i></dt>\r
288 \r
289       <dd>\r
290         <p>Whenever the browser discloses the URL that <a href=\r
291         "ijbfaq.html#referer">led to</a> the current request,\r
292         replace it with <i>referer.</i> If <i>referer</i> is set to\r
293         <b>.</b> (period) the URL is passed to the server\r
294         unchanged. If referer is set to <b>@</b> (at) the URL is\r
295         sent in cases where the cookiefile specifies that a cookie\r
296         would be sent. (No way to send bogus referers selectively\r
297         is provided.) The default is to delete Referer.</p>\r
298 \r
299         <p><a name="referrer"></a>Junkbuster also accepts the\r
300         spelling <code>referrer</code>, which most dictionaries\r
301         consider correct.</p>\r
302       </dd>\r
303 \r
304       <dt><i><a name="o_u"></a></i><a name=\r
305       "user-agent"></a><code>user-agent</code>&nbsp;&nbsp; <i>\r
306       user-agent</i></dt>\r
307 \r
308       <dd>\r
309         <p>Information disclosed by the browser <a href=\r
310         "ijbfaq.html#agent">about itself</a> is replaced with the\r
311         value <i>user-agent.</i> If <i>user-agent</i> is set to <b>\r
312         .</b> (period) the <code>User-Agent</code> header is passed\r
313         to the server unchanged, along with any <code>UA</code>\r
314         headers produced by MS-IE (which would otherwise be\r
315         deleted). If <i>user-agent</i> is set to <b>@</b> (at)\r
316         these headers are sent unchanged in cases where the\r
317         cookiefile specifies that a cookie would be sent, otherwise\r
318         only default <code>User-Agent</code> header is sent. That\r
319         default is Mozilla/3.0 (Netscape) with an unremarkable <a\r
320         href="ijbfaq.html#infer">Macintosh</a> configuration. If\r
321         used with a browser less advanced than Mozilla/3.0 or IE-3,\r
322         the default may encourage pages containing extensions that\r
323         confuse the browser.</p>\r
324       </dd>\r
325 \r
326       <dt><a name="o_h"></a><a name=\r
327       "listen-address"></a><code>listen-address</code>&nbsp;&nbsp;\r
328       <i>[host][:port]</i></dt>\r
329 \r
330       <dd>\r
331         <p>If <i>host</i> is specified, bind the <b><code>\r
332         junkbuster</code></b> to that IP address. If a <i>port</i>\r
333         is specified, use it. The default port is 8000; the default\r
334         host is <code>localhost</code>.</p>\r
335 \r
336         <p>This default host setting means that you can only\r
337         connect to the proxy from ther local computer. This is a\r
338         security measure - if you allow anyone to use the proxy,\r
339         then hackers or fraudsters could use it to help hide their\r
340         identity. It also provides a lot of protection against any\r
341         undiscovered security flaws in JunkBuster - if they can't\r
342         connect to it, then they can't attack it.</p>\r
343 \r
344         <p>If you change this value, we recommend you <i>either</i>\r
345         set the host to <code>localhost</code>:<br>\r
346          &nbsp;&nbsp;&nbsp;<code>listen-address\r
347         localhost:8080</code><br>\r
348          <i>or</i>, if you want to share a single internet\r
349         connection over your internal network, then set it to the\r
350         address of your internal ethernet card:<br>\r
351          &nbsp;&nbsp;&nbsp;<code>listen-address\r
352         10.1.1.1:8080</code><br>\r
353          (replace 10.1.1.1 with your internal IP address), <i>\r
354         or</i> set up an <i><a href="#aclfile">aclfile</a></i>. To\r
355         make the proxy accessible from everywhere (e.g. if you're\r
356         using an access control list or if you just don't care\r
357         about security), specify just the port number - e.g:<br>\r
358          &nbsp;&nbsp;&nbsp;<code>listen-address :8000</code><br>\r
359          (This binds the proxy to <b>all</b> IP addresses\r
360         (<code>INADDR_ANY</code>)).</p>\r
361       </dd>\r
362 \r
363       <dt><i><a name="o_f"></a></i><a name=\r
364       "forwardfile"></a><code>forwardfile</code>&nbsp;&nbsp; <i>\r
365       forwardfile</i></dt>\r
366 \r
367       <dd>\r
368         <p>Junkbuster has a flexible syntax for forwarding HTTP\r
369         requests. This is used e.g. if you are behind a firewall\r
370         and need to connect through it, or if you want to use a\r
371         cacheing proxy to speed up your web browsing.</p>\r
372 \r
373         <p>Every line in the forwardfile consists of four\r
374         components, seperated by whitespace. These are:<br>\r
375         <br>\r
376          <code><i>target &nbsp; forward_to &nbsp; via_gateway_type\r
377         &nbsp; gateway</i></code></p>\r
378 \r
379         <p><i>target</i> is a pattern used to select which line of\r
380         the forwardfile is used. "<code>*</code>" is the most\r
381         commonly used value, and matches every URL. As usual, the\r
382         last matching <i>target</i> wins. (If no pattern matches, a\r
383         direct connection will be used)</p>\r
384 \r
385         <p><i>forward_to</i> specifies the HTTP proxy server to\r
386         use, or "<code>.</code>" for none. This is used to connect\r
387         to a cacheing proxy such as Squid, and for most types of\r
388         firewall. The port number defaults to 8000 if it is not\r
389         specified.</p>\r
390 \r
391         <p>Here is a typical line.</p>\r
392 <pre>\r
393 *         lpwa.com:8000      .      .\r
394 </pre>\r
395 \r
396         <p>The target domain need not be a fully qualified\r
397         hostname; it can be a general domain such as <code>\r
398         com</code> or <code>co.uk</code> or even just a port\r
399         number. <a name="nose"></a>For example, because <a href=\r
400         "http://lpwa.com">LPWA</a> does not handle <a href=\r
401         "ijbfaq.html#encrypt">SSL</a>, the line above will\r
402         typically be followed by a line such as</p>\r
403 <pre>\r
404 :443    .      .      .\r
405 </pre>\r
406 \r
407         <p>to allow SSL transactions to proceed directly. The\r
408         cautious would also add an entry in their blockfile to stop\r
409         transactions to port 443 for all but specified trusted\r
410         sites.</p>\r
411 \r
412         <p><a name="loop"></a>Configure with care: no loop\r
413         detection is performed. When setting up chains of proxies\r
414         that might loop back, try adding <a href="#squid">\r
415         Squid.</a></p>\r
416 \r
417         <p><i>via_gateway_type</i> and <i>gateway</i> are used to\r
418         support SOCKS proxies. Some firewalls provide this type of\r
419         proxy. If you do not not want to use a SOCKS proxy, specify\r
420         both of these fields as "<code>.</code>".</p>\r
421 \r
422         <p><a name="configure"></a><a name="identify"></a>Note that\r
423         JunkBuster is a SOCKS <b>client</b>, <b>not</b> a SOCKS <b>\r
424         server</b>. The user's browser should <b>not</b> be <a\r
425         href="ijbfaq.html#socks">configured</a> to use <code>\r
426         SOCKS</code>; the proxy conducts the negotiations, not the\r
427         browser.</p>\r
428 \r
429         <p>The <code>SOCKS4</code> protocol may be specified by\r
430         setting <i>via_gateway_type</i> to <code>socks</code> or\r
431         <code>socks4</code>. The <code>SOCKS4A</code> protocol is\r
432         specified as <code>socks4a</code>. The <code>SOCKS5</code>\r
433         protocol is not currently supported.</p>\r
434 \r
435         <p><i>gateway</i> should be the host and port of the SOCKS\r
436         server. If you just specify a hostname, then the port\r
437         number defaults to 1080.</p>\r
438 \r
439         <p>The user identification capabilities of <code>\r
440         SOCKS4</code> are deliberately not used; the user is always\r
441         identified to the <code>SOCKS</code> server as <code>\r
442         userid=anonymous</code>. If the server's policy is to\r
443         reject requests from <code>anonymous</code>, the proxy will\r
444         not work. Use a <a href="#o_d">debug</a> value of 3 to see\r
445         the status returned by the server.</p>\r
446 \r
447         <p>If you specify both a HTTP proxy (with <i>\r
448         forward_to</i>) and a SOCKS proxy (with <i>gateway</i>)\r
449         then the SOCKS proxy is used to connect to the HTTP proxy.\r
450         If you just specify a SOCKS proxy, it is used to connect\r
451         directly to the websites.</p>\r
452       </dd>\r
453 \r
454       <dt><i><a name="o_d"></a></i><a name=\r
455       "debug"></a><code>debug</code>&nbsp;&nbsp;<i>N</i></dt>\r
456 \r
457       <dd>\r
458         <p>Set debug mode. The most common value is 1, to <a href=\r
459         "ijbfaq.html#pinpoint">pinpoint</a> offensive URLs, so they\r
460         can be added to the blockfile. The value of <b>N</b> is a\r
461         bitwise logical-OR of the following values:<br>\r
462          1 = URLs (show each URL requested by the browser);<br>\r
463          2 = Connections (show each connection to or from the\r
464         proxy);<br>\r
465          4 = I/O (log I/O errors);<br>\r
466          8 = Headers (as each header is scanned, show the header\r
467         and what is done to it);<br>\r
468          16 = Log everything (including debugging traces and the\r
469         contents of the pages).<br>\r
470          32 = Record accesses in Common Log Format, as used by most\r
471         web and proxy servers.</p>\r
472 \r
473         <p><a name="or"></a>Multiple <code>debug</code> lines are\r
474         permitted; they are logical OR-ed together.</p>\r
475 \r
476         <p><a name="single"></a>Because most browsers send several\r
477         requests in parallel the debugging output may appear\r
478         intermingled, so the <a href="#single-threaded">\r
479         single-threaded</a> option is recommended when using <a\r
480         href="#debug">debug</a> with <b>N</b> greater than 1. \r
481         <!-- Aside: Yes, it's clumsy, but it's easy to parse. --></p>\r
482       </dd>\r
483 \r
484       <dt><i><a name="o_y"></a></i><a name=\r
485       "add-forwarded-header"></a><code>add-forwarded-header</code></dt>\r
486 \r
487       <dd>\r
488         <p>Add <code>X-Forwarded-For</code> headers to the\r
489         server-bound HTTP stream indicating the client IP address\r
490         <a href="ijbfaq.html#detect">to the server,</a> in the new\r
491         style of <a href="#squid">Squid 1.1.4.</a> If you want the\r
492         traditional <code>HTTP_FORWARDED</code> response header,\r
493         add it manually with the <a href="#o_x">-x</a> option. This\r
494         also allows other <code>X-Forwarded-For</code> headers to\r
495         be transmitted - usually they are discarded.</p>\r
496       </dd>\r
497 \r
498       <dt><i><a name="o_x"></a></i><a name=\r
499       "add-header"></a><code>add-header</code>&nbsp;&nbsp; <i>\r
500       HeaderText</i></dt>\r
501 \r
502       <dd>\r
503         <p>Add the <i>HeaderText</i> verbatim to requests to the\r
504         server. Typical uses include adding old-style forwarding\r
505         notices such as <code>Forwarded: by\r
506         http://pro-privacy-isp.net</code> and reinstating the\r
507         <code>Proxy-Connection: Keep-Alive</code> header (which the\r
508         <b><code>junkbuster</code></b> deletes so as <a href=\r
509         "ijbfaq.html#detect">not</a> to reveal its existence). No\r
510         checking is done for correctness or plausibility, so it can\r
511         be used to throw any old trash into the server-bound HTTP\r
512         stream. Please don't litter. \r
513         <!-- Aside: this represents "more than enough rope" --></p>\r
514       </dd>\r
515 \r
516       <dt><i><a name="o_s"></a></i><a name=\r
517       "single-threaded"></a><code>single-threaded</code></dt>\r
518 \r
519       <dd>\r
520         <p>Doesn't <code>fork()</code> a separate process (or\r
521         create a separate thread) to handle each connection. Useful\r
522         when debugging to keep the process single threaded.</p>\r
523       </dd>\r
524 \r
525       <dt><i><a name="o_l"></a></i><a name=\r
526       "logfile"></a><code>logfile</code>&nbsp;&nbsp; <i>\r
527       logfile</i></dt>\r
528 \r
529       <dd>\r
530         <p>Write all debugging data into <i>logfile.</i> The\r
531         default <i>logfile</i> is the standard output.</p>\r
532       </dd>\r
533 \r
534       <dt><br>\r
535        <a name="aclfile"></a><code>aclfile</code>&nbsp;&nbsp; <i>\r
536       aclfile</i></dt>\r
537 \r
538       <dd>\r
539         <p>Unless this option is used, the proxy talks to anyone\r
540         who can connect to it, and everyone who can has equal\r
541         permissions on where they can go. An access file allows\r
542         restrictions to be placed on these two policies, by\r
543         distinguishing some <i><dfn>source</dfn></i> IP addresses\r
544         and/or some <i><dfn>destination</dfn></i> addresses. (If a\r
545         <a href="#forwardfile">forwarder or a gateway</a> is being\r
546         used, its address is considered the destination address,\r
547         not the ultimate IP address of the URL requested.)</p>\r
548 \r
549         <p><a name="permit"></a>Each line of the access file begins\r
550         with either the word <code>permit</code> or <code>\r
551         deny</code> followed by source and (optionally) destination\r
552         addresses to be matched against those of the HTTP request.\r
553         The last matching line specifies the result: if it was a\r
554         <code>deny</code> line or if no line matched, the request\r
555         will be refused.</p>\r
556 \r
557         <p><a name="various"></a>A source or destination can be\r
558         specified as a single numeric IP address, or with a\r
559         hostname, provided that the host's name can be resolved to\r
560         a numeric address: this cannot be used to block all <code>\r
561         .mil</code> domains for example, because there is no single\r
562         address associated with that domain name. Either form may\r
563         be followed by a slash and an integer <code>N</code>,\r
564         specifying a subnet mask of <code>N</code> bits. For\r
565         example, <code>permit 207.153.200.72/24</code> matches the\r
566         entire Class-C subnet from 207.153.200.0 through\r
567         207.153.200.255. (A netmask of 255.255.255.0 corresponds to\r
568         24 bits of ones in the netmask, as with <code>\r
569         *_MASKLEN=24</code>.) A value of 16 would be used for a\r
570         Class-B subnet. A value of zero for <code>N</code> in the\r
571         subnet mask length will cause any address to match; this\r
572         can be used to express a default rule. For more information\r
573         see the example file provided with the distribution.</p>\r
574 \r
575         <p><a name="false"></a>If you like these access controls\r
576         you should probably have <a href="ijbfaq.html#firewall">\r
577         firewall</a>; they are not intended to replace one.</p>\r
578       </dd>\r
579 \r
580       <dt><br>\r
581        <a name="trustfile"></a><code>trustfile</code>&nbsp;&nbsp;\r
582       <i>trustfile</i></dt>\r
583 \r
584       <dd>\r
585         <p>This feature is experimental, has not been fully\r
586         documented and is very subject to change. The goal is for\r
587         parents to be able to choose a page or site whose links\r
588         they regard suitable for their <a href=\r
589         "ijbfaq.html#children">young children</a> and for the proxy\r
590         to allow access only to sites mentioned there. To do this\r
591         the proxy examines the <a href="#o_r">referer</a> variable\r
592         on each page request to check they resulted from a click on\r
593         the ``trusted referer'' site: if so the referred site is\r
594         added to a list of trusted sites, so that the child can\r
595         then move around that site. There are several uncertainties\r
596         in this scheme that experience may be able to iron out;\r
597         check back in the months ahead.</p>\r
598       </dd>\r
599 \r
600       <dt><br>\r
601        <a name="trust_info_url">\r
602       </a><code>trust_info_url</code>&nbsp;&nbsp; <i>\r
603       trust_info_url</i></dt>\r
604 \r
605       <dd>\r
606         <p>When access is denied due to lack of a trusted referer,\r
607         this URL is displayed with a message pointing the user to\r
608         it for further information.</p>\r
609       </dd>\r
610 \r
611       <dt><br>\r
612        <a name="hide-console"></a><code>hide-console</code></dt>\r
613 \r
614       <dd>\r
615         <p>In the Windows command-line version only, instructs the\r
616         program to disconnect from and hide the command console\r
617         after starting.</p>\r
618       </dd>\r
619     </dl>\r
620 \r
621     <h3><a name="install"></a><img border="0" src="fb.gif" alt="*"\r
622     width="14" height="14">&nbsp; Installation and Use</h3>\r
623 \r
624     <p>Browsers must be told where to find the <b><code>\r
625     junkbuster</code></b> (e.g. <code>localhost</code> port 8000).\r
626     To set the HTTP proxy in Netscape 3.0, go through: <b class=\r
627     "eg">Options</b>; <b class="eg">Network Preferences</b>; <b\r
628     class="eg">Proxies</b>; <b class="eg">Manual Proxy\r
629     Configuration</b>; <b class="eg">View</b>. See the <a href=\r
630     "ijbfaq.html">FAQ</a> for other browsers. The <a href=\r
631     "ijbfaq.html#security">Security Proxy</a> should also be set to\r
632     the same values, otherwise <code>shttp:</code> URLs won't\r
633     work.</p>\r
634 \r
635     <p><a name="limitations"></a>Note the limitations explained in\r
636     the <a href="ijbfaq.html">FAQ</a>.</p>\r
637 \r
638     <h3><a name="show"></a><img border="0" src="fb.gif" alt="*"\r
639     width="14" height="14">&nbsp; Checking Options</h3>\r
640 \r
641     <p>To allow users to <a href="ijbfaq.html#show">check</a> that\r
642     a <b><code>junkbuster</code></b> is running and how it is\r
643     configured, it intercepts requests for any URL ending in <code>\r
644     /show-proxy-args</code> and blocks it, returning instead\r
645     returns information on its version number and current\r
646     configuration including the contents of its blockfile. To get\r
647     an explicit warning that no <b><code>junkbuster</code></b>\r
648     intervened if the proxy was not configured, it's best to point\r
649     it to a URL that does this, such as <a href=\r
650     "http://internet.junkbuster.com/cgi-bin/show-proxy-args">\r
651     http://internet.junkbuster.com/cgi-bin/show-proxy-args</a> on\r
652     Junkbusters's website.</p>\r
653 \r
654     <h3><a name="also"></a><img border="0" src="fb.gif" alt="*"\r
655     width="14" height="14">&nbsp; See Also</h3>\r
656 \r
657     <p><a href="ijbfaq.html">\r
658     http://www.junkbusters.com/ht/en/ijbfaq.html</a><br>\r
659      <a href="http://www.junkbusters.com/ht/en/cookies.html">\r
660     http://www.junkbusters.com/ht/en/cookies.html</a><br>\r
661      <a href=\r
662     "http://internet.junkbuster.com/cgi-bin/show-proxy-args">\r
663     http://internet.junkbuster.com/cgi-bin/show-proxy-args</a><br>\r
664      <a name="kristol"></a><a href=\r
665     "http://www.cis.ohio-state.edu/htbin/rfc/rfc2109.html">http://www.cis.ohio-state.edu/htbin/rfc/rfc2109.html</a><br>\r
666 \r
667      <a name="squid"></a><a href=\r
668     "http://squid.nlanr.net/Squid/">http://squid.nlanr.net/Squid/</a><br>\r
669 \r
670      <a href="http://www-math.uni-paderborn.de/~axel/">\r
671     http://www-math.uni-paderborn.de/~axel/</a></p>\r
672 \r
673     <h3><a name="copyright"></a><img border="0" src="fb.gif" alt=\r
674     "*" width="14" height="14">&nbsp; Copyright and GPL</h3>\r
675 \r
676     <p>Written and copyright by the Anonymous Coders and\r
677     Junkbusters Corporation and made available under the <a href=\r
678     "gpl.html">GNU General Public License (GPL).</a> This software\r
679     comes with <a href="gpl.html#nowarr">NO WARRANTY.</a> Internet\r
680     Junkbuster Proxy is a <a href=\r
681     "http://www.junkbusters.com/ht/en/legal.html#marks">\r
682     trademark</a> of Junkbusters Corporation.</p>\r
683 \r
684     <p align="center"><a href="#top_of_page"><img border="0" src=\r
685     "top.gif" alt="--- Back to Top of Page ---" width="250" height=\r
686     "15"></a></p>\r
687 \r
688     <p class="sans"><a href="http://ijbswa.sourceforge.net/">\r
689     Website</a> <b class="dot">&middot;</b> <b>Manual</b> <b class=\r
690     "dot">&middot;</b> <a href="ijbfaq.html">FAQ</a> <b class=\r
691     "dot">&middot;</b> <a href="gpl.html">GPL</a></p>\r
692 \r
693     <p class="sans"><small><small><a href="gpl.html#text">\r
694     Copyright</a> &copy; 1996-8 <a href=\r
695     "http://www.junkbusters.com/">Junkbusters</a> <a href=\r
696     "http://www.junkbusters.com/ht/en/legal.html#marks">&reg;</a>\r
697     Corporation. <a href="gpl.html#text">Copyright</a> &copy; 2001\r
698     <a href="http://sourceforge.net/projects/ijbswa/">Jon\r
699     Foster</a>. Copying and distribution permitted under the <a\r
700     href="gpl.html">GNU</a> General Public\r
701     License.</small></small></p>\r
702 \r
703     <p><small><code><a href=\r
704     "http://sourceforge.net/projects/ijbswa/">\r
705     http://sourceforge.net/projects/ijbswa/</a></code></small></p>\r
706   </body>\r
707 </html>\r
708 \r