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