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