Rebuild with updated copyright and minor changes
[privoxy.git] / doc / webserver / user-manual / config.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
2 <HTML
3 ><HEAD
4 ><TITLE
5 >The Main Configuration File</TITLE
6 ><META
7 NAME="GENERATOR"
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
9 REL="HOME"
10 TITLE="Privoxy 3.0.18 User Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="Privoxy Configuration"
14 HREF="configuration.html"><LINK
15 REL="NEXT"
16 TITLE="Actions Files"
17 HREF="actions-file.html"><LINK
18 REL="STYLESHEET"
19 TYPE="text/css"
20 HREF="../p_doc.css"><META
21 HTTP-EQUIV="Content-Type"
22 CONTENT="text/html;
23 charset=ISO-8859-1">
24 <LINK REL="STYLESHEET" TYPE="text/css" HREF="p_doc.css">
25 </head
26 ><BODY
27 CLASS="SECT1"
28 BGCOLOR="#EEEEEE"
29 TEXT="#000000"
30 LINK="#0000FF"
31 VLINK="#840084"
32 ALINK="#0000FF"
33 ><DIV
34 CLASS="NAVHEADER"
35 ><TABLE
36 SUMMARY="Header navigation table"
37 WIDTH="100%"
38 BORDER="0"
39 CELLPADDING="0"
40 CELLSPACING="0"
41 ><TR
42 ><TH
43 COLSPAN="3"
44 ALIGN="center"
45 >Privoxy 3.0.18 User Manual</TH
46 ></TR
47 ><TR
48 ><TD
49 WIDTH="10%"
50 ALIGN="left"
51 VALIGN="bottom"
52 ><A
53 HREF="configuration.html"
54 ACCESSKEY="P"
55 >Prev</A
56 ></TD
57 ><TD
58 WIDTH="80%"
59 ALIGN="center"
60 VALIGN="bottom"
61 ></TD
62 ><TD
63 WIDTH="10%"
64 ALIGN="right"
65 VALIGN="bottom"
66 ><A
67 HREF="actions-file.html"
68 ACCESSKEY="N"
69 >Next</A
70 ></TD
71 ></TR
72 ></TABLE
73 ><HR
74 ALIGN="LEFT"
75 WIDTH="100%"></DIV
76 ><DIV
77 CLASS="SECT1"
78 ><H1
79 CLASS="SECT1"
80 ><A
81 NAME="CONFIG"
82 >7. The Main Configuration File</A
83 ></H1
84 ><P
85 > By default, the main configuration file is named <TT
86 CLASS="FILENAME"
87 >config</TT
88 >,
89  with the exception of Windows, where it is named <TT
90 CLASS="FILENAME"
91 >config.txt</TT
92 >.
93  Configuration lines consist of an initial keyword followed by a list of
94  values, all separated by whitespace (any number of spaces or tabs). For
95  example:</P
96 ><P
97 > <TT
98 CLASS="LITERAL"
99 >  <P
100 CLASS="LITERALLAYOUT"
101 >&nbsp;&nbsp;<SPAN
102 CLASS="emphasis"
103 ><I
104 CLASS="EMPHASIS"
105 >confdir /etc/privoxy</I
106 ></SPAN
107 ></P
108 >
109  </TT
110 > </P
111 ><P
112 > Assigns the value <TT
113 CLASS="LITERAL"
114 >/etc/privoxy</TT
115 > to the option
116  <TT
117 CLASS="LITERAL"
118 >confdir</TT
119 > and thus indicates that the configuration
120  directory is named <SPAN
121 CLASS="QUOTE"
122 >"/etc/privoxy/"</SPAN
123 >.</P
124 ><P
125 > All options in the config file except for <TT
126 CLASS="LITERAL"
127 >confdir</TT
128 > and
129  <TT
130 CLASS="LITERAL"
131 >logdir</TT
132 > are optional. Watch out in the below description
133  for what happens if you leave them unset.</P
134 ><P
135 > The main config file controls all aspects of <SPAN
136 CLASS="APPLICATION"
137 >Privoxy</SPAN
138 >'s
139  operation that are not location dependent (i.e. they apply universally, no matter
140  where you may be surfing). Like the filter and action files, the config file is
141  a plain text file and can be modified with a text editor like emacs, vim or
142  notepad.exe.</P
143 ><DIV
144 CLASS="SECT2"
145 ><H2
146 CLASS="SECT2"
147 ><A
148 NAME="LOCAL-SET-UP"
149 >7.1. Local Set-up Documentation</A
150 ></H2
151 ><P
152 >    If you intend to operate <SPAN
153 CLASS="APPLICATION"
154 >Privoxy</SPAN
155 > for more users
156     than just yourself, it might be a good idea to let them know how to reach
157     you, what you block and why you do that, your policies, etc.
158    </P
159 ><DIV
160 CLASS="SECT3"
161 ><H4
162 CLASS="SECT3"
163 ><A
164 NAME="USER-MANUAL"
165 >7.1.1. user-manual</A
166 ></H4
167 ><P
168 ></P
169 ><DIV
170 CLASS="VARIABLELIST"
171 ><DL
172 ><DT
173 >Specifies:</DT
174 ><DD
175 ><P
176 >    Location of the <SPAN
177 CLASS="APPLICATION"
178 >Privoxy</SPAN
179 > User Manual.
180    </P
181 ></DD
182 ><DT
183 >Type of value:</DT
184 ><DD
185 ><P
186 >A fully qualified URI</P
187 ></DD
188 ><DT
189 >Default value:</DT
190 ><DD
191 ><P
192 ><SPAN
193 CLASS="emphasis"
194 ><I
195 CLASS="EMPHASIS"
196 >Unset</I
197 ></SPAN
198 ></P
199 ></DD
200 ><DT
201 >Effect if unset:</DT
202 ><DD
203 ><P
204 >    <A
205 HREF="http://www.privoxy.org/user-manual/"
206 TARGET="_top"
207 >http://www.privoxy.org/<TT
208 CLASS="REPLACEABLE"
209 ><I
210 >version</I
211 ></TT
212 >/user-manual/</A
213 >
214     will be used, where <TT
215 CLASS="REPLACEABLE"
216 ><I
217 >version</I
218 ></TT
219 > is the <SPAN
220 CLASS="APPLICATION"
221 >Privoxy</SPAN
222 > version.
223    </P
224 ></DD
225 ><DT
226 >Notes:</DT
227 ><DD
228 ><P
229 >    The User Manual URI is the single best source of information on 
230     <SPAN
231 CLASS="APPLICATION"
232 >Privoxy</SPAN
233 >, and is used for help links from some
234     of the internal CGI pages. The manual itself is normally packaged with the
235     binary distributions, so you probably want to set this to a locally
236     installed copy. 
237    </P
238 ><P
239 >    Examples:
240    </P
241 ><P
242 >   The best all purpose solution is simply to put the full local
243    <TT
244 CLASS="LITERAL"
245 >PATH</TT
246 > to where the <I
247 CLASS="CITETITLE"
248 >User Manual</I
249 > is
250    located:
251   </P
252 ><P
253 >   <TABLE
254 BORDER="0"
255 BGCOLOR="#E0E0E0"
256 WIDTH="90%"
257 ><TR
258 ><TD
259 ><PRE
260 CLASS="SCREEN"
261 >  user-manual  /usr/share/doc/privoxy/user-manual</PRE
262 ></TD
263 ></TR
264 ></TABLE
265 >
266   </P
267 ><P
268 >   The User Manual is then available to anyone with access to
269    <SPAN
270 CLASS="APPLICATION"
271 >Privoxy</SPAN
272 >, by following the built-in URL:
273    <TT
274 CLASS="LITERAL"
275 >http://config.privoxy.org/user-manual/</TT
276 >
277    (or the shortcut: <TT
278 CLASS="LITERAL"
279 >http://p.p/user-manual/</TT
280 >).
281   </P
282 ><P
283 >   If the documentation is not on the local system, it can be accessed 
284    from a remote server, as:
285   </P
286 ><P
287 >   <TABLE
288 BORDER="0"
289 BGCOLOR="#E0E0E0"
290 WIDTH="90%"
291 ><TR
292 ><TD
293 ><PRE
294 CLASS="SCREEN"
295 >  user-manual  http://example.com/privoxy/user-manual/</PRE
296 ></TD
297 ></TR
298 ></TABLE
299 >
300   </P
301 ><DIV
302 CLASS="WARNING"
303 ><P
304 ></P
305 ><TABLE
306 CLASS="WARNING"
307 BORDER="1"
308 WIDTH="90%"
309 ><TR
310 ><TD
311 ALIGN="CENTER"
312 ><B
313 >Warning</B
314 ></TD
315 ></TR
316 ><TR
317 ><TD
318 ALIGN="LEFT"
319 ><P
320 >     If set, this option should be <SPAN
321 CLASS="emphasis"
322 ><I
323 CLASS="EMPHASIS"
324 >the first option in the config
325      file</I
326 ></SPAN
327 >, because it is used while the config file is being read
328      on start-up.
329    </P
330 ></TD
331 ></TR
332 ></TABLE
333 ></DIV
334 ></DD
335 ></DL
336 ></DIV
337 ></DIV
338 ><DIV
339 CLASS="SECT3"
340 ><H4
341 CLASS="SECT3"
342 ><A
343 NAME="TRUST-INFO-URL"
344 >7.1.2. trust-info-url</A
345 ></H4
346 ><P
347 ></P
348 ><DIV
349 CLASS="VARIABLELIST"
350 ><DL
351 ><DT
352 >Specifies:</DT
353 ><DD
354 ><P
355 >    A URL to be displayed in the error page that users will see if access to an untrusted page is denied.    
356    </P
357 ></DD
358 ><DT
359 >Type of value:</DT
360 ><DD
361 ><P
362 >URL</P
363 ></DD
364 ><DT
365 >Default value:</DT
366 ><DD
367 ><P
368 ><SPAN
369 CLASS="emphasis"
370 ><I
371 CLASS="EMPHASIS"
372 >Unset</I
373 ></SPAN
374 ></P
375 ></DD
376 ><DT
377 >Effect if unset:</DT
378 ><DD
379 ><P
380 >    No links are displayed on the "untrusted" error page.
381    </P
382 ></DD
383 ><DT
384 >Notes:</DT
385 ><DD
386 ><P
387 >    The value of this option only matters if the experimental trust mechanism has been
388     activated. (See <A
389 HREF="config.html#TRUSTFILE"
390 ><SPAN
391 CLASS="emphasis"
392 ><I
393 CLASS="EMPHASIS"
394 >trustfile</I
395 ></SPAN
396 ></A
397 > below.)
398    </P
399 ><P
400 >    If you use the trust mechanism, it is a good idea to write up some on-line
401     documentation about your trust policy and to specify the URL(s) here.
402     Use multiple times for multiple URLs.
403    </P
404 ><P
405 >    The URL(s) should be added to the trustfile as well, so users don't end up
406     locked out from the information on why they were locked out in the first place!
407    </P
408 ></DD
409 ></DL
410 ></DIV
411 ></DIV
412 ><DIV
413 CLASS="SECT3"
414 ><H4
415 CLASS="SECT3"
416 ><A
417 NAME="ADMIN-ADDRESS"
418 >7.1.3. admin-address</A
419 ></H4
420 ><P
421 ></P
422 ><DIV
423 CLASS="VARIABLELIST"
424 ><DL
425 ><DT
426 >Specifies:</DT
427 ><DD
428 ><P
429 >    An email address to reach the <SPAN
430 CLASS="APPLICATION"
431 >Privoxy</SPAN
432 > administrator.
433    </P
434 ></DD
435 ><DT
436 >Type of value:</DT
437 ><DD
438 ><P
439 >Email address</P
440 ></DD
441 ><DT
442 >Default value:</DT
443 ><DD
444 ><P
445 ><SPAN
446 CLASS="emphasis"
447 ><I
448 CLASS="EMPHASIS"
449 >Unset</I
450 ></SPAN
451 ></P
452 ></DD
453 ><DT
454 >Effect if unset:</DT
455 ><DD
456 ><P
457 >    No email address is displayed on error pages and the CGI user interface.
458    </P
459 ></DD
460 ><DT
461 >Notes:</DT
462 ><DD
463 ><P
464 >    If both <TT
465 CLASS="LITERAL"
466 >admin-address</TT
467 > and <TT
468 CLASS="LITERAL"
469 >proxy-info-url</TT
470 >
471     are unset, the whole "Local Privoxy Support" box on all generated pages will
472     not be shown.
473    </P
474 ></DD
475 ></DL
476 ></DIV
477 ></DIV
478 ><DIV
479 CLASS="SECT3"
480 ><H4
481 CLASS="SECT3"
482 ><A
483 NAME="PROXY-INFO-URL"
484 >7.1.4. proxy-info-url</A
485 ></H4
486 ><P
487 ></P
488 ><DIV
489 CLASS="VARIABLELIST"
490 ><DL
491 ><DT
492 >Specifies:</DT
493 ><DD
494 ><P
495 >    A URL to documentation about the local <SPAN
496 CLASS="APPLICATION"
497 >Privoxy</SPAN
498 > setup,
499     configuration or policies.
500    </P
501 ></DD
502 ><DT
503 >Type of value:</DT
504 ><DD
505 ><P
506 >URL</P
507 ></DD
508 ><DT
509 >Default value:</DT
510 ><DD
511 ><P
512 ><SPAN
513 CLASS="emphasis"
514 ><I
515 CLASS="EMPHASIS"
516 >Unset</I
517 ></SPAN
518 ></P
519 ></DD
520 ><DT
521 >Effect if unset:</DT
522 ><DD
523 ><P
524 >    No link to local documentation is displayed on error pages and the CGI user interface.
525    </P
526 ></DD
527 ><DT
528 >Notes:</DT
529 ><DD
530 ><P
531 >    If both <TT
532 CLASS="LITERAL"
533 >admin-address</TT
534 > and <TT
535 CLASS="LITERAL"
536 >proxy-info-url</TT
537 >
538     are unset, the whole "Local Privoxy Support" box on all generated pages will
539     not be shown.
540    </P
541 ><P
542 >    This URL shouldn't be blocked ;-)
543    </P
544 ></DD
545 ></DL
546 ></DIV
547 ></DIV
548 ></DIV
549 ><DIV
550 CLASS="SECT2"
551 ><H2
552 CLASS="SECT2"
553 ><A
554 NAME="CONF-LOG-LOC"
555 >7.2. Configuration and Log File Locations</A
556 ></H2
557 ><P
558 > <SPAN
559 CLASS="APPLICATION"
560 >Privoxy</SPAN
561 > can (and normally does) use a number of
562  other files for additional configuration, help and logging.
563  This section of the configuration file tells <SPAN
564 CLASS="APPLICATION"
565 >Privoxy</SPAN
566 >
567  where to find those other files. </P
568 ><P
569 > The user running <SPAN
570 CLASS="APPLICATION"
571 >Privoxy</SPAN
572 >, must have read
573  permission for all configuration files, and write permission to any files
574  that would be modified, such as log files and actions files.</P
575 ><DIV
576 CLASS="SECT3"
577 ><H4
578 CLASS="SECT3"
579 ><A
580 NAME="CONFDIR"
581 >7.2.1. confdir</A
582 ></H4
583 ><P
584 ></P
585 ><DIV
586 CLASS="VARIABLELIST"
587 ><DL
588 ><DT
589 >Specifies:</DT
590 ><DD
591 ><P
592 >The directory where the other configuration files are located.</P
593 ></DD
594 ><DT
595 >Type of value:</DT
596 ><DD
597 ><P
598 >Path name</P
599 ></DD
600 ><DT
601 >Default value:</DT
602 ><DD
603 ><P
604 >/etc/privoxy (Unix) <SPAN
605 CLASS="emphasis"
606 ><I
607 CLASS="EMPHASIS"
608 >or</I
609 ></SPAN
610 > <SPAN
611 CLASS="APPLICATION"
612 >Privoxy</SPAN
613 > installation dir (Windows) </P
614 ></DD
615 ><DT
616 >Effect if unset:</DT
617 ><DD
618 ><P
619 ><SPAN
620 CLASS="emphasis"
621 ><I
622 CLASS="EMPHASIS"
623 >Mandatory</I
624 ></SPAN
625 ></P
626 ></DD
627 ><DT
628 >Notes:</DT
629 ><DD
630 ><P
631 >    No trailing <SPAN
632 CLASS="QUOTE"
633 >"<TT
634 CLASS="LITERAL"
635 >/</TT
636 >"</SPAN
637 >, please.
638    </P
639 ></DD
640 ></DL
641 ></DIV
642 ></DIV
643 ><DIV
644 CLASS="SECT3"
645 ><H4
646 CLASS="SECT3"
647 ><A
648 NAME="TEMPLDIR"
649 >7.2.2. templdir</A
650 ></H4
651 ><P
652 ></P
653 ><DIV
654 CLASS="VARIABLELIST"
655 ><DL
656 ><DT
657 >Specifies:</DT
658 ><DD
659 ><P
660 >An alternative directory where the templates are loaded from.</P
661 ></DD
662 ><DT
663 >Type of value:</DT
664 ><DD
665 ><P
666 >Path name</P
667 ></DD
668 ><DT
669 >Default value:</DT
670 ><DD
671 ><P
672 >unset</P
673 ></DD
674 ><DT
675 >Effect if unset:</DT
676 ><DD
677 ><P
678 >The templates are assumed to be located in confdir/template.</P
679 ></DD
680 ><DT
681 >Notes:</DT
682 ><DD
683 ><P
684 >    <SPAN
685 CLASS="APPLICATION"
686 >Privoxy's</SPAN
687 > original templates are usually
688     overwritten with each update. Use this option to relocate customized
689     templates that should be kept. As template variables might change
690     between updates, you shouldn't expect templates to work with
691     <SPAN
692 CLASS="APPLICATION"
693 >Privoxy</SPAN
694 > releases other than the one
695     they were part of, though.
696    </P
697 ></DD
698 ></DL
699 ></DIV
700 ></DIV
701 ><DIV
702 CLASS="SECT3"
703 ><H4
704 CLASS="SECT3"
705 ><A
706 NAME="LOGDIR"
707 >7.2.3. logdir</A
708 ></H4
709 ><P
710 ></P
711 ><DIV
712 CLASS="VARIABLELIST"
713 ><DL
714 ><DT
715 >Specifies:</DT
716 ><DD
717 ><P
718 >    The directory where all logging takes place
719     (i.e. where the <TT
720 CLASS="FILENAME"
721 >logfile</TT
722 > is located).
723    </P
724 ></DD
725 ><DT
726 >Type of value:</DT
727 ><DD
728 ><P
729 >Path name</P
730 ></DD
731 ><DT
732 >Default value:</DT
733 ><DD
734 ><P
735 >/var/log/privoxy (Unix) <SPAN
736 CLASS="emphasis"
737 ><I
738 CLASS="EMPHASIS"
739 >or</I
740 ></SPAN
741 > <SPAN
742 CLASS="APPLICATION"
743 >Privoxy</SPAN
744 > installation dir (Windows) </P
745 ></DD
746 ><DT
747 >Effect if unset:</DT
748 ><DD
749 ><P
750 ><SPAN
751 CLASS="emphasis"
752 ><I
753 CLASS="EMPHASIS"
754 >Mandatory</I
755 ></SPAN
756 ></P
757 ></DD
758 ><DT
759 >Notes:</DT
760 ><DD
761 ><P
762 >    No trailing <SPAN
763 CLASS="QUOTE"
764 >"<TT
765 CLASS="LITERAL"
766 >/</TT
767 >"</SPAN
768 >, please.
769    </P
770 ></DD
771 ></DL
772 ></DIV
773 ></DIV
774 ><DIV
775 CLASS="SECT3"
776 ><H4
777 CLASS="SECT3"
778 ><A
779 NAME="ACTIONSFILE"
780 >7.2.4. actionsfile</A
781 ></H4
782 ><A
783 NAME="DEFAULT.ACTION"
784 ></A
785 ><A
786 NAME="STANDARD.ACTION"
787 ></A
788 ><A
789 NAME="USER.ACTION"
790 ></A
791 ><P
792 ></P
793 ><DIV
794 CLASS="VARIABLELIST"
795 ><DL
796 ><DT
797 >Specifies:</DT
798 ><DD
799 ><P
800 >    The <A
801 HREF="actions-file.html"
802 >actions file(s)</A
803 > to use
804    </P
805 ></DD
806 ><DT
807 >Type of value:</DT
808 ><DD
809 ><P
810 >Complete file name, relative to <TT
811 CLASS="LITERAL"
812 >confdir</TT
813 ></P
814 ></DD
815 ><DT
816 >Default values:</DT
817 ><DD
818 ><P
819 ></P
820 ><TABLE
821 BORDER="0"
822 ><TBODY
823 ><TR
824 ><TD
825 >     <P
826 CLASS="LITERALLAYOUT"
827 >&nbsp;&nbsp;match-all.action&nbsp;#&nbsp;Actions&nbsp;that&nbsp;are&nbsp;applied&nbsp;to&nbsp;all&nbsp;sites&nbsp;and&nbsp;maybe&nbsp;overruled&nbsp;later&nbsp;on.</P
828 >
829     </TD
830 ></TR
831 ><TR
832 ><TD
833 >     <P
834 CLASS="LITERALLAYOUT"
835 >&nbsp;&nbsp;default.action&nbsp;&nbsp;&nbsp;#&nbsp;Main&nbsp;actions&nbsp;file</P
836 >
837     </TD
838 ></TR
839 ><TR
840 ><TD
841 >     <P
842 CLASS="LITERALLAYOUT"
843 >&nbsp;&nbsp;user.action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;User&nbsp;customizations</P
844 >
845     </TD
846 ></TR
847 ></TBODY
848 ></TABLE
849 ><P
850 ></P
851 ></DD
852 ><DT
853 >Effect if unset:</DT
854 ><DD
855 ><P
856 >    No actions are taken at all. More or less neutral proxying. 
857    </P
858 ></DD
859 ><DT
860 >Notes:</DT
861 ><DD
862 ><P
863 >    Multiple <TT
864 CLASS="LITERAL"
865 >actionsfile</TT
866 > lines are permitted, and are in fact recommended!
867    </P
868 ><P
869
870     The default values are <TT
871 CLASS="FILENAME"
872 >default.action</TT
873 >, which is the
874     <SPAN
875 CLASS="QUOTE"
876 >"main"</SPAN
877 > actions file maintained by the developers, and
878     <TT
879 CLASS="FILENAME"
880 >user.action</TT
881 >, where you can make your personal additions.
882    </P
883 ><P
884
885     Actions files contain all the per site and per URL configuration for 
886     ad blocking, cookie management, privacy considerations, etc.
887     There is no point in using <SPAN
888 CLASS="APPLICATION"
889 >Privoxy</SPAN
890 > without at 
891     least one actions file.
892    </P
893 ><P
894 >    Note that since Privoxy 3.0.7, the complete filename, including the <SPAN
895 CLASS="QUOTE"
896 >".action"</SPAN
897 >
898     extension has to be specified.  The syntax change was necessary to be consistent
899     with the other file options and to allow previously forbidden characters.
900    </P
901 ></DD
902 ></DL
903 ></DIV
904 ></DIV
905 ><DIV
906 CLASS="SECT3"
907 ><H4
908 CLASS="SECT3"
909 ><A
910 NAME="FILTERFILE"
911 >7.2.5. filterfile</A
912 ></H4
913 ><A
914 NAME="DEFAULT.FILTER"
915 ></A
916 ><P
917 ></P
918 ><DIV
919 CLASS="VARIABLELIST"
920 ><DL
921 ><DT
922 >Specifies:</DT
923 ><DD
924 ><P
925 >    The <A
926 HREF="filter-file.html"
927 >filter file(s)</A
928 > to use
929    </P
930 ></DD
931 ><DT
932 >Type of value:</DT
933 ><DD
934 ><P
935 >File name, relative to <TT
936 CLASS="LITERAL"
937 >confdir</TT
938 ></P
939 ></DD
940 ><DT
941 >Default value:</DT
942 ><DD
943 ><P
944 >default.filter (Unix) <SPAN
945 CLASS="emphasis"
946 ><I
947 CLASS="EMPHASIS"
948 >or</I
949 ></SPAN
950 > default.filter.txt (Windows)</P
951 ></DD
952 ><DT
953 >Effect if unset:</DT
954 ><DD
955 ><P
956 >    No textual content filtering takes place, i.e. all
957     <TT
958 CLASS="LITERAL"
959 >+<A
960 HREF="actions-file.html#FILTER"
961 >filter</A
962 >{<TT
963 CLASS="REPLACEABLE"
964 ><I
965 >name</I
966 ></TT
967 >}</TT
968 >
969     actions in the actions files are turned neutral.
970    </P
971 ></DD
972 ><DT
973 >Notes:</DT
974 ><DD
975 ><P
976 >    Multiple <TT
977 CLASS="LITERAL"
978 >filterfile</TT
979 > lines are permitted.
980    </P
981 ><P
982 >    The <A
983 HREF="filter-file.html"
984 >filter files</A
985 > contain content modification
986     rules that use <A
987 HREF="appendix.html#REGEX"
988 >regular expressions</A
989 >. These rules permit
990     powerful changes on the content of Web pages, and optionally the headers
991     as well, e.g., you could try to disable your favorite JavaScript annoyances,
992     re-write the actual displayed text, or just have some fun 
993     playing buzzword bingo with web pages.
994    </P
995 ><P
996 >    The
997     <TT
998 CLASS="LITERAL"
999 >+<A
1000 HREF="actions-file.html#FILTER"
1001 >filter</A
1002 >{<TT
1003 CLASS="REPLACEABLE"
1004 ><I
1005 >name</I
1006 ></TT
1007 >}</TT
1008 >
1009     actions rely on the relevant filter (<TT
1010 CLASS="REPLACEABLE"
1011 ><I
1012 >name</I
1013 ></TT
1014 >)
1015     to be defined in a filter file!
1016    </P
1017 ><P
1018 >    A pre-defined filter file called <TT
1019 CLASS="FILENAME"
1020 >default.filter</TT
1021 > that contains
1022     a number of useful filters for common problems is included in the distribution.
1023     See the section on the <TT
1024 CLASS="LITERAL"
1025 ><A
1026 HREF="actions-file.html#FILTER"
1027 >filter</A
1028 ></TT
1029 >
1030     action for a list.
1031    </P
1032 ><P
1033 >    It is recommended to place any locally adapted filters into a separate
1034     file, such as <TT
1035 CLASS="FILENAME"
1036 >user.filter</TT
1037 >.
1038    </P
1039 ></DD
1040 ></DL
1041 ></DIV
1042 ></DIV
1043 ><DIV
1044 CLASS="SECT3"
1045 ><H4
1046 CLASS="SECT3"
1047 ><A
1048 NAME="LOGFILE"
1049 >7.2.6. logfile</A
1050 ></H4
1051 ><P
1052 ></P
1053 ><DIV
1054 CLASS="VARIABLELIST"
1055 ><DL
1056 ><DT
1057 >Specifies:</DT
1058 ><DD
1059 ><P
1060 >    The log file to use
1061    </P
1062 ></DD
1063 ><DT
1064 >Type of value:</DT
1065 ><DD
1066 ><P
1067 >File name, relative to <TT
1068 CLASS="LITERAL"
1069 >logdir</TT
1070 ></P
1071 ></DD
1072 ><DT
1073 >Default value:</DT
1074 ><DD
1075 ><P
1076 ><SPAN
1077 CLASS="emphasis"
1078 ><I
1079 CLASS="EMPHASIS"
1080 >Unset (commented out)</I
1081 ></SPAN
1082 >. When activated: logfile (Unix) <SPAN
1083 CLASS="emphasis"
1084 ><I
1085 CLASS="EMPHASIS"
1086 >or</I
1087 ></SPAN
1088 > privoxy.log (Windows).</P
1089 ></DD
1090 ><DT
1091 >Effect if unset:</DT
1092 ><DD
1093 ><P
1094 >    No logfile is written.
1095    </P
1096 ></DD
1097 ><DT
1098 >Notes:</DT
1099 ><DD
1100 ><P
1101 >    The logfile is where all logging and error messages are written. The level
1102     of detail and number of messages are set with the <TT
1103 CLASS="LITERAL"
1104 >debug</TT
1105 >
1106     option (see below). The logfile can be useful for tracking down a problem with
1107     <SPAN
1108 CLASS="APPLICATION"
1109 >Privoxy</SPAN
1110 > (e.g., it's not blocking an ad you
1111     think it should block) and it can help you to monitor what your browser
1112     is doing.
1113    </P
1114 ><P
1115 >    Depending on the debug options below, the logfile may be a privacy risk
1116     if third parties can get access to it. As most users will never look
1117     at it, <SPAN
1118 CLASS="APPLICATION"
1119 >Privoxy</SPAN
1120 > 3.0.7 and later only log fatal
1121     errors by default.
1122    </P
1123 ><P
1124 >    For most troubleshooting purposes, you will have to change that,
1125     please refer to the debugging section for details.
1126    </P
1127 ><P
1128 >    Your logfile will grow indefinitely, and you will probably want to
1129     periodically remove it.  On Unix systems, you can do this with a cron job
1130     (see <SPAN
1131 CLASS="QUOTE"
1132 >"man cron"</SPAN
1133 >). For Red Hat based Linux distributions, a
1134     <B
1135 CLASS="COMMAND"
1136 >logrotate</B
1137 > script has been included.
1138    </P
1139 ><P
1140 >    Any log files must be writable by whatever user <SPAN
1141 CLASS="APPLICATION"
1142 >Privoxy</SPAN
1143 >
1144     is being run as (on Unix, default user id is <SPAN
1145 CLASS="QUOTE"
1146 >"privoxy"</SPAN
1147 >).
1148    </P
1149 ></DD
1150 ></DL
1151 ></DIV
1152 ></DIV
1153 ><DIV
1154 CLASS="SECT3"
1155 ><H4
1156 CLASS="SECT3"
1157 ><A
1158 NAME="TRUSTFILE"
1159 >7.2.7. trustfile</A
1160 ></H4
1161 ><P
1162 ></P
1163 ><DIV
1164 CLASS="VARIABLELIST"
1165 ><DL
1166 ><DT
1167 >Specifies:</DT
1168 ><DD
1169 ><P
1170 >    The name of the trust file to use
1171    </P
1172 ></DD
1173 ><DT
1174 >Type of value:</DT
1175 ><DD
1176 ><P
1177 >File name, relative to <TT
1178 CLASS="LITERAL"
1179 >confdir</TT
1180 ></P
1181 ></DD
1182 ><DT
1183 >Default value:</DT
1184 ><DD
1185 ><P
1186 ><SPAN
1187 CLASS="emphasis"
1188 ><I
1189 CLASS="EMPHASIS"
1190 >Unset (commented out)</I
1191 ></SPAN
1192 >. When activated: trust (Unix) <SPAN
1193 CLASS="emphasis"
1194 ><I
1195 CLASS="EMPHASIS"
1196 >or</I
1197 ></SPAN
1198 > trust.txt (Windows)</P
1199 ></DD
1200 ><DT
1201 >Effect if unset:</DT
1202 ><DD
1203 ><P
1204 >    The entire trust mechanism is disabled.
1205    </P
1206 ></DD
1207 ><DT
1208 >Notes:</DT
1209 ><DD
1210 ><P
1211 >    The trust mechanism is an experimental feature for building white-lists and should
1212     be used with care. It is <SPAN
1213 CLASS="emphasis"
1214 ><I
1215 CLASS="EMPHASIS"
1216 >NOT</I
1217 ></SPAN
1218 > recommended for the casual user.
1219    </P
1220 ><P
1221 >    If you specify a trust file, <SPAN
1222 CLASS="APPLICATION"
1223 >Privoxy</SPAN
1224 > will only allow
1225     access to sites that are specified in the trustfile. Sites can be listed 
1226     in one of two ways:
1227    </P
1228 ><P
1229 >    Prepending a <TT
1230 CLASS="LITERAL"
1231 >~</TT
1232 > character limits access to this site 
1233     only (and any sub-paths within this site), e.g. 
1234     <TT
1235 CLASS="LITERAL"
1236 >~www.example.com</TT
1237 > allows access to
1238     <TT
1239 CLASS="LITERAL"
1240 >~www.example.com/features/news.html</TT
1241 >, etc. 
1242    </P
1243 ><P
1244 >    Or, you can designate sites as <SPAN
1245 CLASS="emphasis"
1246 ><I
1247 CLASS="EMPHASIS"
1248 >trusted referrers</I
1249 ></SPAN
1250 >, by
1251     prepending the name with a <TT
1252 CLASS="LITERAL"
1253 >+</TT
1254 > character. The effect is that
1255     access to untrusted sites will be granted -- but only if a link from this
1256     trusted referrer was used to get there. The link target will then be added
1257     to the <SPAN
1258 CLASS="QUOTE"
1259 >"trustfile"</SPAN
1260 > so that future, direct accesses will be
1261     granted. Sites added via this mechanism do not become trusted referrers
1262     themselves (i.e. they are added with a <TT
1263 CLASS="LITERAL"
1264 >~</TT
1265 > designation).
1266     There is a limit of 512 such entries, after which new entries will not be
1267     made.
1268    </P
1269 ><P
1270 >    If you use the <TT
1271 CLASS="LITERAL"
1272 >+</TT
1273 > operator in the trust file, it may grow 
1274     considerably over time.
1275    </P
1276 ><P
1277 >    It is recommended that <SPAN
1278 CLASS="APPLICATION"
1279 >Privoxy</SPAN
1280 > be compiled with
1281     the <TT
1282 CLASS="LITERAL"
1283 >--disable-force</TT
1284 >, <TT
1285 CLASS="LITERAL"
1286 >--disable-toggle</TT
1287 > and
1288     <TT
1289 CLASS="LITERAL"
1290 > --disable-editor</TT
1291 > options, if this feature is to be
1292     used.
1293    </P
1294 ><P
1295 >    Possible applications include limiting Internet access for children.
1296    </P
1297 ></DD
1298 ></DL
1299 ></DIV
1300 ></DIV
1301 ></DIV
1302 ><DIV
1303 CLASS="SECT2"
1304 ><H2
1305 CLASS="SECT2"
1306 ><A
1307 NAME="DEBUGGING"
1308 >7.3. Debugging</A
1309 ></H2
1310 ><P
1311 >  These options are mainly useful when tracing a problem.
1312   Note that you might also want to invoke
1313   <SPAN
1314 CLASS="APPLICATION"
1315 >Privoxy</SPAN
1316 > with the <TT
1317 CLASS="LITERAL"
1318 >--no-daemon</TT
1319 >
1320   command line option when debugging.
1321  </P
1322 ><DIV
1323 CLASS="SECT3"
1324 ><H4
1325 CLASS="SECT3"
1326 ><A
1327 NAME="DEBUG"
1328 >7.3.1. debug</A
1329 ></H4
1330 ><P
1331 ></P
1332 ><DIV
1333 CLASS="VARIABLELIST"
1334 ><DL
1335 ><DT
1336 >Specifies:</DT
1337 ><DD
1338 ><P
1339 >    Key values that determine what information gets logged.
1340    </P
1341 ></DD
1342 ><DT
1343 >Type of value:</DT
1344 ><DD
1345 ><P
1346 >Integer values</P
1347 ></DD
1348 ><DT
1349 >Default value:</DT
1350 ><DD
1351 ><P
1352 >0 (i.e.: only fatal errors (that cause Privoxy to exit) are logged)</P
1353 ></DD
1354 ><DT
1355 >Effect if unset:</DT
1356 ><DD
1357 ><P
1358 >    Default value is used (see above).
1359    </P
1360 ></DD
1361 ><DT
1362 >Notes:</DT
1363 ><DD
1364 ><P
1365 >    The available debug levels are:
1366    </P
1367 ><P
1368 >    <TABLE
1369 BORDER="0"
1370 BGCOLOR="#E0E0E0"
1371 WIDTH="90%"
1372 ><TR
1373 ><TD
1374 ><PRE
1375 CLASS="PROGRAMLISTING"
1376 >  debug     1 # Log the destination for each request <SPAN
1377 CLASS="APPLICATION"
1378 >Privoxy</SPAN
1379 > let through. See also debug 1024.
1380   debug     2 # show each connection status
1381   debug     4 # show I/O status
1382   debug     8 # show header parsing
1383   debug    16 # log all data written to the network
1384   debug    32 # debug force feature
1385   debug    64 # debug regular expression filters
1386   debug   128 # debug redirects
1387   debug   256 # debug GIF de-animation
1388   debug   512 # Common Log Format
1389   debug  1024 # Log the destination for requests <SPAN
1390 CLASS="APPLICATION"
1391 >Privoxy</SPAN
1392 > didn't let through, and the reason why.
1393   debug  2048 # CGI user interface
1394   debug  4096 # Startup banner and warnings.
1395   debug  8192 # Non-fatal errors
1396   debug 32768 # log all data read from the network</PRE
1397 ></TD
1398 ></TR
1399 ></TABLE
1400 >
1401    </P
1402 ><P
1403 >    To select multiple debug levels, you can either add them or use
1404     multiple <TT
1405 CLASS="LITERAL"
1406 >debug</TT
1407 > lines.
1408    </P
1409 ><P
1410 >    A debug level of 1 is informative because it will show you each request
1411     as it happens. <SPAN
1412 CLASS="emphasis"
1413 ><I
1414 CLASS="EMPHASIS"
1415 >1, 1024, 4096 and 8192 are recommended</I
1416 ></SPAN
1417 >
1418     so that you will notice when things go wrong. The other levels are
1419     probably only of interest if you are hunting down a specific problem.
1420     They can produce a hell of an output (especially 16).
1421     
1422    </P
1423 ><P
1424 >    <SPAN
1425 CLASS="APPLICATION"
1426 >Privoxy</SPAN
1427 > used to ship with the debug levels recommended above enabled by
1428     default, but due to privacy concerns 3.0.7 and later are configured to
1429     only log fatal errors.
1430    </P
1431 ><P
1432 >    If you are used to the more verbose settings, simply enable the debug lines
1433     below again.
1434    </P
1435 ><P
1436 >    If you want to use pure CLF (Common Log Format), you should set <SPAN
1437 CLASS="QUOTE"
1438 >"debug
1439     512"</SPAN
1440 > <SPAN
1441 CLASS="emphasis"
1442 ><I
1443 CLASS="EMPHASIS"
1444 >ONLY</I
1445 ></SPAN
1446 > and not enable anything else.
1447    </P
1448 ><P
1449 >    <SPAN
1450 CLASS="APPLICATION"
1451 >Privoxy</SPAN
1452 > has a hard-coded limit for the
1453     length of log messages. If it's reached, messages are logged truncated
1454     and marked with <SPAN
1455 CLASS="QUOTE"
1456 >"... [too long, truncated]"</SPAN
1457 >.
1458    </P
1459 ><P
1460 >    Please don't file any support requests without trying to reproduce
1461     the problem with increased debug level first. Once you read the log
1462     messages, you may even be able to solve the problem on your own.
1463    </P
1464 ></DD
1465 ></DL
1466 ></DIV
1467 ></DIV
1468 ><DIV
1469 CLASS="SECT3"
1470 ><H4
1471 CLASS="SECT3"
1472 ><A
1473 NAME="SINGLE-THREADED"
1474 >7.3.2. single-threaded</A
1475 ></H4
1476 ><P
1477 ></P
1478 ><DIV
1479 CLASS="VARIABLELIST"
1480 ><DL
1481 ><DT
1482 >Specifies:</DT
1483 ><DD
1484 ><P
1485 >    Whether to run only one server thread.
1486    </P
1487 ></DD
1488 ><DT
1489 >Type of value:</DT
1490 ><DD
1491 ><P
1492 ><SPAN
1493 CLASS="emphasis"
1494 ><I
1495 CLASS="EMPHASIS"
1496 >None</I
1497 ></SPAN
1498 ></P
1499 ></DD
1500 ><DT
1501 >Default value:</DT
1502 ><DD
1503 ><P
1504 ><SPAN
1505 CLASS="emphasis"
1506 ><I
1507 CLASS="EMPHASIS"
1508 >Unset</I
1509 ></SPAN
1510 ></P
1511 ></DD
1512 ><DT
1513 >Effect if unset:</DT
1514 ><DD
1515 ><P
1516 >    Multi-threaded (or, where unavailable: forked) operation, i.e. the ability to
1517     serve multiple requests simultaneously.
1518    </P
1519 ></DD
1520 ><DT
1521 >Notes:</DT
1522 ><DD
1523 ><P
1524 >    This option is only there for debugging purposes.
1525     <SPAN
1526 CLASS="emphasis"
1527 ><I
1528 CLASS="EMPHASIS"
1529 >It will drastically reduce performance.</I
1530 ></SPAN
1531 >
1532    </P
1533 ></DD
1534 ></DL
1535 ></DIV
1536 ></DIV
1537 ><DIV
1538 CLASS="SECT3"
1539 ><H4
1540 CLASS="SECT3"
1541 ><A
1542 NAME="HOSTNAME"
1543 >7.3.3. hostname</A
1544 ></H4
1545 ><P
1546 ></P
1547 ><DIV
1548 CLASS="VARIABLELIST"
1549 ><DL
1550 ><DT
1551 >Specifies:</DT
1552 ><DD
1553 ><P
1554 >    The hostname shown on the CGI pages.
1555    </P
1556 ></DD
1557 ><DT
1558 >Type of value:</DT
1559 ><DD
1560 ><P
1561 >Text</P
1562 ></DD
1563 ><DT
1564 >Default value:</DT
1565 ><DD
1566 ><P
1567 ><SPAN
1568 CLASS="emphasis"
1569 ><I
1570 CLASS="EMPHASIS"
1571 >Unset</I
1572 ></SPAN
1573 ></P
1574 ></DD
1575 ><DT
1576 >Effect if unset:</DT
1577 ><DD
1578 ><P
1579 >    The hostname provided by the operating system is used.
1580    </P
1581 ></DD
1582 ><DT
1583 >Notes:</DT
1584 ><DD
1585 ><P
1586 >    On some misconfigured systems resolving the hostname fails or
1587     takes too much time and slows Privoxy down. Setting a fixed hostname
1588     works around the problem.
1589    </P
1590 ><P
1591 >    In other circumstances it might be desirable to show a hostname
1592     other than the one returned by the operating system. For example
1593     if the system has several different hostnames and you don't want
1594     to use the first one.
1595    </P
1596 ><P
1597 >    Note that Privoxy does not validate the specified hostname value.
1598    </P
1599 ></DD
1600 ></DL
1601 ></DIV
1602 ></DIV
1603 ></DIV
1604 ><DIV
1605 CLASS="SECT2"
1606 ><H2
1607 CLASS="SECT2"
1608 ><A
1609 NAME="ACCESS-CONTROL"
1610 >7.4. Access Control and Security</A
1611 ></H2
1612 ><P
1613 >  This section of the config file controls the security-relevant aspects
1614   of <SPAN
1615 CLASS="APPLICATION"
1616 >Privoxy</SPAN
1617 >'s configuration.
1618  </P
1619 ><DIV
1620 CLASS="SECT3"
1621 ><H4
1622 CLASS="SECT3"
1623 ><A
1624 NAME="LISTEN-ADDRESS"
1625 >7.4.1. listen-address</A
1626 ></H4
1627 ><P
1628 ></P
1629 ><DIV
1630 CLASS="VARIABLELIST"
1631 ><DL
1632 ><DT
1633 >Specifies:</DT
1634 ><DD
1635 ><P
1636 >    The address and TCP port on which <SPAN
1637 CLASS="APPLICATION"
1638 >Privoxy</SPAN
1639 > will
1640     listen for client requests.
1641    </P
1642 ></DD
1643 ><DT
1644 >Type of value:</DT
1645 ><DD
1646 ><P
1647 >[<TT
1648 CLASS="REPLACEABLE"
1649 ><I
1650 >IP-Address</I
1651 ></TT
1652 >]:<TT
1653 CLASS="REPLACEABLE"
1654 ><I
1655 >Port</I
1656 ></TT
1657 ></P
1658 ><P
1659 >[<TT
1660 CLASS="REPLACEABLE"
1661 ><I
1662 >Hostname</I
1663 ></TT
1664 >]:<TT
1665 CLASS="REPLACEABLE"
1666 ><I
1667 >Port</I
1668 ></TT
1669 ></P
1670 ></DD
1671 ><DT
1672 >Default value:</DT
1673 ><DD
1674 ><P
1675 >127.0.0.1:8118</P
1676 ></DD
1677 ><DT
1678 >Effect if unset:</DT
1679 ><DD
1680 ><P
1681 >    Bind to 127.0.0.1 (IPv4 localhost), port 8118. This is suitable and
1682     recommended for home users who run <SPAN
1683 CLASS="APPLICATION"
1684 >Privoxy</SPAN
1685 > on
1686     the same machine as their browser.
1687    </P
1688 ></DD
1689 ><DT
1690 >Notes:</DT
1691 ><DD
1692 ><P
1693 >    You will need to configure your browser(s) to this proxy address and port.
1694    </P
1695 ><P
1696 >    If you already have another service running on port 8118, or if you want to
1697     serve requests from other machines (e.g. on your local network) as well, you
1698     will need to override the default.
1699    </P
1700 ><P
1701 >    You can use this statement multiple times to make
1702     <SPAN
1703 CLASS="APPLICATION"
1704 >Privoxy</SPAN
1705 > listen on more ports or more
1706     <ABBR
1707 CLASS="ABBREV"
1708 >IP</ABBR
1709 > addresses. Suitable if your operating system does not
1710     support sharing <ABBR
1711 CLASS="ABBREV"
1712 >IPv6</ABBR
1713 > and <ABBR
1714 CLASS="ABBREV"
1715 >IPv4</ABBR
1716 > protocols
1717     on the same socket.
1718    </P
1719 ><P
1720 >    If a hostname is used instead of an IP address, <SPAN
1721 CLASS="APPLICATION"
1722 >Privoxy</SPAN
1723 >
1724     will try to resolve it to an IP address and if there are multiple, use the first
1725     one returned.
1726    </P
1727 ><P
1728 >    If the address for the hostname isn't already known on the system
1729     (for example because it's in /etc/hostname), this may result in DNS
1730     traffic.
1731    </P
1732 ><P
1733 >    If the specified address isn't available on the system, or if the
1734     hostname can't be resolved, <SPAN
1735 CLASS="APPLICATION"
1736 >Privoxy</SPAN
1737 >
1738     will fail to start.
1739    </P
1740 ><P
1741 >    IPv6 addresses containing colons have to be quoted by brackets.
1742     They can only be used if <SPAN
1743 CLASS="APPLICATION"
1744 >Privoxy</SPAN
1745 > has
1746     been compiled with IPv6 support. If you aren't sure if your version
1747     supports it, have a look at
1748     <TT
1749 CLASS="LITERAL"
1750 >http://config.privoxy.org/show-status</TT
1751 >.
1752    </P
1753 ><P
1754 >    Some operating systems will prefer IPv6 to IPv4 addresses even if the
1755     system has no IPv6 connectivity which is usually not expected by the user.
1756     Some even rely on DNS to resolve localhost which mean the "localhost" address
1757     used may not actually be local.
1758    </P
1759 ><P
1760 >    It is therefore recommended to explicitly configure the intended IP address
1761     instead of relying on the operating system, unless there's a strong reason not to.
1762    </P
1763 ><P
1764 >    If you leave out the address, <SPAN
1765 CLASS="APPLICATION"
1766 >Privoxy</SPAN
1767 > will bind to all
1768     IPv4 interfaces (addresses) on your machine and may become reachable from the
1769     Internet and/or the local network. Be aware that some GNU/Linux distributions
1770     modify that behaviour without updating the documentation. Check for non-standard
1771     patches if your <SPAN
1772 CLASS="APPLICATION"
1773 >Privoxy</SPAN
1774 >version behaves differently.
1775    </P
1776 ><P
1777 >    If you configure <SPAN
1778 CLASS="APPLICATION"
1779 >Privoxy</SPAN
1780 >to be reachable from the
1781     network, consider using <A
1782 HREF="config.html#ACLS"
1783 >access control lists</A
1784 >
1785     (ACL's, see below), and/or a firewall.
1786    </P
1787 ><P
1788 >    If you open <SPAN
1789 CLASS="APPLICATION"
1790 >Privoxy</SPAN
1791 > to untrusted users, you will
1792     also want to make sure that the following actions are disabled:  <TT
1793 CLASS="LITERAL"
1794 ><A
1795 HREF="config.html#ENABLE-EDIT-ACTIONS"
1796 >enable-edit-actions</A
1797 ></TT
1798 > and
1799     <TT
1800 CLASS="LITERAL"
1801 ><A
1802 HREF="config.html#ENABLE-REMOTE-TOGGLE"
1803 >enable-remote-toggle</A
1804 ></TT
1805 >
1806    </P
1807 ><P
1808 >    With the exception noted above, listening on multiple addresses is currently
1809     not supported by <SPAN
1810 CLASS="APPLICATION"
1811 >Privoxy</SPAN
1812 > directly.
1813     It can be done on most operating systems by letting a packet filter
1814     redirect request for certain addresses to Privoxy, though.
1815    </P
1816 ></DD
1817 ><DT
1818 >Example:</DT
1819 ><DD
1820 ><P
1821 >     Suppose you are running <SPAN
1822 CLASS="APPLICATION"
1823 >Privoxy</SPAN
1824 > on
1825      a machine which has the address 192.168.0.1 on your local private network
1826      (192.168.0.0) and has another outside connection with a different address.
1827      You want it to serve requests from inside only:
1828    </P
1829 ><P
1830 >    <TABLE
1831 BORDER="0"
1832 BGCOLOR="#E0E0E0"
1833 WIDTH="90%"
1834 ><TR
1835 ><TD
1836 ><PRE
1837 CLASS="PROGRAMLISTING"
1838 >  listen-address  192.168.0.1:8118</PRE
1839 ></TD
1840 ></TR
1841 ></TABLE
1842 >
1843    </P
1844 ><P
1845 >    Suppose you are running <SPAN
1846 CLASS="APPLICATION"
1847 >Privoxy</SPAN
1848 > on an
1849     IPv6-capable machine and you want it to listen on the IPv6 address
1850     of the loopback device:
1851    </P
1852 ><P
1853 >    <TABLE
1854 BORDER="0"
1855 BGCOLOR="#E0E0E0"
1856 WIDTH="90%"
1857 ><TR
1858 ><TD
1859 ><PRE
1860 CLASS="PROGRAMLISTING"
1861 >  listen-address [::1]:8118</PRE
1862 ></TD
1863 ></TR
1864 ></TABLE
1865 >
1866    </P
1867 ></DD
1868 ></DL
1869 ></DIV
1870 ></DIV
1871 ><DIV
1872 CLASS="SECT3"
1873 ><H4
1874 CLASS="SECT3"
1875 ><A
1876 NAME="TOGGLE"
1877 >7.4.2. toggle</A
1878 ></H4
1879 ><P
1880 ></P
1881 ><DIV
1882 CLASS="VARIABLELIST"
1883 ><DL
1884 ><DT
1885 >Specifies:</DT
1886 ><DD
1887 ><P
1888 >    Initial state of "toggle" status
1889    </P
1890 ></DD
1891 ><DT
1892 >Type of value:</DT
1893 ><DD
1894 ><P
1895 >1 or 0</P
1896 ></DD
1897 ><DT
1898 >Default value:</DT
1899 ><DD
1900 ><P
1901 >1</P
1902 ></DD
1903 ><DT
1904 >Effect if unset:</DT
1905 ><DD
1906 ><P
1907 >    Act as if toggled on
1908    </P
1909 ></DD
1910 ><DT
1911 >Notes:</DT
1912 ><DD
1913 ><P
1914 >    If set to 0, <SPAN
1915 CLASS="APPLICATION"
1916 >Privoxy</SPAN
1917 > will start in
1918     <SPAN
1919 CLASS="QUOTE"
1920 >"toggled off"</SPAN
1921 > mode, i.e. mostly behave like a normal,
1922     content-neutral proxy with both ad blocking and content filtering
1923     disabled. See <TT
1924 CLASS="LITERAL"
1925 >enable-remote-toggle</TT
1926 > below.
1927    </P
1928 ><P
1929 >    The windows version will only display the toggle icon in the system tray
1930     if this option is present.
1931    </P
1932 ></DD
1933 ></DL
1934 ></DIV
1935 ></DIV
1936 ><DIV
1937 CLASS="SECT3"
1938 ><H4
1939 CLASS="SECT3"
1940 ><A
1941 NAME="ENABLE-REMOTE-TOGGLE"
1942 >7.4.3. enable-remote-toggle</A
1943 ></H4
1944 ><P
1945 ></P
1946 ><DIV
1947 CLASS="VARIABLELIST"
1948 ><DL
1949 ><DT
1950 >Specifies:</DT
1951 ><DD
1952 ><P
1953 >    Whether or not the <A
1954 HREF="http://config.privoxy.org/toggle"
1955 TARGET="_top"
1956 >web-based toggle
1957     feature</A
1958 > may be used
1959    </P
1960 ></DD
1961 ><DT
1962 >Type of value:</DT
1963 ><DD
1964 ><P
1965 >0 or 1</P
1966 ></DD
1967 ><DT
1968 >Default value:</DT
1969 ><DD
1970 ><P
1971 >0</P
1972 ></DD
1973 ><DT
1974 >Effect if unset:</DT
1975 ><DD
1976 ><P
1977 >    The web-based toggle feature is disabled.
1978    </P
1979 ></DD
1980 ><DT
1981 >Notes:</DT
1982 ><DD
1983 ><P
1984 >    When toggled off, <SPAN
1985 CLASS="APPLICATION"
1986 >Privoxy</SPAN
1987 > mostly acts like a normal,
1988     content-neutral proxy, i.e. doesn't block ads or filter content.
1989    </P
1990 ><P
1991 >    Access to the toggle feature can <SPAN
1992 CLASS="emphasis"
1993 ><I
1994 CLASS="EMPHASIS"
1995 >not</I
1996 ></SPAN
1997 > be
1998     controlled separately by <SPAN
1999 CLASS="QUOTE"
2000 >"ACLs"</SPAN
2001 > or HTTP authentication,
2002     so that everybody who can access <SPAN
2003 CLASS="APPLICATION"
2004 >Privoxy</SPAN
2005 > (see
2006     <SPAN
2007 CLASS="QUOTE"
2008 >"ACLs"</SPAN
2009 > and <TT
2010 CLASS="LITERAL"
2011 >listen-address</TT
2012 > above) can
2013     toggle it for all users. So this option is <SPAN
2014 CLASS="emphasis"
2015 ><I
2016 CLASS="EMPHASIS"
2017 >not recommended</I
2018 ></SPAN
2019 >
2020     for multi-user environments with untrusted users.
2021    </P
2022 ><P
2023 >    Note that malicious client side code (e.g Java) is also
2024     capable of using this option.
2025    </P
2026 ><P
2027 >    As a lot of <SPAN
2028 CLASS="APPLICATION"
2029 >Privoxy</SPAN
2030 > users don't read
2031     documentation, this feature is disabled by default.
2032    </P
2033 ><P
2034 >    Note that you must have compiled <SPAN
2035 CLASS="APPLICATION"
2036 >Privoxy</SPAN
2037 > with
2038     support for this feature, otherwise this option has no effect. 
2039    </P
2040 ></DD
2041 ></DL
2042 ></DIV
2043 ></DIV
2044 ><DIV
2045 CLASS="SECT3"
2046 ><H4
2047 CLASS="SECT3"
2048 ><A
2049 NAME="ENABLE-REMOTE-HTTP-TOGGLE"
2050 >7.4.4. enable-remote-http-toggle</A
2051 ></H4
2052 ><P
2053 ></P
2054 ><DIV
2055 CLASS="VARIABLELIST"
2056 ><DL
2057 ><DT
2058 >Specifies:</DT
2059 ><DD
2060 ><P
2061 >    Whether or not Privoxy recognizes special HTTP headers to change its behaviour.
2062    </P
2063 ></DD
2064 ><DT
2065 >Type of value:</DT
2066 ><DD
2067 ><P
2068 >0 or 1</P
2069 ></DD
2070 ><DT
2071 >Default value:</DT
2072 ><DD
2073 ><P
2074 >0</P
2075 ></DD
2076 ><DT
2077 >Effect if unset:</DT
2078 ><DD
2079 ><P
2080 >    Privoxy ignores special HTTP headers.
2081    </P
2082 ></DD
2083 ><DT
2084 >Notes:</DT
2085 ><DD
2086 ><P
2087 >    When toggled on, the client can change <SPAN
2088 CLASS="APPLICATION"
2089 >Privoxy's</SPAN
2090 >
2091     behaviour by setting special HTTP headers. Currently the only supported
2092     special header is <SPAN
2093 CLASS="QUOTE"
2094 >"X-Filter: No"</SPAN
2095 >, to disable filtering for
2096     the ongoing request, even if it is enabled in one of the action files.
2097    </P
2098 ><P
2099 >    This feature is disabled by default. If you are using
2100     <SPAN
2101 CLASS="APPLICATION"
2102 >Privoxy</SPAN
2103 > in a environment with trusted clients,
2104     you may enable this feature at your discretion. Note that malicious client
2105     side code (e.g Java) is also capable of using this feature.
2106    </P
2107 ><P
2108 >    This option will be removed in future releases as it has been obsoleted
2109     by the more general header taggers.
2110    </P
2111 ></DD
2112 ></DL
2113 ></DIV
2114 ></DIV
2115 ><DIV
2116 CLASS="SECT3"
2117 ><H4
2118 CLASS="SECT3"
2119 ><A
2120 NAME="ENABLE-EDIT-ACTIONS"
2121 >7.4.5. enable-edit-actions</A
2122 ></H4
2123 ><P
2124 ></P
2125 ><DIV
2126 CLASS="VARIABLELIST"
2127 ><DL
2128 ><DT
2129 >Specifies:</DT
2130 ><DD
2131 ><P
2132 >    Whether or not the <A
2133 HREF="http://config.privoxy.org/show-status"
2134 TARGET="_top"
2135 >web-based actions
2136     file editor</A
2137 > may be used
2138    </P
2139 ></DD
2140 ><DT
2141 >Type of value:</DT
2142 ><DD
2143 ><P
2144 >0 or 1</P
2145 ></DD
2146 ><DT
2147 >Default value:</DT
2148 ><DD
2149 ><P
2150 >0</P
2151 ></DD
2152 ><DT
2153 >Effect if unset:</DT
2154 ><DD
2155 ><P
2156 >    The web-based actions file editor is disabled.
2157    </P
2158 ></DD
2159 ><DT
2160 >Notes:</DT
2161 ><DD
2162 ><P
2163 >    Access to the editor can <SPAN
2164 CLASS="emphasis"
2165 ><I
2166 CLASS="EMPHASIS"
2167 >not</I
2168 ></SPAN
2169 > be
2170     controlled separately by <SPAN
2171 CLASS="QUOTE"
2172 >"ACLs"</SPAN
2173 > or HTTP authentication,
2174     so that everybody who can access <SPAN
2175 CLASS="APPLICATION"
2176 >Privoxy</SPAN
2177 > (see
2178     <SPAN
2179 CLASS="QUOTE"
2180 >"ACLs"</SPAN
2181 > and <TT
2182 CLASS="LITERAL"
2183 >listen-address</TT
2184 > above) can
2185     modify its configuration for all users.
2186    </P
2187 ><P
2188 >    This option is <SPAN
2189 CLASS="emphasis"
2190 ><I
2191 CLASS="EMPHASIS"
2192 >not recommended</I
2193 ></SPAN
2194 > for environments
2195     with untrusted users and as a lot of <SPAN
2196 CLASS="APPLICATION"
2197 >Privoxy</SPAN
2198 >
2199     users don't read documentation, this feature is disabled by default.
2200    </P
2201 ><P
2202 >    Note that malicious client side code (e.g Java) is also
2203     capable of using the actions editor and you shouldn't enable
2204     this options unless you understand the consequences and are
2205     sure your browser is configured correctly.
2206    </P
2207 ><P
2208 >    Note that you must have compiled <SPAN
2209 CLASS="APPLICATION"
2210 >Privoxy</SPAN
2211 > with
2212     support for this feature, otherwise this option has no effect. 
2213    </P
2214 ></DD
2215 ></DL
2216 ></DIV
2217 ></DIV
2218 ><DIV
2219 CLASS="SECT3"
2220 ><H4
2221 CLASS="SECT3"
2222 ><A
2223 NAME="ENFORCE-BLOCKS"
2224 >7.4.6. enforce-blocks</A
2225 ></H4
2226 ><P
2227 ></P
2228 ><DIV
2229 CLASS="VARIABLELIST"
2230 ><DL
2231 ><DT
2232 >Specifies:</DT
2233 ><DD
2234 ><P
2235 >    Whether the user is allowed to ignore blocks and can <SPAN
2236 CLASS="QUOTE"
2237 >"go there anyway"</SPAN
2238 >.
2239    </P
2240 ></DD
2241 ><DT
2242 >Type of value:</DT
2243 ><DD
2244 ><P
2245 >    <TT
2246 CLASS="REPLACEABLE"
2247 ><I
2248 >0 or 1</I
2249 ></TT
2250 >
2251    </P
2252 ></DD
2253 ><DT
2254 >Default value:</DT
2255 ><DD
2256 ><P
2257 ><SPAN
2258 CLASS="emphasis"
2259 ><I
2260 CLASS="EMPHASIS"
2261 >0</I
2262 ></SPAN
2263 ></P
2264 ></DD
2265 ><DT
2266 >Effect if unset:</DT
2267 ><DD
2268 ><P
2269 >    Blocks are not enforced.
2270    </P
2271 ></DD
2272 ><DT
2273 >Notes:</DT
2274 ><DD
2275 ><P
2276 >    <SPAN
2277 CLASS="APPLICATION"
2278 >Privoxy</SPAN
2279 > is mainly used to block and filter
2280     requests as a service to the user, for example to block ads and other
2281     junk that clogs the pipes. <SPAN
2282 CLASS="APPLICATION"
2283 >Privoxy's</SPAN
2284 > configuration
2285     isn't perfect and sometimes innocent pages are blocked. In this situation it
2286     makes sense to allow the user to enforce the request and have
2287     <SPAN
2288 CLASS="APPLICATION"
2289 >Privoxy</SPAN
2290 > ignore the block.
2291    </P
2292 ><P
2293 >    In the default configuration <SPAN
2294 CLASS="APPLICATION"
2295 >Privoxy's</SPAN
2296 >
2297     <SPAN
2298 CLASS="QUOTE"
2299 >"Blocked"</SPAN
2300 > page contains a <SPAN
2301 CLASS="QUOTE"
2302 >"go there anyway"</SPAN
2303 >
2304     link to adds a special string (the force prefix) to the request URL.
2305     If that link is used, <SPAN
2306 CLASS="APPLICATION"
2307 >Privoxy</SPAN
2308 > will
2309     detect the force prefix, remove it again and let the request pass.
2310    </P
2311 ><P
2312 >    Of course <SPAN
2313 CLASS="APPLICATION"
2314 >Privoxy</SPAN
2315 > can also be used to enforce
2316     a network policy. In that case the user obviously should not be able to
2317     bypass any blocks, and that's what the <SPAN
2318 CLASS="QUOTE"
2319 >"enforce-blocks"</SPAN
2320 >
2321     option is for. If it's enabled, <SPAN
2322 CLASS="APPLICATION"
2323 >Privoxy</SPAN
2324 > hides
2325     the <SPAN
2326 CLASS="QUOTE"
2327 >"go there anyway"</SPAN
2328 > link. If the user adds the force
2329     prefix by hand, it will not be accepted and the circumvention attempt
2330     is logged.
2331    </P
2332 ></DD
2333 ><DT
2334 >Examples:</DT
2335 ><DD
2336 ><P
2337 >    enforce-blocks 1
2338    </P
2339 ></DD
2340 ></DL
2341 ></DIV
2342 ></DIV
2343 ><DIV
2344 CLASS="SECT3"
2345 ><H4
2346 CLASS="SECT3"
2347 ><A
2348 NAME="ACLS"
2349 >7.4.7. ACLs: permit-access and deny-access</A
2350 ></H4
2351 ><A
2352 NAME="PERMIT-ACCESS"
2353 ></A
2354 ><A
2355 NAME="DENY-ACCESS"
2356 ></A
2357 ><P
2358 ></P
2359 ><DIV
2360 CLASS="VARIABLELIST"
2361 ><DL
2362 ><DT
2363 >Specifies:</DT
2364 ><DD
2365 ><P
2366 >    Who can access what.
2367    </P
2368 ></DD
2369 ><DT
2370 >Type of value:</DT
2371 ><DD
2372 ><P
2373 >    <TT
2374 CLASS="REPLACEABLE"
2375 ><I
2376 >src_addr</I
2377 ></TT
2378 >[:<TT
2379 CLASS="REPLACEABLE"
2380 ><I
2381 >port</I
2382 ></TT
2383 >][/<TT
2384 CLASS="REPLACEABLE"
2385 ><I
2386 >src_masklen</I
2387 ></TT
2388 >]
2389     [<TT
2390 CLASS="REPLACEABLE"
2391 ><I
2392 >dst_addr</I
2393 ></TT
2394 >[:<TT
2395 CLASS="REPLACEABLE"
2396 ><I
2397 >port</I
2398 ></TT
2399 >][/<TT
2400 CLASS="REPLACEABLE"
2401 ><I
2402 >dst_masklen</I
2403 ></TT
2404 >]]
2405    </P
2406 ><P
2407 >    Where <TT
2408 CLASS="REPLACEABLE"
2409 ><I
2410 >src_addr</I
2411 ></TT
2412 > and 
2413    <TT
2414 CLASS="REPLACEABLE"
2415 ><I
2416 >dst_addr</I
2417 ></TT
2418 > are IPv4 addresses in dotted decimal notation or valid
2419     DNS names, <TT
2420 CLASS="REPLACEABLE"
2421 ><I
2422 >port</I
2423 ></TT
2424 > is a port
2425     number, and <TT
2426 CLASS="REPLACEABLE"
2427 ><I
2428 >src_masklen</I
2429 ></TT
2430 > and
2431     <TT
2432 CLASS="REPLACEABLE"
2433 ><I
2434 >dst_masklen</I
2435 ></TT
2436 > are subnet masks in CIDR notation, i.e. integer
2437     values from 2 to 30 representing the length (in bits) of the network address. The masks and the whole
2438     destination part are optional.
2439    </P
2440 ><P
2441 >    If your system implements
2442     <A
2443 HREF="http://tools.ietf.org/html/rfc3493"
2444 TARGET="_top"
2445 >RFC 3493</A
2446 >, then
2447     <TT
2448 CLASS="REPLACEABLE"
2449 ><I
2450 >src_addr</I
2451 ></TT
2452 > and <TT
2453 CLASS="REPLACEABLE"
2454 ><I
2455 >dst_addr</I
2456 ></TT
2457 > can be IPv6 addresses delimeted by
2458     brackets, <TT
2459 CLASS="REPLACEABLE"
2460 ><I
2461 >port</I
2462 ></TT
2463 > can be a number
2464     or a service name, and
2465     <TT
2466 CLASS="REPLACEABLE"
2467 ><I
2468 >src_masklen</I
2469 ></TT
2470 > and
2471     <TT
2472 CLASS="REPLACEABLE"
2473 ><I
2474 >dst_masklen</I
2475 ></TT
2476 > can be a number
2477     from 0 to 128.
2478    </P
2479 ></DD
2480 ><DT
2481 >Default value:</DT
2482 ><DD
2483 ><P
2484 ><SPAN
2485 CLASS="emphasis"
2486 ><I
2487 CLASS="EMPHASIS"
2488 >Unset</I
2489 ></SPAN
2490 ></P
2491 ><P
2492 >    If no <TT
2493 CLASS="REPLACEABLE"
2494 ><I
2495 >port</I
2496 ></TT
2497 > is specified,
2498     any port will match. If no <TT
2499 CLASS="REPLACEABLE"
2500 ><I
2501 >src_masklen</I
2502 ></TT
2503 > or
2504     <TT
2505 CLASS="REPLACEABLE"
2506 ><I
2507 >src_masklen</I
2508 ></TT
2509 > is given, the complete IP
2510     address has to match (i.e. 32 bits for IPv4 and 128 bits for IPv6).
2511    </P
2512 ></DD
2513 ><DT
2514 >Effect if unset:</DT
2515 ><DD
2516 ><P
2517 >    Don't restrict access further than implied by <TT
2518 CLASS="LITERAL"
2519 >listen-address</TT
2520 >
2521    </P
2522 ></DD
2523 ><DT
2524 >Notes:</DT
2525 ><DD
2526 ><P
2527 >    Access controls are included at the request of ISPs and systems
2528     administrators, and <SPAN
2529 CLASS="emphasis"
2530 ><I
2531 CLASS="EMPHASIS"
2532 >are not usually needed by individual users</I
2533 ></SPAN
2534 >.
2535     For a typical home user, it will normally suffice to ensure that 
2536     <SPAN
2537 CLASS="APPLICATION"
2538 >Privoxy</SPAN
2539 > only listens on the localhost
2540     (127.0.0.1) or internal (home) network address by means of the
2541     <A
2542 HREF="config.html#LISTEN-ADDRESS"
2543 ><SPAN
2544 CLASS="emphasis"
2545 ><I
2546 CLASS="EMPHASIS"
2547 >listen-address</I
2548 ></SPAN
2549 ></A
2550 >
2551     option. 
2552    </P
2553 ><P
2554 >    Please see the warnings in the FAQ that <SPAN
2555 CLASS="APPLICATION"
2556 >Privoxy</SPAN
2557 >
2558     is not intended to be a substitute for a firewall or to encourage anyone
2559     to defer addressing basic security weaknesses.
2560    </P
2561 ><P
2562 >    Multiple ACL lines are OK.
2563     If any ACLs are specified, <SPAN
2564 CLASS="APPLICATION"
2565 >Privoxy</SPAN
2566 > only talks
2567     to IP addresses that match at least one <TT
2568 CLASS="LITERAL"
2569 >permit-access</TT
2570 > line
2571     and don't match any subsequent <TT
2572 CLASS="LITERAL"
2573 >deny-access</TT
2574 > line. In other words, the
2575     last match wins, with the default being <TT
2576 CLASS="LITERAL"
2577 >deny-access</TT
2578 >.
2579    </P
2580 ><P
2581 >    If <SPAN
2582 CLASS="APPLICATION"
2583 >Privoxy</SPAN
2584 > is using a forwarder (see <TT
2585 CLASS="LITERAL"
2586 >forward</TT
2587 > below)
2588     for a particular destination URL, the <TT
2589 CLASS="REPLACEABLE"
2590 ><I
2591 >dst_addr</I
2592 ></TT
2593 >
2594     that is examined is the address of the forwarder and <SPAN
2595 CLASS="emphasis"
2596 ><I
2597 CLASS="EMPHASIS"
2598 >NOT</I
2599 ></SPAN
2600 > the address
2601     of the ultimate target. This is necessary because it may be impossible for the local
2602     <SPAN
2603 CLASS="APPLICATION"
2604 >Privoxy</SPAN
2605 > to determine the IP address of the
2606     ultimate target (that's often what gateways are used for).
2607    </P
2608 ><P
2609 >    You should prefer using IP addresses over DNS names, because the address lookups take
2610     time. All DNS names must resolve! You can <SPAN
2611 CLASS="emphasis"
2612 ><I
2613 CLASS="EMPHASIS"
2614 >not</I
2615 ></SPAN
2616 > use domain patterns
2617     like <SPAN
2618 CLASS="QUOTE"
2619 >"*.org"</SPAN
2620 > or partial domain names. If a DNS name resolves to multiple
2621     IP addresses, only the first one is used.
2622    </P
2623 ><P
2624 >     Some systems allow IPv4 clients to connect to IPv6 server sockets.
2625      Then the client's IPv4 address will be translated by the system into
2626      IPv6 address space with special prefix ::ffff:0:0/96 (so called IPv4
2627      mapped IPv6 address). <SPAN
2628 CLASS="APPLICATION"
2629 >Privoxy</SPAN
2630 > can handle it
2631      and maps such ACL addresses automatically.
2632    </P
2633 ><P
2634 >    Denying access to particular sites by ACL may have undesired side effects
2635     if the site in question is hosted on a machine which also hosts other sites
2636     (most sites are).
2637    </P
2638 ></DD
2639 ><DT
2640 >Examples:</DT
2641 ><DD
2642 ><P
2643 >    Explicitly define the default behavior if no ACL and
2644     <TT
2645 CLASS="LITERAL"
2646 >listen-address</TT
2647 > are set: <SPAN
2648 CLASS="QUOTE"
2649 >"localhost"</SPAN
2650 >
2651     is OK. The absence of a <TT
2652 CLASS="REPLACEABLE"
2653 ><I
2654 >dst_addr</I
2655 ></TT
2656 > implies that
2657     <SPAN
2658 CLASS="emphasis"
2659 ><I
2660 CLASS="EMPHASIS"
2661 >all</I
2662 ></SPAN
2663 > destination addresses are OK:
2664    </P
2665 ><P
2666 >    <TABLE
2667 BORDER="0"
2668 BGCOLOR="#E0E0E0"
2669 WIDTH="90%"
2670 ><TR
2671 ><TD
2672 ><PRE
2673 CLASS="SCREEN"
2674 >  permit-access  localhost</PRE
2675 ></TD
2676 ></TR
2677 ></TABLE
2678 >
2679    </P
2680 ><P
2681 >    Allow any host on the same class C subnet as www.privoxy.org access to
2682     nothing but www.example.com (or other domains hosted on the same system):
2683    </P
2684 ><P
2685 >    <TABLE
2686 BORDER="0"
2687 BGCOLOR="#E0E0E0"
2688 WIDTH="90%"
2689 ><TR
2690 ><TD
2691 ><PRE
2692 CLASS="SCREEN"
2693 >  permit-access  www.privoxy.org/24 www.example.com/32</PRE
2694 ></TD
2695 ></TR
2696 ></TABLE
2697 >
2698    </P
2699 ><P
2700 >    Allow access from any host on the 26-bit subnet 192.168.45.64 to anywhere,
2701     with the exception that 192.168.45.73 may not access the IP address behind
2702     www.dirty-stuff.example.com:
2703    </P
2704 ><P
2705 >    <TABLE
2706 BORDER="0"
2707 BGCOLOR="#E0E0E0"
2708 WIDTH="90%"
2709 ><TR
2710 ><TD
2711 ><PRE
2712 CLASS="SCREEN"
2713 >  permit-access  192.168.45.64/26
2714   deny-access    192.168.45.73    www.dirty-stuff.example.com</PRE
2715 ></TD
2716 ></TR
2717 ></TABLE
2718 >
2719    </P
2720 ><P
2721 >     Allow access from the IPv4 network 192.0.2.0/24 even if listening on
2722      an IPv6 wild card address (not supported on all platforms):
2723    </P
2724 ><P
2725 >    <TABLE
2726 BORDER="0"
2727 BGCOLOR="#E0E0E0"
2728 WIDTH="90%"
2729 ><TR
2730 ><TD
2731 ><PRE
2732 CLASS="PROGRAMLISTING"
2733 >  permit-access  192.0.2.0/24</PRE
2734 ></TD
2735 ></TR
2736 ></TABLE
2737 >
2738    </P
2739 ><P
2740 >     This is equivalent to the following line even if listening on an
2741      IPv4 address (not supported on all platforms):
2742    </P
2743 ><P
2744 >    <TABLE
2745 BORDER="0"
2746 BGCOLOR="#E0E0E0"
2747 WIDTH="90%"
2748 ><TR
2749 ><TD
2750 ><PRE
2751 CLASS="PROGRAMLISTING"
2752 >  permit-access  [::ffff:192.0.2.0]/120</PRE
2753 ></TD
2754 ></TR
2755 ></TABLE
2756 >
2757    </P
2758 ></DD
2759 ></DL
2760 ></DIV
2761 ></DIV
2762 ><DIV
2763 CLASS="SECT3"
2764 ><H4
2765 CLASS="SECT3"
2766 ><A
2767 NAME="BUFFER-LIMIT"
2768 >7.4.8. buffer-limit</A
2769 ></H4
2770 ><P
2771 ></P
2772 ><DIV
2773 CLASS="VARIABLELIST"
2774 ><DL
2775 ><DT
2776 >Specifies:</DT
2777 ><DD
2778 ><P
2779 >    Maximum size of the buffer for content filtering.
2780    </P
2781 ></DD
2782 ><DT
2783 >Type of value:</DT
2784 ><DD
2785 ><P
2786 >Size in Kbytes</P
2787 ></DD
2788 ><DT
2789 >Default value:</DT
2790 ><DD
2791 ><P
2792 >4096</P
2793 ></DD
2794 ><DT
2795 >Effect if unset:</DT
2796 ><DD
2797 ><P
2798 >    Use a 4MB (4096 KB) limit.
2799    </P
2800 ></DD
2801 ><DT
2802 >Notes:</DT
2803 ><DD
2804 ><P
2805 >    For content filtering, i.e. the <TT
2806 CLASS="LITERAL"
2807 >+filter</TT
2808 > and
2809     <TT
2810 CLASS="LITERAL"
2811 >+deanimate-gif</TT
2812 > actions, it is necessary that 
2813     <SPAN
2814 CLASS="APPLICATION"
2815 >Privoxy</SPAN
2816 > buffers the entire document body.
2817     This can be potentially dangerous, since a server could just keep sending
2818     data indefinitely and wait for your RAM to exhaust -- with nasty consequences.
2819     Hence this option.
2820    </P
2821 ><P
2822 >    When a document buffer size reaches the <TT
2823 CLASS="LITERAL"
2824 >buffer-limit</TT
2825 >, it is
2826     flushed to the client unfiltered and no further attempt to
2827     filter the rest of the document is made. Remember that there may be multiple threads
2828     running, which might require up to <TT
2829 CLASS="LITERAL"
2830 >buffer-limit</TT
2831 > Kbytes
2832     <SPAN
2833 CLASS="emphasis"
2834 ><I
2835 CLASS="EMPHASIS"
2836 >each</I
2837 ></SPAN
2838 >, unless you have enabled <SPAN
2839 CLASS="QUOTE"
2840 >"single-threaded"</SPAN
2841 >
2842     above.
2843    </P
2844 ></DD
2845 ></DL
2846 ></DIV
2847 ></DIV
2848 ></DIV
2849 ><DIV
2850 CLASS="SECT2"
2851 ><H2
2852 CLASS="SECT2"
2853 ><A
2854 NAME="FORWARDING"
2855 >7.5. Forwarding</A
2856 ></H2
2857 ><P
2858 > This feature allows routing of HTTP requests through a chain of
2859  multiple proxies.</P
2860 ><P
2861 > Forwarding can be used to chain Privoxy with a caching proxy to speed
2862  up browsing. Using a parent proxy may also be necessary if the machine
2863  that <SPAN
2864 CLASS="APPLICATION"
2865 >Privoxy</SPAN
2866 > runs on has no direct Internet access.</P
2867 ><P
2868 > Note that parent proxies can severely decrease your privacy level.
2869  For example a parent proxy could add your IP address to the request
2870  headers and if it's a caching proxy it may add the <SPAN
2871 CLASS="QUOTE"
2872 >"Etag"</SPAN
2873 >
2874  header to revalidation requests again, even though you configured Privoxy
2875  to remove it. It may also ignore Privoxy's header time randomization and use the
2876  original values which could be used by the server as cookie replacement
2877  to track your steps between visits.</P
2878 ><P
2879 > Also specified here are SOCKS proxies. <SPAN
2880 CLASS="APPLICATION"
2881 >Privoxy</SPAN
2882 >
2883  supports the SOCKS 4 and SOCKS 4A protocols.</P
2884 ><DIV
2885 CLASS="SECT3"
2886 ><H4
2887 CLASS="SECT3"
2888 ><A
2889 NAME="FORWARD"
2890 >7.5.1. forward</A
2891 ></H4
2892 ><P
2893 ></P
2894 ><DIV
2895 CLASS="VARIABLELIST"
2896 ><DL
2897 ><DT
2898 >Specifies:</DT
2899 ><DD
2900 ><P
2901 >    To which parent HTTP proxy specific requests should be routed.
2902    </P
2903 ></DD
2904 ><DT
2905 >Type of value:</DT
2906 ><DD
2907 ><P
2908 >    <TT
2909 CLASS="REPLACEABLE"
2910 ><I
2911 >target_pattern</I
2912 ></TT
2913 >
2914     <TT
2915 CLASS="REPLACEABLE"
2916 ><I
2917 >http_parent</I
2918 ></TT
2919 >[:<TT
2920 CLASS="REPLACEABLE"
2921 ><I
2922 >port</I
2923 ></TT
2924 >]
2925    </P
2926 ><P
2927 >    where <TT
2928 CLASS="REPLACEABLE"
2929 ><I
2930 >target_pattern</I
2931 ></TT
2932 > is a <A
2933 HREF="actions-file.html#AF-PATTERNS"
2934 >URL pattern</A
2935
2936     that specifies to which requests (i.e. URLs) this forward rule shall apply. Use <TT
2937 CLASS="LITERAL"
2938 >/</TT
2939 > to
2940     denote <SPAN
2941 CLASS="QUOTE"
2942 >"all URLs"</SPAN
2943 >.
2944     <TT
2945 CLASS="REPLACEABLE"
2946 ><I
2947 >http_parent</I
2948 ></TT
2949 >[:<TT
2950 CLASS="REPLACEABLE"
2951 ><I
2952 >port</I
2953 ></TT
2954 >]
2955     is the DNS name or IP address of the parent HTTP proxy through which the requests should be forwarded,
2956     optionally followed by its listening port (default: 8000).
2957     Use a single dot (<TT
2958 CLASS="LITERAL"
2959 >.</TT
2960 >) to denote <SPAN
2961 CLASS="QUOTE"
2962 >"no forwarding"</SPAN
2963 >.
2964    </P
2965 ></DD
2966 ><DT
2967 >Default value:</DT
2968 ><DD
2969 ><P
2970 ><SPAN
2971 CLASS="emphasis"
2972 ><I
2973 CLASS="EMPHASIS"
2974 >Unset</I
2975 ></SPAN
2976 ></P
2977 ></DD
2978 ><DT
2979 >Effect if unset:</DT
2980 ><DD
2981 ><P
2982 >    Don't use parent HTTP proxies.
2983    </P
2984 ></DD
2985 ><DT
2986 >Notes:</DT
2987 ><DD
2988 ><P
2989 >    If <TT
2990 CLASS="REPLACEABLE"
2991 ><I
2992 >http_parent</I
2993 ></TT
2994 > is <SPAN
2995 CLASS="QUOTE"
2996 >"."</SPAN
2997 >, then requests are not
2998     forwarded to another HTTP proxy but are made directly to the web servers.
2999    </P
3000 ><P
3001 >    <TT
3002 CLASS="REPLACEABLE"
3003 ><I
3004 >http_parent</I
3005 ></TT
3006 > can be a
3007      numerical IPv6 address (if
3008     <A
3009 HREF="http://tools.ietf.org/html/rfc3493"
3010 TARGET="_top"
3011 >RFC 3493</A
3012 > is
3013     implemented). To prevent clashes with the port delimiter, the whole IP
3014     address has to be put into brackets. On the other hand a <TT
3015 CLASS="REPLACEABLE"
3016 ><I
3017 >target_pattern</I
3018 ></TT
3019 > containing an IPv6 address
3020     has to be put into angle brackets (normal brackets are reserved for
3021     regular expressions already).
3022    </P
3023 ><P
3024 >    Multiple lines are OK, they are checked in sequence, and the last match wins.
3025    </P
3026 ></DD
3027 ><DT
3028 >Examples:</DT
3029 ><DD
3030 ><P
3031 >    Everything goes to an example parent proxy, except SSL on port 443 (which it doesn't handle):
3032    </P
3033 ><P
3034 >    <TABLE
3035 BORDER="0"
3036 BGCOLOR="#E0E0E0"
3037 WIDTH="90%"
3038 ><TR
3039 ><TD
3040 ><PRE
3041 CLASS="SCREEN"
3042 >  forward   /      parent-proxy.example.org:8080
3043   forward   :443   .</PRE
3044 ></TD
3045 ></TR
3046 ></TABLE
3047 >
3048    </P
3049 ><P
3050 >    Everything goes to our example ISP's caching proxy, except for requests
3051     to that ISP's sites:
3052    </P
3053 ><P
3054 >    <TABLE
3055 BORDER="0"
3056 BGCOLOR="#E0E0E0"
3057 WIDTH="90%"
3058 ><TR
3059 ><TD
3060 ><PRE
3061 CLASS="SCREEN"
3062 >  forward   /                  caching-proxy.isp.example.net:8000
3063   forward   .isp.example.net   .</PRE
3064 ></TD
3065 ></TR
3066 ></TABLE
3067 >
3068    </P
3069 ><P
3070 >    Parent proxy specified by an IPv6 address:
3071    </P
3072 ><P
3073 >    <TABLE
3074 BORDER="0"
3075 BGCOLOR="#E0E0E0"
3076 WIDTH="90%"
3077 ><TR
3078 ><TD
3079 ><PRE
3080 CLASS="PROGRAMLISTING"
3081 >  forward   /                   [2001:DB8::1]:8000</PRE
3082 ></TD
3083 ></TR
3084 ></TABLE
3085 >
3086    </P
3087 ><P
3088 >    Suppose your parent proxy doesn't support IPv6:
3089    </P
3090 ><P
3091 >    <TABLE
3092 BORDER="0"
3093 BGCOLOR="#E0E0E0"
3094 WIDTH="90%"
3095 ><TR
3096 ><TD
3097 ><PRE
3098 CLASS="PROGRAMLISTING"
3099 >  forward  /                        parent-proxy.example.org:8000
3100   forward  ipv6-server.example.org  .
3101   forward  &#60;[2-3][0-9a-f][0-9a-f][0-9a-f]:*&#62;   .</PRE
3102 ></TD
3103 ></TR
3104 ></TABLE
3105 >
3106    </P
3107 ></DD
3108 ></DL
3109 ></DIV
3110 ></DIV
3111 ><DIV
3112 CLASS="SECT3"
3113 ><H4
3114 CLASS="SECT3"
3115 ><A
3116 NAME="SOCKS"
3117 >7.5.2. forward-socks4, forward-socks4a and forward-socks5</A
3118 ></H4
3119 ><A
3120 NAME="FORWARD-SOCKS4"
3121 ></A
3122 ><A
3123 NAME="FORWARD-SOCKS4A"
3124 ></A
3125 ><P
3126 ></P
3127 ><DIV
3128 CLASS="VARIABLELIST"
3129 ><DL
3130 ><DT
3131 >Specifies:</DT
3132 ><DD
3133 ><P
3134 >    Through which SOCKS proxy (and optionally to which parent HTTP proxy) specific requests should be routed.
3135    </P
3136 ></DD
3137 ><DT
3138 >Type of value:</DT
3139 ><DD
3140 ><P
3141 >    <TT
3142 CLASS="REPLACEABLE"
3143 ><I
3144 >target_pattern</I
3145 ></TT
3146 >
3147     <TT
3148 CLASS="REPLACEABLE"
3149 ><I
3150 >socks_proxy</I
3151 ></TT
3152 >[:<TT
3153 CLASS="REPLACEABLE"
3154 ><I
3155 >port</I
3156 ></TT
3157 >]
3158     <TT
3159 CLASS="REPLACEABLE"
3160 ><I
3161 >http_parent</I
3162 ></TT
3163 >[:<TT
3164 CLASS="REPLACEABLE"
3165 ><I
3166 >port</I
3167 ></TT
3168 >]
3169    </P
3170 ><P
3171 >    where <TT
3172 CLASS="REPLACEABLE"
3173 ><I
3174 >target_pattern</I
3175 ></TT
3176 > is a
3177     <A
3178 HREF="actions-file.html#AF-PATTERNS"
3179 >URL pattern</A
3180 > that specifies to which
3181     requests (i.e. URLs) this forward rule shall apply. Use <TT
3182 CLASS="LITERAL"
3183 >/</TT
3184 > to
3185     denote <SPAN
3186 CLASS="QUOTE"
3187 >"all URLs"</SPAN
3188 >. <TT
3189 CLASS="REPLACEABLE"
3190 ><I
3191 >http_parent</I
3192 ></TT
3193 >
3194     and <TT
3195 CLASS="REPLACEABLE"
3196 ><I
3197 >socks_proxy</I
3198 ></TT
3199 >
3200     are IP addresses in dotted decimal notation or valid DNS names
3201     (<TT
3202 CLASS="REPLACEABLE"
3203 ><I
3204 >http_parent</I
3205 ></TT
3206 >
3207     may be <SPAN
3208 CLASS="QUOTE"
3209 >"."</SPAN
3210 > to denote <SPAN
3211 CLASS="QUOTE"
3212 >"no HTTP forwarding"</SPAN
3213 >), and the optional 
3214     <TT
3215 CLASS="REPLACEABLE"
3216 ><I
3217 >port</I
3218 ></TT
3219 > parameters are TCP ports,
3220     i.e. integer values from 1 to 65535
3221    </P
3222 ></DD
3223 ><DT
3224 >Default value:</DT
3225 ><DD
3226 ><P
3227 ><SPAN
3228 CLASS="emphasis"
3229 ><I
3230 CLASS="EMPHASIS"
3231 >Unset</I
3232 ></SPAN
3233 ></P
3234 ></DD
3235 ><DT
3236 >Effect if unset:</DT
3237 ><DD
3238 ><P
3239 >    Don't use SOCKS proxies.
3240    </P
3241 ></DD
3242 ><DT
3243 >Notes:</DT
3244 ><DD
3245 ><P
3246 >    Multiple lines are OK, they are checked in sequence, and the last match wins.
3247    </P
3248 ><P
3249 >    The difference between <TT
3250 CLASS="LITERAL"
3251 >forward-socks4</TT
3252 > and <TT
3253 CLASS="LITERAL"
3254 >forward-socks4a</TT
3255 >
3256     is that in the SOCKS 4A protocol, the DNS resolution of the target hostname happens on the SOCKS
3257     server, while in SOCKS 4 it happens locally.
3258    </P
3259 ><P
3260 >    With <TT
3261 CLASS="LITERAL"
3262 >forward-socks5</TT
3263 > the DNS resolution will happen on the remote server as well.
3264    </P
3265 ><P
3266 >    <TT
3267 CLASS="REPLACEABLE"
3268 ><I
3269 >socks_proxy</I
3270 ></TT
3271 > and
3272     <TT
3273 CLASS="REPLACEABLE"
3274 ><I
3275 >http_parent</I
3276 ></TT
3277 > can be a
3278      numerical IPv6 address (if
3279     <A
3280 HREF="http://tools.ietf.org/html/rfc3493"
3281 TARGET="_top"
3282 >RFC 3493</A
3283 > is
3284     implemented). To prevent clashes with the port delimiter, the whole IP
3285     address has to be put into brackets. On the other hand a <TT
3286 CLASS="REPLACEABLE"
3287 ><I
3288 >target_pattern</I
3289 ></TT
3290 > containing an IPv6 address
3291     has to be put into angle brackets (normal brackets are reserved for
3292     regular expressions already).
3293    </P
3294 ><P
3295 >    If <TT
3296 CLASS="REPLACEABLE"
3297 ><I
3298 >http_parent</I
3299 ></TT
3300 > is <SPAN
3301 CLASS="QUOTE"
3302 >"."</SPAN
3303 >, then requests are not
3304     forwarded to another HTTP proxy but are made (HTTP-wise) directly to the web servers, albeit through
3305     a SOCKS proxy.
3306    </P
3307 ></DD
3308 ><DT
3309 >Examples:</DT
3310 ><DD
3311 ><P
3312 >     From the company example.com, direct connections are made to all
3313      <SPAN
3314 CLASS="QUOTE"
3315 >"internal"</SPAN
3316 > domains, but everything outbound goes through
3317      their ISP's proxy by way of example.com's corporate SOCKS 4A gateway to
3318      the Internet.
3319    </P
3320 ><P
3321 >    <TABLE
3322 BORDER="0"
3323 BGCOLOR="#E0E0E0"
3324 WIDTH="90%"
3325 ><TR
3326 ><TD
3327 ><PRE
3328 CLASS="SCREEN"
3329 >  forward-socks4a   /              socks-gw.example.com:1080  www-cache.isp.example.net:8080
3330   forward           .example.com   .</PRE
3331 ></TD
3332 ></TR
3333 ></TABLE
3334 >
3335    </P
3336 ><P
3337 >    A rule that uses a SOCKS 4 gateway for all destinations but no HTTP parent looks like this:
3338    </P
3339 ><P
3340 >    <TABLE
3341 BORDER="0"
3342 BGCOLOR="#E0E0E0"
3343 WIDTH="90%"
3344 ><TR
3345 ><TD
3346 ><PRE
3347 CLASS="SCREEN"
3348 >  forward-socks4   /               socks-gw.example.com:1080  .</PRE
3349 ></TD
3350 ></TR
3351 ></TABLE
3352 >
3353    </P
3354 ><P
3355 >    To chain Privoxy and Tor, both running on the same system, you would use 
3356     something like:
3357    </P
3358 ><P
3359 >    <TABLE
3360 BORDER="0"
3361 BGCOLOR="#E0E0E0"
3362 WIDTH="90%"
3363 ><TR
3364 ><TD
3365 ><PRE
3366 CLASS="SCREEN"
3367 >  forward-socks5   /               127.0.0.1:9050 .</PRE
3368 ></TD
3369 ></TR
3370 ></TABLE
3371 >
3372    </P
3373 ><P
3374 >    The public <SPAN
3375 CLASS="APPLICATION"
3376 >Tor</SPAN
3377 > network can't be used to
3378     reach your local network, if you need to access local servers you
3379     therefore might want to make some exceptions:
3380    </P
3381 ><P
3382 >    <TABLE
3383 BORDER="0"
3384 BGCOLOR="#E0E0E0"
3385 WIDTH="90%"
3386 ><TR
3387 ><TD
3388 ><PRE
3389 CLASS="SCREEN"
3390 >  forward         192.168.*.*/     .
3391   forward            10.*.*.*/     .
3392   forward           127.*.*.*/     .</PRE
3393 ></TD
3394 ></TR
3395 ></TABLE
3396 >
3397    </P
3398 ><P
3399 >    Unencrypted connections to systems in these address ranges will
3400     be as (un)secure as the local network is, but the alternative is that you
3401     can't reach the local network through <SPAN
3402 CLASS="APPLICATION"
3403 >Privoxy</SPAN
3404 >
3405     at all. Of course this may actually be desired and there is no reason
3406     to make these exceptions if you aren't sure you need them.
3407    </P
3408 ><P
3409 >    If you also want to be able to reach servers in your local network by
3410     using their names, you will need additional exceptions that look like
3411     this:
3412    </P
3413 ><P
3414 >    <TABLE
3415 BORDER="0"
3416 BGCOLOR="#E0E0E0"
3417 WIDTH="90%"
3418 ><TR
3419 ><TD
3420 ><PRE
3421 CLASS="SCREEN"
3422 > forward           localhost/     .</PRE
3423 ></TD
3424 ></TR
3425 ></TABLE
3426 >
3427    </P
3428 ></DD
3429 ></DL
3430 ></DIV
3431 ></DIV
3432 ><DIV
3433 CLASS="SECT3"
3434 ><H4
3435 CLASS="SECT3"
3436 ><A
3437 NAME="ADVANCED-FORWARDING-EXAMPLES"
3438 >7.5.3. Advanced Forwarding Examples</A
3439 ></H4
3440 ><P
3441 > If you have links to multiple ISPs that provide various special content 
3442  only to their subscribers, you can configure multiple <SPAN
3443 CLASS="APPLICATION"
3444 >Privoxies</SPAN
3445 >
3446  which have connections to the respective ISPs to act as forwarders to each other, so that
3447  <SPAN
3448 CLASS="emphasis"
3449 ><I
3450 CLASS="EMPHASIS"
3451 >your</I
3452 ></SPAN
3453 > users can see the internal content of all ISPs.</P
3454 ><P
3455 > Assume that host-a has a PPP connection to isp-a.example.net. And host-b has a PPP connection to
3456  isp-b.example.org. Both run <SPAN
3457 CLASS="APPLICATION"
3458 >Privoxy</SPAN
3459 >. Their forwarding
3460  configuration can look like this:</P
3461 ><P
3462 > host-a:</P
3463 ><P
3464 > <TABLE
3465 BORDER="0"
3466 BGCOLOR="#E0E0E0"
3467 WIDTH="100%"
3468 ><TR
3469 ><TD
3470 ><PRE
3471 CLASS="SCREEN"
3472 >  forward    /           .
3473   forward    .isp-b.example.net  host-b:8118</PRE
3474 ></TD
3475 ></TR
3476 ></TABLE
3477 ></P
3478 ><P
3479 > host-b:</P
3480 ><P
3481 > <TABLE
3482 BORDER="0"
3483 BGCOLOR="#E0E0E0"
3484 WIDTH="100%"
3485 ><TR
3486 ><TD
3487 ><PRE
3488 CLASS="SCREEN"
3489 >  forward    /           .
3490   forward    .isp-a.example.org  host-a:8118</PRE
3491 ></TD
3492 ></TR
3493 ></TABLE
3494 ></P
3495 ><P
3496 > Now, your users can set their browser's proxy to use either
3497  host-a or host-b and be able to browse the internal content
3498  of both isp-a and isp-b.</P
3499 ><P
3500 > If you intend to chain <SPAN
3501 CLASS="APPLICATION"
3502 >Privoxy</SPAN
3503 > and 
3504  <SPAN
3505 CLASS="APPLICATION"
3506 >squid</SPAN
3507 > locally, then chaining as 
3508  <TT
3509 CLASS="LITERAL"
3510 >browser -&#62; squid -&#62; privoxy</TT
3511 > is the recommended way. </P
3512 ><P
3513 > Assuming that <SPAN
3514 CLASS="APPLICATION"
3515 >Privoxy</SPAN
3516 > and <SPAN
3517 CLASS="APPLICATION"
3518 >squid</SPAN
3519 >
3520  run on the same box, your <SPAN
3521 CLASS="APPLICATION"
3522 >squid</SPAN
3523 > configuration could then look like this:</P
3524 ><P
3525 > <TABLE
3526 BORDER="0"
3527 BGCOLOR="#E0E0E0"
3528 WIDTH="100%"
3529 ><TR
3530 ><TD
3531 ><PRE
3532 CLASS="SCREEN"
3533 >  # Define Privoxy as parent proxy (without ICP) 
3534   cache_peer 127.0.0.1 parent 8118 7 no-query 
3535
3536   # Define ACL for protocol FTP 
3537   acl ftp proto FTP 
3538
3539   # Do not forward FTP requests to Privoxy
3540   always_direct allow ftp 
3541
3542   # Forward all the rest to Privoxy
3543   never_direct allow all</PRE
3544 ></TD
3545 ></TR
3546 ></TABLE
3547 ></P
3548 ><P
3549 > You would then need to change your browser's proxy settings to <SPAN
3550 CLASS="APPLICATION"
3551 >squid</SPAN
3552 >'s address and port.
3553  Squid normally uses port 3128. If unsure consult <TT
3554 CLASS="LITERAL"
3555 >http_port</TT
3556 > in <TT
3557 CLASS="FILENAME"
3558 >squid.conf</TT
3559 >.</P
3560 ><P
3561 > You could just as well decide to only forward requests you suspect
3562  of leading to Windows executables through a virus-scanning parent proxy,
3563  say, on <TT
3564 CLASS="LITERAL"
3565 >antivir.example.com</TT
3566 >, port 8010:</P
3567 ><P
3568 > <TABLE
3569 BORDER="0"
3570 BGCOLOR="#E0E0E0"
3571 WIDTH="100%"
3572 ><TR
3573 ><TD
3574 ><PRE
3575 CLASS="SCREEN"
3576 >  forward   /                          .
3577   forward   /.*\.(exe|com|dll|zip)$    antivir.example.com:8010</PRE
3578 ></TD
3579 ></TR
3580 ></TABLE
3581 > </P
3582 ></DIV
3583 ><DIV
3584 CLASS="SECT3"
3585 ><H4
3586 CLASS="SECT3"
3587 ><A
3588 NAME="FORWARDED-CONNECT-RETRIES"
3589 >7.5.4. forwarded-connect-retries</A
3590 ></H4
3591 ><P
3592 ></P
3593 ><DIV
3594 CLASS="VARIABLELIST"
3595 ><DL
3596 ><DT
3597 >Specifies:</DT
3598 ><DD
3599 ><P
3600 >    How often Privoxy retries if a forwarded connection request fails. 
3601    </P
3602 ></DD
3603 ><DT
3604 >Type of value:</DT
3605 ><DD
3606 ><P
3607 >    <TT
3608 CLASS="REPLACEABLE"
3609 ><I
3610 >Number of retries.</I
3611 ></TT
3612 >
3613    </P
3614 ></DD
3615 ><DT
3616 >Default value:</DT
3617 ><DD
3618 ><P
3619 ><SPAN
3620 CLASS="emphasis"
3621 ><I
3622 CLASS="EMPHASIS"
3623 >0</I
3624 ></SPAN
3625 ></P
3626 ></DD
3627 ><DT
3628 >Effect if unset:</DT
3629 ><DD
3630 ><P
3631 >    Connections forwarded through other proxies are treated like direct connections and no retry attempts are made.
3632    </P
3633 ></DD
3634 ><DT
3635 >Notes:</DT
3636 ><DD
3637 ><P
3638 >    <TT
3639 CLASS="REPLACEABLE"
3640 ><I
3641 >forwarded-connect-retries</I
3642 ></TT
3643 > is mainly interesting
3644     for socks4a connections, where <SPAN
3645 CLASS="APPLICATION"
3646 >Privoxy</SPAN
3647 > can't detect why the connections failed.
3648     The connection might have failed because of a DNS timeout in which case a retry makes sense,
3649     but it might also have failed because the server doesn't exist or isn't reachable. In this
3650     case the retry will just delay the appearance of Privoxy's error message.
3651    </P
3652 ><P
3653 >    Note that in the context of this option, <SPAN
3654 CLASS="QUOTE"
3655 >"forwarded connections"</SPAN
3656 > includes all connections
3657     that Privoxy forwards through other proxies. This option is not limited to the HTTP CONNECT method.
3658    </P
3659 ><P
3660 >    Only use this option, if you are getting lots of forwarding-related error messages
3661     that go away when you try again manually. Start with a small value and check Privoxy's
3662     logfile from time to time, to see how many retries are usually needed.
3663    </P
3664 ></DD
3665 ><DT
3666 >Examples:</DT
3667 ><DD
3668 ><P
3669 >    forwarded-connect-retries 1
3670    </P
3671 ></DD
3672 ></DL
3673 ></DIV
3674 ></DIV
3675 ></DIV
3676 ><DIV
3677 CLASS="SECT2"
3678 ><H2
3679 CLASS="SECT2"
3680 ><A
3681 NAME="MISC"
3682 >7.6. Miscellaneous</A
3683 ></H2
3684 ><DIV
3685 CLASS="SECT3"
3686 ><H4
3687 CLASS="SECT3"
3688 ><A
3689 NAME="ACCEPT-INTERCEPTED-REQUESTS"
3690 >7.6.1. accept-intercepted-requests</A
3691 ></H4
3692 ><P
3693 ></P
3694 ><DIV
3695 CLASS="VARIABLELIST"
3696 ><DL
3697 ><DT
3698 >Specifies:</DT
3699 ><DD
3700 ><P
3701 >    Whether intercepted requests should be treated as valid.
3702    </P
3703 ></DD
3704 ><DT
3705 >Type of value:</DT
3706 ><DD
3707 ><P
3708 >    <TT
3709 CLASS="REPLACEABLE"
3710 ><I
3711 >0 or 1</I
3712 ></TT
3713 >
3714    </P
3715 ></DD
3716 ><DT
3717 >Default value:</DT
3718 ><DD
3719 ><P
3720 ><SPAN
3721 CLASS="emphasis"
3722 ><I
3723 CLASS="EMPHASIS"
3724 >0</I
3725 ></SPAN
3726 ></P
3727 ></DD
3728 ><DT
3729 >Effect if unset:</DT
3730 ><DD
3731 ><P
3732 >    Only proxy requests are accepted, intercepted requests are treated as invalid.
3733    </P
3734 ></DD
3735 ><DT
3736 >Notes:</DT
3737 ><DD
3738 ><P
3739 >    If you don't trust your clients and want to force them
3740     to use <SPAN
3741 CLASS="APPLICATION"
3742 >Privoxy</SPAN
3743 >, enable this
3744     option and configure your packet filter to redirect outgoing
3745     HTTP connections into <SPAN
3746 CLASS="APPLICATION"
3747 >Privoxy</SPAN
3748 >. 
3749    </P
3750 ><P
3751 >    Make sure that <SPAN
3752 CLASS="APPLICATION"
3753 >Privoxy's</SPAN
3754 > own requests
3755     aren't redirected as well. Additionally take care that
3756     <SPAN
3757 CLASS="APPLICATION"
3758 >Privoxy</SPAN
3759 > can't intentionally connect
3760     to itself, otherwise you could run into redirection loops if
3761     <SPAN
3762 CLASS="APPLICATION"
3763 >Privoxy's</SPAN
3764 > listening port is reachable
3765     by the outside or an attacker has access to the pages you visit.
3766    </P
3767 ></DD
3768 ><DT
3769 >Examples:</DT
3770 ><DD
3771 ><P
3772 >    accept-intercepted-requests 1
3773    </P
3774 ></DD
3775 ></DL
3776 ></DIV
3777 ></DIV
3778 ><DIV
3779 CLASS="SECT3"
3780 ><H4
3781 CLASS="SECT3"
3782 ><A
3783 NAME="ALLOW-CGI-REQUEST-CRUNCHING"
3784 >7.6.2. allow-cgi-request-crunching</A
3785 ></H4
3786 ><P
3787 ></P
3788 ><DIV
3789 CLASS="VARIABLELIST"
3790 ><DL
3791 ><DT
3792 >Specifies:</DT
3793 ><DD
3794 ><P
3795 >    Whether requests to <SPAN
3796 CLASS="APPLICATION"
3797 >Privoxy's</SPAN
3798 > CGI pages can be blocked or redirected.
3799    </P
3800 ></DD
3801 ><DT
3802 >Type of value:</DT
3803 ><DD
3804 ><P
3805 >    <TT
3806 CLASS="REPLACEABLE"
3807 ><I
3808 >0 or 1</I
3809 ></TT
3810 >
3811    </P
3812 ></DD
3813 ><DT
3814 >Default value:</DT
3815 ><DD
3816 ><P
3817 ><SPAN
3818 CLASS="emphasis"
3819 ><I
3820 CLASS="EMPHASIS"
3821 >0</I
3822 ></SPAN
3823 ></P
3824 ></DD
3825 ><DT
3826 >Effect if unset:</DT
3827 ><DD
3828 ><P
3829 >    <SPAN
3830 CLASS="APPLICATION"
3831 >Privoxy</SPAN
3832 > ignores block and redirect actions for its CGI pages.
3833    </P
3834 ></DD
3835 ><DT
3836 >Notes:</DT
3837 ><DD
3838 ><P
3839 >    By default <SPAN
3840 CLASS="APPLICATION"
3841 >Privoxy</SPAN
3842 > ignores block or redirect actions
3843     for its CGI pages. Intercepting these requests can be useful in multi-user
3844     setups to implement fine-grained access control, but it can also render the complete
3845     web interface useless and make debugging problems painful if done without care.
3846    </P
3847 ><P
3848 >    Don't enable this option unless you're sure that you really need it.
3849    </P
3850 ></DD
3851 ><DT
3852 >Examples:</DT
3853 ><DD
3854 ><P
3855 >    allow-cgi-request-crunching 1
3856    </P
3857 ></DD
3858 ></DL
3859 ></DIV
3860 ></DIV
3861 ><DIV
3862 CLASS="SECT3"
3863 ><H4
3864 CLASS="SECT3"
3865 ><A
3866 NAME="SPLIT-LARGE-FORMS"
3867 >7.6.3. split-large-forms</A
3868 ></H4
3869 ><P
3870 ></P
3871 ><DIV
3872 CLASS="VARIABLELIST"
3873 ><DL
3874 ><DT
3875 >Specifies:</DT
3876 ><DD
3877 ><P
3878 >    Whether the CGI interface should stay compatible with broken HTTP clients.
3879    </P
3880 ></DD
3881 ><DT
3882 >Type of value:</DT
3883 ><DD
3884 ><P
3885 >    <TT
3886 CLASS="REPLACEABLE"
3887 ><I
3888 >0 or 1</I
3889 ></TT
3890 >
3891    </P
3892 ></DD
3893 ><DT
3894 >Default value:</DT
3895 ><DD
3896 ><P
3897 ><SPAN
3898 CLASS="emphasis"
3899 ><I
3900 CLASS="EMPHASIS"
3901 >0</I
3902 ></SPAN
3903 ></P
3904 ></DD
3905 ><DT
3906 >Effect if unset:</DT
3907 ><DD
3908 ><P
3909 >    The CGI form generate long GET URLs.
3910    </P
3911 ></DD
3912 ><DT
3913 >Notes:</DT
3914 ><DD
3915 ><P
3916 >    <SPAN
3917 CLASS="APPLICATION"
3918 >Privoxy's</SPAN
3919 > CGI forms can lead to
3920     rather long URLs. This isn't a problem as far as the HTTP
3921     standard is concerned, but it can confuse clients with arbitrary
3922     URL length limitations.
3923    </P
3924 ><P
3925 >    Enabling split-large-forms causes <SPAN
3926 CLASS="APPLICATION"
3927 >Privoxy</SPAN
3928 >
3929     to divide big forms into smaller ones to keep the URL length down.
3930     It makes editing a lot less convenient and you can no longer
3931     submit all changes at once, but at least it works around this
3932     browser bug.
3933    </P
3934 ><P
3935 >    If you don't notice any editing problems, there is no reason
3936     to enable this option, but if one of the submit buttons appears
3937     to be broken, you should give it a try.
3938    </P
3939 ></DD
3940 ><DT
3941 >Examples:</DT
3942 ><DD
3943 ><P
3944 >    split-large-forms 1
3945    </P
3946 ></DD
3947 ></DL
3948 ></DIV
3949 ></DIV
3950 ><DIV
3951 CLASS="SECT3"
3952 ><H4
3953 CLASS="SECT3"
3954 ><A
3955 NAME="KEEP-ALIVE-TIMEOUT"
3956 >7.6.4. keep-alive-timeout</A
3957 ></H4
3958 ><P
3959 ></P
3960 ><DIV
3961 CLASS="VARIABLELIST"
3962 ><DL
3963 ><DT
3964 >Specifies:</DT
3965 ><DD
3966 ><P
3967 >    Number of seconds after which an open connection will no longer be reused.
3968    </P
3969 ></DD
3970 ><DT
3971 >Type of value:</DT
3972 ><DD
3973 ><P
3974 >    <TT
3975 CLASS="REPLACEABLE"
3976 ><I
3977 >Time in seconds.</I
3978 ></TT
3979 >
3980    </P
3981 ></DD
3982 ><DT
3983 >Default value:</DT
3984 ><DD
3985 ><P
3986 >None</P
3987 ></DD
3988 ><DT
3989 >Effect if unset:</DT
3990 ><DD
3991 ><P
3992 >    Connections are not kept alive.
3993    </P
3994 ></DD
3995 ><DT
3996 >Notes:</DT
3997 ><DD
3998 ><P
3999 >    This option allows clients to keep the connection to <SPAN
4000 CLASS="APPLICATION"
4001 >Privoxy</SPAN
4002 >
4003     alive. If the server supports it, <SPAN
4004 CLASS="APPLICATION"
4005 >Privoxy</SPAN
4006 > will keep
4007     the connection to the server alive as well. Under certain
4008     circumstances this may result in speed-ups.
4009    </P
4010 ><P
4011 >    By default, <SPAN
4012 CLASS="APPLICATION"
4013 >Privoxy</SPAN
4014 > will close the connection to the server if
4015     the client connection gets closed, or if the specified timeout
4016     has been reached without a new request coming in. This behaviour
4017     can be changed with the <A
4018 HREF="#CONNECTION-SHARING"
4019 TARGET="_top"
4020 >connection-sharing</A
4021 > option.
4022    </P
4023 ><P
4024 >    This option has no effect if <SPAN
4025 CLASS="APPLICATION"
4026 >Privoxy</SPAN
4027 >
4028     has been compiled without keep-alive support.
4029    </P
4030 ><P
4031 >    Note that a timeout of five seconds as used in the default
4032     configuration file significantly decreases the number of
4033     connections that will be reused. The value is used because
4034     some browsers limit the number of connections they open to
4035     a single host and apply the same limit to proxies. This can
4036     result in a single website <SPAN
4037 CLASS="QUOTE"
4038 >"grabbing"</SPAN
4039 > all the
4040     connections the browser allows, which means connections to
4041     other websites can't be opened until the connections currently
4042     in use time out.
4043    </P
4044 ><P
4045 >    Several users have reported this as a Privoxy bug, so the
4046     default value has been reduced. Consider increasing it to
4047     300 seconds or even more if you think your browser can handle
4048     it. If your browser appears to be hanging it can't.
4049    </P
4050 ></DD
4051 ><DT
4052 >Examples:</DT
4053 ><DD
4054 ><P
4055 >    keep-alive-timeout 300
4056    </P
4057 ></DD
4058 ></DL
4059 ></DIV
4060 ></DIV
4061 ><DIV
4062 CLASS="SECT3"
4063 ><H4
4064 CLASS="SECT3"
4065 ><A
4066 NAME="DEFAULT-SERVER-TIMEOUT"
4067 >7.6.5. default-server-timeout</A
4068 ></H4
4069 ><P
4070 ></P
4071 ><DIV
4072 CLASS="VARIABLELIST"
4073 ><DL
4074 ><DT
4075 >Specifies:</DT
4076 ><DD
4077 ><P
4078 >    Assumed server-side keep-alive timeout if not specified by the server.
4079    </P
4080 ></DD
4081 ><DT
4082 >Type of value:</DT
4083 ><DD
4084 ><P
4085 >    <TT
4086 CLASS="REPLACEABLE"
4087 ><I
4088 >Time in seconds.</I
4089 ></TT
4090 >
4091    </P
4092 ></DD
4093 ><DT
4094 >Default value:</DT
4095 ><DD
4096 ><P
4097 >None</P
4098 ></DD
4099 ><DT
4100 >Effect if unset:</DT
4101 ><DD
4102 ><P
4103 >    Connections for which the server didn't specify the keep-alive
4104     timeout are not reused.
4105    </P
4106 ></DD
4107 ><DT
4108 >Notes:</DT
4109 ><DD
4110 ><P
4111 >    Enabling this option significantly increases the number of connections
4112     that are reused, provided the <A
4113 HREF="#KEEP-ALIVE-TIMEOUT"
4114 TARGET="_top"
4115 >keep-alive-timeout</A
4116 > option
4117     is also enabled.
4118    </P
4119 ><P
4120 >    While it also increases the number of connections problems
4121     when <SPAN
4122 CLASS="APPLICATION"
4123 >Privoxy</SPAN
4124 > tries to reuse a connection that already has
4125     been closed on the server side, or is closed while <SPAN
4126 CLASS="APPLICATION"
4127 >Privoxy</SPAN
4128 >
4129     is trying to reuse it, this should only be a problem if it
4130     happens for the first request sent by the client. If it happens
4131     for requests on reused client connections, <SPAN
4132 CLASS="APPLICATION"
4133 >Privoxy</SPAN
4134 > will simply
4135     close the connection and the client is supposed to retry the
4136     request without bothering the user.
4137    </P
4138 ><P
4139 >    Enabling this option is therefore only recommended if the
4140     <A
4141 HREF="#CONNECTION-SHARING"
4142 TARGET="_top"
4143 >connection-sharing</A
4144 > option
4145     is disabled.
4146    </P
4147 ><P
4148 >    It is an error to specify a value larger than the <A
4149 HREF="#KEEP-ALIVE-TIMEOUT"
4150 TARGET="_top"
4151 >keep-alive-timeout</A
4152 > value.
4153    </P
4154 ><P
4155 >    This option has no effect if <SPAN
4156 CLASS="APPLICATION"
4157 >Privoxy</SPAN
4158 >
4159     has been compiled without keep-alive support.
4160    </P
4161 ></DD
4162 ><DT
4163 >Examples:</DT
4164 ><DD
4165 ><P
4166 >    default-server-timeout 60
4167    </P
4168 ></DD
4169 ></DL
4170 ></DIV
4171 ></DIV
4172 ><DIV
4173 CLASS="SECT3"
4174 ><H4
4175 CLASS="SECT3"
4176 ><A
4177 NAME="CONNECTION-SHARING"
4178 >7.6.6. connection-sharing</A
4179 ></H4
4180 ><P
4181 ></P
4182 ><DIV
4183 CLASS="VARIABLELIST"
4184 ><DL
4185 ><DT
4186 >Specifies:</DT
4187 ><DD
4188 ><P
4189 >    Whether or not outgoing connections that have been kept alive
4190     should be shared between different incoming connections.
4191    </P
4192 ></DD
4193 ><DT
4194 >Type of value:</DT
4195 ><DD
4196 ><P
4197 >    <TT
4198 CLASS="REPLACEABLE"
4199 ><I
4200 >0 or 1</I
4201 ></TT
4202 >
4203    </P
4204 ></DD
4205 ><DT
4206 >Default value:</DT
4207 ><DD
4208 ><P
4209 >None</P
4210 ></DD
4211 ><DT
4212 >Effect if unset:</DT
4213 ><DD
4214 ><P
4215 >    Connections are not shared.
4216    </P
4217 ></DD
4218 ><DT
4219 >Notes:</DT
4220 ><DD
4221 ><P
4222 >    This option has no effect if <SPAN
4223 CLASS="APPLICATION"
4224 >Privoxy</SPAN
4225 >
4226     has been compiled without keep-alive support, or if it's disabled.
4227    </P
4228 ></DD
4229 ><DT
4230 >Notes:</DT
4231 ><DD
4232 ><P
4233 >    Note that reusing connections doesn't necessary cause speedups.
4234     There are also a few privacy implications you should be aware of.
4235    </P
4236 ><P
4237 >    If this option is effective, outgoing connections are shared between
4238     clients (if there are more than one) and closing the browser that initiated
4239     the outgoing connection does no longer affect the connection between <SPAN
4240 CLASS="APPLICATION"
4241 >Privoxy</SPAN
4242 >
4243     and the server unless the client's request hasn't been completed yet.
4244    </P
4245 ><P
4246 >    If the outgoing connection  is idle, it will not be closed until either
4247     <SPAN
4248 CLASS="APPLICATION"
4249 >Privoxy's</SPAN
4250 > or the server's timeout is reached.
4251     While it's open, the server knows that the system running <SPAN
4252 CLASS="APPLICATION"
4253 >Privoxy</SPAN
4254 > is still
4255     there.
4256    </P
4257 ><P
4258 >    If there are more than one client (maybe even belonging to multiple users),
4259     they will be able to reuse each others connections. This is potentially
4260     dangerous in case of authentication schemes like NTLM where only the
4261     connection is authenticated, instead of requiring authentication for
4262     each request.
4263    </P
4264 ><P
4265 >    If there is only a single client, and if said client can keep connections
4266     alive on its own, enabling this option has next to no effect. If the client
4267     doesn't support connection keep-alive, enabling this option may make sense
4268     as it allows <SPAN
4269 CLASS="APPLICATION"
4270 >Privoxy</SPAN
4271 > to keep outgoing connections alive even if the client
4272     itself doesn't support it.
4273    </P
4274 ><P
4275 >    You should also be aware that enabling this option increases the likelihood
4276     of getting the "No server or forwarder data" error message, especially if you
4277     are using a slow connection to the Internet.
4278    </P
4279 ><P
4280 >    This option should only be used by experienced users who
4281     understand the risks and can weight them against the benefits.
4282    </P
4283 ></DD
4284 ><DT
4285 >Examples:</DT
4286 ><DD
4287 ><P
4288 >    connection-sharing 1
4289    </P
4290 ></DD
4291 ></DL
4292 ></DIV
4293 ></DIV
4294 ><DIV
4295 CLASS="SECT3"
4296 ><H4
4297 CLASS="SECT3"
4298 ><A
4299 NAME="SOCKET-TIMEOUT"
4300 >7.6.7. socket-timeout</A
4301 ></H4
4302 ><P
4303 ></P
4304 ><DIV
4305 CLASS="VARIABLELIST"
4306 ><DL
4307 ><DT
4308 >Specifies:</DT
4309 ><DD
4310 ><P
4311 >    Number of seconds after which a socket times out if
4312     no data is received.
4313    </P
4314 ></DD
4315 ><DT
4316 >Type of value:</DT
4317 ><DD
4318 ><P
4319 >    <TT
4320 CLASS="REPLACEABLE"
4321 ><I
4322 >Time in seconds.</I
4323 ></TT
4324 >
4325    </P
4326 ></DD
4327 ><DT
4328 >Default value:</DT
4329 ><DD
4330 ><P
4331 >None</P
4332 ></DD
4333 ><DT
4334 >Effect if unset:</DT
4335 ><DD
4336 ><P
4337 >    A default value of 300 seconds is used.
4338    </P
4339 ></DD
4340 ><DT
4341 >Notes:</DT
4342 ><DD
4343 ><P
4344 >    The default is quite high and you probably want to reduce it.
4345     If you aren't using an occasionally slow proxy like Tor, reducing
4346     it to a few seconds should be fine.
4347    </P
4348 ></DD
4349 ><DT
4350 >Examples:</DT
4351 ><DD
4352 ><P
4353 >    socket-timeout 300
4354    </P
4355 ></DD
4356 ></DL
4357 ></DIV
4358 ></DIV
4359 ><DIV
4360 CLASS="SECT3"
4361 ><H4
4362 CLASS="SECT3"
4363 ><A
4364 NAME="MAX-CLIENT-CONNECTIONS"
4365 >7.6.8. max-client-connections</A
4366 ></H4
4367 ><P
4368 ></P
4369 ><DIV
4370 CLASS="VARIABLELIST"
4371 ><DL
4372 ><DT
4373 >Specifies:</DT
4374 ><DD
4375 ><P
4376 >    Maximum number of client connections that will be served.
4377    </P
4378 ></DD
4379 ><DT
4380 >Type of value:</DT
4381 ><DD
4382 ><P
4383 >    <TT
4384 CLASS="REPLACEABLE"
4385 ><I
4386 >Positive number.</I
4387 ></TT
4388 >
4389    </P
4390 ></DD
4391 ><DT
4392 >Default value:</DT
4393 ><DD
4394 ><P
4395 >None</P
4396 ></DD
4397 ><DT
4398 >Effect if unset:</DT
4399 ><DD
4400 ><P
4401 >    Connections are served until a resource limit is reached.
4402    </P
4403 ></DD
4404 ><DT
4405 >Notes:</DT
4406 ><DD
4407 ><P
4408 >    <SPAN
4409 CLASS="APPLICATION"
4410 >Privoxy</SPAN
4411 > creates one thread (or process) for every incoming client
4412     connection that isn't rejected based on the access control settings.
4413    </P
4414 ><P
4415 >    If the system is powerful enough, <SPAN
4416 CLASS="APPLICATION"
4417 >Privoxy</SPAN
4418 > can theoretically deal with
4419     several hundred (or thousand) connections at the same time, but some
4420     operating systems enforce resource limits by shutting down offending
4421     processes and their default limits may be below the ones <SPAN
4422 CLASS="APPLICATION"
4423 >Privoxy</SPAN
4424 > would
4425     require under heavy load.
4426    </P
4427 ><P
4428 >    Configuring <SPAN
4429 CLASS="APPLICATION"
4430 >Privoxy</SPAN
4431 > to enforce a connection limit below the thread
4432     or process limit used by the operating system makes sure this doesn't
4433     happen. Simply increasing the operating system's limit would work too,
4434     but if <SPAN
4435 CLASS="APPLICATION"
4436 >Privoxy</SPAN
4437 > isn't the only application running on the system,
4438     you may actually want to limit the resources used by <SPAN
4439 CLASS="APPLICATION"
4440 >Privoxy</SPAN
4441 >.
4442    </P
4443 ><P
4444 >    If <SPAN
4445 CLASS="APPLICATION"
4446 >Privoxy</SPAN
4447 > is only used by a single trusted user, limiting the
4448     number of client connections is probably unnecessary. If there
4449     are multiple possibly untrusted users you probably still want to
4450     additionally use a packet filter to limit the maximal number of
4451     incoming connections per client. Otherwise a malicious user could
4452     intentionally create a high number of connections to prevent other
4453     users from using <SPAN
4454 CLASS="APPLICATION"
4455 >Privoxy</SPAN
4456 >.
4457    </P
4458 ><P
4459 >    Obviously using this option only makes sense if you choose a limit
4460     below the one enforced by the operating system.
4461    </P
4462 ></DD
4463 ><DT
4464 >Examples:</DT
4465 ><DD
4466 ><P
4467 >    max-client-connections 256
4468    </P
4469 ></DD
4470 ></DL
4471 ></DIV
4472 ></DIV
4473 ><DIV
4474 CLASS="SECT3"
4475 ><H4
4476 CLASS="SECT3"
4477 ><A
4478 NAME="HANDLE-AS-EMPTY-DOC-RETURNS-OK"
4479 >7.6.9. handle-as-empty-doc-returns-ok</A
4480 ></H4
4481 ><P
4482 ></P
4483 ><DIV
4484 CLASS="VARIABLELIST"
4485 ><DL
4486 ><DT
4487 >Specifies:</DT
4488 ><DD
4489 ><P
4490 >    The status code Privoxy returns for pages blocked with
4491     
4492     <TT
4493 CLASS="LITERAL"
4494 ><A
4495 HREF="actions-file.html#HANDLE-AS-EMPTY-DOCUMENT"
4496 TARGET="_top"
4497 >+handle-as-empty-document</A
4498 ></TT
4499 >.
4500    </P
4501 ></DD
4502 ><DT
4503 >Type of value:</DT
4504 ><DD
4505 ><P
4506 >    <TT
4507 CLASS="REPLACEABLE"
4508 ><I
4509 >0 or 1</I
4510 ></TT
4511 >
4512    </P
4513 ></DD
4514 ><DT
4515 >Default value:</DT
4516 ><DD
4517 ><P
4518 >0</P
4519 ></DD
4520 ><DT
4521 >Effect if unset:</DT
4522 ><DD
4523 ><P
4524 >    Privoxy returns a status 403(forbidden) for all blocked pages.
4525    </P
4526 ></DD
4527 ><DT
4528 >Effect if set:</DT
4529 ><DD
4530 ><P
4531 >    Privoxy returns a status 200(OK) for pages blocked with +handle-as-empty-document
4532     and a status 403(Forbidden) for all other blocked pages.
4533    </P
4534 ></DD
4535 ><DT
4536 >Notes:</DT
4537 ><DD
4538 ><P
4539 >    This is a work-around for Firefox bug 492459:
4540     <SPAN
4541 CLASS="QUOTE"
4542 >"    Websites are no longer rendered if SSL requests for JavaScripts are blocked by a proxy.
4543     "</SPAN
4544 >
4545     (<A
4546 HREF="https://bugzilla.mozilla.org/show_bug.cgi?id=492459"
4547 TARGET="_top"
4548 >https://bugzilla.mozilla.org/show_bug.cgi?id=492459</A
4549 >)
4550     As the bug has been fixed for quite some time this option should no longer
4551     be needed and will be removed in a future release. Please speak up if you
4552     have a reason why the option should be kept around.
4553    </P
4554 ></DD
4555 ></DL
4556 ></DIV
4557 ></DIV
4558 ><DIV
4559 CLASS="SECT3"
4560 ><H4
4561 CLASS="SECT3"
4562 ><A
4563 NAME="ENABLE-COMPRESSION"
4564 >7.6.10. enable-compression</A
4565 ></H4
4566 ><P
4567 ></P
4568 ><DIV
4569 CLASS="VARIABLELIST"
4570 ><DL
4571 ><DT
4572 >Specifies:</DT
4573 ><DD
4574 ><P
4575 >    Whether or not buffered content is compressed before delivery.
4576    </P
4577 ></DD
4578 ><DT
4579 >Type of value:</DT
4580 ><DD
4581 ><P
4582 >    <TT
4583 CLASS="REPLACEABLE"
4584 ><I
4585 >0 or 1</I
4586 ></TT
4587 >
4588    </P
4589 ></DD
4590 ><DT
4591 >Default value:</DT
4592 ><DD
4593 ><P
4594 >0</P
4595 ></DD
4596 ><DT
4597 >Effect if unset:</DT
4598 ><DD
4599 ><P
4600 >    Privoxy does not compress buffered content.
4601    </P
4602 ></DD
4603 ><DT
4604 >Effect if set:</DT
4605 ><DD
4606 ><P
4607 >    Privoxy compresses buffered content before delivering it to the client,
4608     provided the client supports it.
4609    </P
4610 ></DD
4611 ><DT
4612 >Notes:</DT
4613 ><DD
4614 ><P
4615 >    This directive is only supported if Privoxy has been compiled with
4616     FEATURE_COMPRESSION, which should not to be confused with FEATURE_ZLIB.
4617    </P
4618 ><P
4619 >    Compressing buffered content is mainly useful if Privoxy and the
4620     client are running on different systems. If they are running on the
4621     same system, enabling compression is likely to slow things down.
4622     If you didn't measure otherwise, you should assume that it does
4623     and keep this option disabled.
4624    </P
4625 ><P
4626 >    Privoxy will not compress buffered content below a certain length.
4627    </P
4628 ></DD
4629 ></DL
4630 ></DIV
4631 ></DIV
4632 ><DIV
4633 CLASS="SECT3"
4634 ><H4
4635 CLASS="SECT3"
4636 ><A
4637 NAME="COMPRESSION-LEVEL"
4638 >7.6.11. compression-level</A
4639 ></H4
4640 ><P
4641 ></P
4642 ><DIV
4643 CLASS="VARIABLELIST"
4644 ><DL
4645 ><DT
4646 >Specifies:</DT
4647 ><DD
4648 ><P
4649 >    The compression level that is passed to the zlib library when compressing buffered content.
4650    </P
4651 ></DD
4652 ><DT
4653 >Type of value:</DT
4654 ><DD
4655 ><P
4656 >    <TT
4657 CLASS="REPLACEABLE"
4658 ><I
4659 >Positive number ranging from 0 to 9.</I
4660 ></TT
4661 >
4662    </P
4663 ></DD
4664 ><DT
4665 >Default value:</DT
4666 ><DD
4667 ><P
4668 >1</P
4669 ></DD
4670 ><DT
4671 >Notes:</DT
4672 ><DD
4673 ><P
4674 >     Compressing the data more takes usually longer than compressing
4675      it less or not compressing it at all. Which level is best depends
4676      on the connection between Privoxy and the client. If you can't
4677      be bothered to benchmark it for yourself, you should stick with
4678      the default and keep compression disabled.
4679    </P
4680 ><P
4681 >     If compression is disabled, the compression level is irrelevant.
4682    </P
4683 ></DD
4684 ><DT
4685 >Examples:</DT
4686 ><DD
4687 ><P
4688 >    <TABLE
4689 BORDER="0"
4690 BGCOLOR="#E0E0E0"
4691 WIDTH="90%"
4692 ><TR
4693 ><TD
4694 ><PRE
4695 CLASS="SCREEN"
4696 >    # Best speed (compared to the other levels)
4697     compression-level 1
4698     # Best compression
4699     compression-level 9
4700     # No compression. Only useful for testing as the added header
4701     # slightly increases the amount of data that has to be sent.
4702     # If your benchmark shows that using this compression level
4703     # is superior to using no compression at all, the benchmark
4704     # is likely to be flawed.
4705     compression-level 0
4706     </PRE
4707 ></TD
4708 ></TR
4709 ></TABLE
4710 >
4711    </P
4712 ></DD
4713 ></DL
4714 ></DIV
4715 ></DIV
4716 ></DIV
4717 ><DIV
4718 CLASS="SECT2"
4719 ><H2
4720 CLASS="SECT2"
4721 ><A
4722 NAME="WINDOWS-GUI"
4723 >7.7. Windows GUI Options</A
4724 ></H2
4725 ><P
4726 > <SPAN
4727 CLASS="APPLICATION"
4728 >Privoxy</SPAN
4729 > has a number of options specific to the
4730  Windows GUI interface:</P
4731 ><A
4732 NAME="ACTIVITY-ANIMATION"
4733 ></A
4734 ><P
4735 > If <SPAN
4736 CLASS="QUOTE"
4737 >"activity-animation"</SPAN
4738 > is set to 1, the
4739  <SPAN
4740 CLASS="APPLICATION"
4741 >Privoxy</SPAN
4742 > icon will animate when
4743  <SPAN
4744 CLASS="QUOTE"
4745 >"Privoxy"</SPAN
4746 > is active. To turn off, set to 0.</P
4747 ><P
4748 > <TT
4749 CLASS="LITERAL"
4750 >  <P
4751 CLASS="LITERALLAYOUT"
4752 >&nbsp;&nbsp;<SPAN
4753 CLASS="emphasis"
4754 ><I
4755 CLASS="EMPHASIS"
4756 >activity-animation   1</I
4757 ></SPAN
4758 ><br>
4759 &nbsp;&nbsp;&nbsp;</P
4760
4761  </TT
4762 ></P
4763 ><A
4764 NAME="LOG-MESSAGES"
4765 ></A
4766 ><P
4767 > If <SPAN
4768 CLASS="QUOTE"
4769 >"log-messages"</SPAN
4770 > is set to 1,
4771  <SPAN
4772 CLASS="APPLICATION"
4773 >Privoxy</SPAN
4774 > will log messages to the console
4775  window:</P
4776 ><P
4777 > <TT
4778 CLASS="LITERAL"
4779 >  <P
4780 CLASS="LITERALLAYOUT"
4781 >&nbsp;&nbsp;<SPAN
4782 CLASS="emphasis"
4783 ><I
4784 CLASS="EMPHASIS"
4785 >log-messages       1</I
4786 ></SPAN
4787 ><br>
4788 &nbsp;&nbsp;&nbsp;</P
4789
4790  </TT
4791 ></P
4792 ><A
4793 NAME="LOG-BUFFER-SIZE"
4794 ></A
4795 ><P
4796
4797  If <SPAN
4798 CLASS="QUOTE"
4799 >"log-buffer-size"</SPAN
4800 > is set to 1, the size of the log buffer,
4801  i.e. the amount of memory used for the log messages displayed in the
4802  console window, will be limited to <SPAN
4803 CLASS="QUOTE"
4804 >"log-max-lines"</SPAN
4805 > (see below).</P
4806 ><P
4807 > Warning: Setting this to 0 will result in the buffer to grow infinitely and
4808  eat up all your memory!</P
4809 ><P
4810 > <TT
4811 CLASS="LITERAL"
4812 >  <P
4813 CLASS="LITERALLAYOUT"
4814 >&nbsp;&nbsp;<SPAN
4815 CLASS="emphasis"
4816 ><I
4817 CLASS="EMPHASIS"
4818 >log-buffer-size      1</I
4819 ></SPAN
4820 ><br>
4821 &nbsp;&nbsp;&nbsp;</P
4822
4823  </TT
4824 ></P
4825 ><A
4826 NAME="LOG-MAX-LINES"
4827 ></A
4828 ><P
4829 > <SPAN
4830 CLASS="APPLICATION"
4831 >log-max-lines</SPAN
4832 > is the maximum number of lines held
4833  in the log buffer. See above.</P
4834 ><P
4835 > <TT
4836 CLASS="LITERAL"
4837 >  <P
4838 CLASS="LITERALLAYOUT"
4839 >&nbsp;&nbsp;<SPAN
4840 CLASS="emphasis"
4841 ><I
4842 CLASS="EMPHASIS"
4843 >log-max-lines      200</I
4844 ></SPAN
4845 ><br>
4846 &nbsp;&nbsp;&nbsp;</P
4847
4848  </TT
4849 ></P
4850 ><A
4851 NAME="LOG-HIGHLIGHT-MESSAGES"
4852 ></A
4853 ><P
4854 > If <SPAN
4855 CLASS="QUOTE"
4856 >"log-highlight-messages"</SPAN
4857 > is set to 1,
4858  <SPAN
4859 CLASS="APPLICATION"
4860 >Privoxy</SPAN
4861 > will highlight portions of the log
4862  messages with a bold-faced font:</P
4863 ><P
4864 > <TT
4865 CLASS="LITERAL"
4866 >  <P
4867 CLASS="LITERALLAYOUT"
4868 >&nbsp;&nbsp;<SPAN
4869 CLASS="emphasis"
4870 ><I
4871 CLASS="EMPHASIS"
4872 >log-highlight-messages   1</I
4873 ></SPAN
4874 ><br>
4875 &nbsp;&nbsp;&nbsp;</P
4876
4877  </TT
4878 ></P
4879 ><A
4880 NAME="LOG-FONT-NAME"
4881 ></A
4882 ><P
4883 > The font used in the console window:</P
4884 ><P
4885 > <TT
4886 CLASS="LITERAL"
4887 >  <P
4888 CLASS="LITERALLAYOUT"
4889 >&nbsp;&nbsp;<SPAN
4890 CLASS="emphasis"
4891 ><I
4892 CLASS="EMPHASIS"
4893 >log-font-name        Comic Sans MS</I
4894 ></SPAN
4895 ><br>
4896 &nbsp;&nbsp;&nbsp;</P
4897
4898  </TT
4899 ></P
4900 ><A
4901 NAME="LOG-FONT-SIZE"
4902 ></A
4903 ><P
4904 > Font size used in the console window:</P
4905 ><P
4906 > <TT
4907 CLASS="LITERAL"
4908 >  <P
4909 CLASS="LITERALLAYOUT"
4910 >&nbsp;&nbsp;<SPAN
4911 CLASS="emphasis"
4912 ><I
4913 CLASS="EMPHASIS"
4914 >log-font-size        8</I
4915 ></SPAN
4916 ><br>
4917 &nbsp;&nbsp;&nbsp;</P
4918
4919  </TT
4920 ></P
4921 ><A
4922 NAME="SHOW-ON-TASK-BAR"
4923 ></A
4924 ><P
4925 >  
4926  <SPAN
4927 CLASS="QUOTE"
4928 >"show-on-task-bar"</SPAN
4929 > controls whether or not
4930  <SPAN
4931 CLASS="APPLICATION"
4932 >Privoxy</SPAN
4933 > will appear as a button on the Task bar
4934  when minimized:</P
4935 ><P
4936 > <TT
4937 CLASS="LITERAL"
4938 >  <P
4939 CLASS="LITERALLAYOUT"
4940 >&nbsp;&nbsp;<SPAN
4941 CLASS="emphasis"
4942 ><I
4943 CLASS="EMPHASIS"
4944 >show-on-task-bar     0</I
4945 ></SPAN
4946 ><br>
4947 &nbsp;&nbsp;&nbsp;</P
4948
4949  </TT
4950 ></P
4951 ><A
4952 NAME="CLOSE-BUTTON-MINIMIZES"
4953 ></A
4954 ><P
4955 > If <SPAN
4956 CLASS="QUOTE"
4957 >"close-button-minimizes"</SPAN
4958 > is set to 1, the Windows close
4959  button will minimize <SPAN
4960 CLASS="APPLICATION"
4961 >Privoxy</SPAN
4962 > instead of closing
4963  the program (close with the exit option on the File menu).</P
4964 ><P
4965 > <TT
4966 CLASS="LITERAL"
4967 >  <P
4968 CLASS="LITERALLAYOUT"
4969 >&nbsp;&nbsp;<SPAN
4970 CLASS="emphasis"
4971 ><I
4972 CLASS="EMPHASIS"
4973 >close-button-minimizes  1</I
4974 ></SPAN
4975 ><br>
4976 &nbsp;&nbsp;&nbsp;</P
4977
4978  </TT
4979 ></P
4980 ><A
4981 NAME="HIDE-CONSOLE"
4982 ></A
4983 ><P
4984 > The <SPAN
4985 CLASS="QUOTE"
4986 >"hide-console"</SPAN
4987 > option is specific to the MS-Win console
4988  version of <SPAN
4989 CLASS="APPLICATION"
4990 >Privoxy</SPAN
4991 >. If this option is used,
4992  <SPAN
4993 CLASS="APPLICATION"
4994 >Privoxy</SPAN
4995 > will disconnect from and hide the
4996  command console.</P
4997 ><P
4998 > <TT
4999 CLASS="LITERAL"
5000 >  <P
5001 CLASS="LITERALLAYOUT"
5002 >&nbsp;&nbsp;#<SPAN
5003 CLASS="emphasis"
5004 ><I
5005 CLASS="EMPHASIS"
5006 >hide-console</I
5007 ></SPAN
5008 ><br>
5009 &nbsp;&nbsp;&nbsp;</P
5010
5011  </TT
5012 ></P
5013 ></DIV
5014 ></DIV
5015 ><DIV
5016 CLASS="NAVFOOTER"
5017 ><HR
5018 ALIGN="LEFT"
5019 WIDTH="100%"><TABLE
5020 SUMMARY="Footer navigation table"
5021 WIDTH="100%"
5022 BORDER="0"
5023 CELLPADDING="0"
5024 CELLSPACING="0"
5025 ><TR
5026 ><TD
5027 WIDTH="33%"
5028 ALIGN="left"
5029 VALIGN="top"
5030 ><A
5031 HREF="configuration.html"
5032 ACCESSKEY="P"
5033 >Prev</A
5034 ></TD
5035 ><TD
5036 WIDTH="34%"
5037 ALIGN="center"
5038 VALIGN="top"
5039 ><A
5040 HREF="index.html"
5041 ACCESSKEY="H"
5042 >Home</A
5043 ></TD
5044 ><TD
5045 WIDTH="33%"
5046 ALIGN="right"
5047 VALIGN="top"
5048 ><A
5049 HREF="actions-file.html"
5050 ACCESSKEY="N"
5051 >Next</A
5052 ></TD
5053 ></TR
5054 ><TR
5055 ><TD
5056 WIDTH="33%"
5057 ALIGN="left"
5058 VALIGN="top"
5059 >Privoxy Configuration</TD
5060 ><TD
5061 WIDTH="34%"
5062 ALIGN="center"
5063 VALIGN="top"
5064 >&nbsp;</TD
5065 ><TD
5066 WIDTH="33%"
5067 ALIGN="right"
5068 VALIGN="top"
5069 >Actions Files</TD
5070 ></TR
5071 ></TABLE
5072 ></DIV
5073 ></BODY
5074 ></HTML
5075 >