* USA
*
*********************************************************************/
-
-------------------------------------------------------------------------------
tar xzvf privoxy-3.0.27-beta-src.tar.gz
cd privoxy-3.0.27-beta
-For retrieving the current CVS sources, you'll need a CVS client installed.
-Note that sources from CVS are typically development quality, and may not be
-stable, or well tested. To download CVS source, check the Sourceforge
-documentation, which might give commands like:
+To build the development version, you can get the source code by doing:
- cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
- cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co current
- cd current
+ cd <root-dir>
+ git clone https://www.privoxy.org/git/privoxy.git
-This will create a directory named current/, which will contain the source
-tree.
+This will create a directory named <root-dir>/privoxy/, which will contain the
+source tree.
-You can also check out any Privoxy "branch", just exchange the current name
-with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs tree).
+Note that source code in GIT is development quality, and may not be stable or
+well tested.
-It is also strongly recommended to not run Privoxy as root. You should
-configure/install/run Privoxy as an unprivileged user, preferably by creating a
-"privoxy" user and group just for this purpose. See your local documentation
-for the correct command line to do add new users and groups (something like
-adduser, but the command syntax may vary from platform to platform).
+It is strongly recommended to not run Privoxy as root. You should configure/
+install/run Privoxy as an unprivileged user, preferably by creating a "privoxy"
+user and group just for this purpose. See your local documentation for the
+correct command line to do add new users and groups (something like adduser,
+but the command syntax may vary from platform to platform).
/etc/passwd might then look like:
<para>
To build <application>Privoxy</application> from source,
<ulink url="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</ulink>,
- <ulink
- url="http://www.gnu.org/software/make/make.html">GNU make
- (gmake)</ulink>, and, of course, a C compiler like <ulink
- url="http://www.gnu.org/software/gcc/gcc.html">gcc</ulink> are required.
+ <ulink url="http://www.gnu.org/software/make/make.html">GNU make (gmake)</ulink>,
+ and, of course, a C compiler like
+ <ulink url="http://www.gnu.org/software/gcc/gcc.html">gcc</ulink> are required.
</para>
<para>
When building from a source tarball,
-<!--
- no longer available ...
- <ulink
- url="http://cvs.sourceforge.net/cvstarballs/ijbswa-cvsroot.tar.gz">nightly CVS
- tarball</ulink>),
---> first unpack the source:
+<!-- no longer available ...
+ <ulink url="http://cvs.sourceforge.net/cvstarballs/ijbswa-cvsroot.tar.gz">
+ nightly CVS tarball</ulink>),
+-->
+ first unpack the source:
</para>
- <screen>
+<screen>
tar xzvf privoxy-&p-version;<![%p-not-stable;[-beta]]><![%p-stable;[-stable]]>-src.tar.gz
cd privoxy-&p-version;<![%p-not-stable;[-beta]]><![%p-stable;[-stable]]>
</screen>
<para>
- For retrieving the current CVS sources, you'll need a CVS client installed.
- Note that sources from CVS are typically development quality, and may not be
- stable, or well tested. To download CVS source, check the Sourceforge
- documentation, which might give commands like:
+ To build the development version, you can get the source code by doing:
</para>
- <screen>
- cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
- cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co current
- cd current
+<screen>
+ cd <root-dir>
+ git clone https://www.privoxy.org/git/privoxy.git
</screen>
<para>
- This will create a directory named <filename>current/</filename>, which will
- contain the source tree.
+ This will create a directory named <filename><root-dir>/privoxy/</filename>,
+ which will contain the source tree.
</para>
<para>
+ Note that source code in GIT is development quality, and may not be
+ stable or well tested.
+</para>
+
+<!-- para>
You can also check out any <application>Privoxy</application>
<quote>branch</quote>, just exchange the <application>current</application>
name with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs
tree).
-</para>
+</para -->
<para>
- It is also strongly recommended to not run <application>Privoxy</application>
+ It is strongly recommended to not run <application>Privoxy</application>
as root. You should configure/install/run <application>Privoxy</application> as
- an unprivileged user, preferably by creating a <quote>privoxy</quote> user
+ an unprivileged user, preferably by creating a <quote>privoxy</quote> user
and group just for this purpose. See your local documentation for the correct
command line to do add new users and groups (something like
<command>adduser</command>, but the command syntax may vary from platform
<para>
Some text goes here.
</para>
- </literallayout>
+</literallayout>
<para>
Tags marking individual words, or few words, should be in-line:
</para>
<literallayout>
Just to <emphasis>emphasize</emphasis>, some text goes here.
- </literallayout>
+</literallayout>
</listitem>
<listitem>
<para>
</para>
</itemizedlist>
</para>
- </literallayout>
+</literallayout>
<para>
This makes it easier to find the text amongst the tags ;-)
</para>
the finished doc at that point.
</para>
</listitem>
+
<listitem>
<para>
Commonly used <quote>internal entities</quote>:
</listitem>
<listitem>
<para>
+ <!-- FIXME this is not the way it works anymore -->
Y, the version minor, represents the branch within the major version.
At any point in time, there are two branches being maintained:
The stable branch, with an even minor, say, 2N, in which no functionality is
<listitem>
<para>
Z, the point or sub version, represents a release of the software within a branch.
- It is therefore incremented immediately before each code freeze.
+ It is therefore incremented immediately after each software release.
+ <!-- FIXME this is not the way it works any more
In development branches, only the even point versions correspond to actual releases,
while the odd ones denote the evolving state of the sources on Git in between.
It follows that Z is odd on Git in development branches most of the time. There, it gets
increased to an even number immediately before a code freeze, and is increased to an odd
number again immediately thereafter.
This ensures that builds from Git snapshots are easily distinguished from released versions.
+ didn't Fabian get rid of the even=stable, odd=dev convention for release numbering? -->
The point version is reset to zero when the minor changes.
</para>
<para>
The following <emphasis>must be done by one of the
developers</emphasis> prior to each new release.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Make sure that everybody who has worked on the code in the last
couple of days has had a chance to yell <quote>no!</quote> in case
they have pending changes/fixes in their pipelines. Announce the
freeze so that nobody will interfere with last minute changes.
- </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Update the code status (CODE_STATUS="xxx") in configure.in to one of
+ "alpha", "beta" or "stable".
+ </para>
</listitem>
<listitem>
<para>
- Increment the version number (point from odd to even in development
- branches!) in <filename>configure.in</filename> and update the code
- status (CODE_STATUS="xxx") to one of "alpha", "beta" or "stable".
- Rebuild configure and GNUMakefile to make sure the updated values are
- being used.
+ Rebuild configure and GNUMakefile to make sure the updated values are being used.
</para>
+
+ <programlisting>
+$ autoheader && autoconf # rebuild configure
+$ ./configure # rebuild GNUmakefile
+</programlisting>
</listitem>
<listitem>
<para>
- Use the dok-release target to update the sgml documentation source files.
+ <command>make dok-release</command> to update the sgml documentation source files.
</para>
</listitem>
<listitem>
</listitem>
<listitem>
<para>
- All documentation should be rebuild after the version bump.
+ All documentation should be rebuild after the code status has been changed.
Finished docs should be then be committed to Git (for those
without the ability to build these). Some docs may require
rather obscure processing tools. <filename>config</filename>,
the man page (and the html version of the man page)
fall in this category. README, the man page, AUTHORS, and config
should all also be committed to Git for other packagers. The
- formal docs should be uploaded to the webserver. See the
- Section "Updating the webserver" in this manual for details.
+ formal docs should be uploaded to the webserver. See the section
+ <ulink url="webserver-update.html">"Updating the webserver"</ulink>
+ in this manual for details.
</para>
</listitem>
<listitem>
</para>
</sect3>
- <sect3 id="newrelease-windows"><title>Windows</title>
+ <sect3 id="NEWRELEASE-WINDOWS"><title>Windows</title>
+ <!-- so annoying: docbook generated ids are UPPERCASE so
+ links to "whatever.html#idtag" DO NOT WORK!!
+ They have to be "whatever.html#IDTAG".
+ So be consistent and use uppercase on the definition.
+ -->
<para>
- Use the <ulink url="http://www.fruitbat.org/Cygwin/index.html#cygwincirca">
- Cygwin Time Machine</ulink> to install the last 1.5 version of Cygwin.
- Run the following commands from within the Cygwin 1.5 bash shell.
+ Note that the docbook generated files might need some hand editing,
+ so the Windows build makefile does not rebuild the docs.
</para>
+
<para>
First, <emphasis>make sure that you have freshly exported the right
version into an empty directory</emphasis>. (See "Building and releasing
- packages" above). Then get the Windows setup module:
+ packages" above).
+ <!-- XXX ??? are we still basing releases off a tarball???
+ -->
</para>
- <programlisting>
- cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup
-</programlisting>
<para>
Then you can build the package. This is fully automated, and is
- controlled by <filename>winsetup/GNUmakefile</filename>.
+ controlled by <filename>windows/GNUmakefile</filename>.
All you need to do is:
</para>
<programlisting>
- cd winsetup
+ cd windows
make
</programlisting>
<para>
Now you can manually rename <filename>privoxy_setup.exe</filename> to
- <filename>privoxy_setup_X_Y_Z.exe</filename>, and upload it to
- SourceForge. When releasing the package on SourceForge, use the release notes
+ <filename>privoxy_setup_X.Y.Z.exe</filename>, and the <filename>build</filename>
+ directory to <filename>privoxy_X.Y.Z</filename>.
+ Create a .zip file of the newly renamed <filename>privoxy_X.Y.Z</filename> directory,
+ GPG sign the installer and zip file,
+ </para>
+ <programlisting>
+ $ gpg --armor --detach --sign <filename>privoxy_setup_X.Y.Z.exe</filename>
+ $ gpg --armor --detach --sign <filename>privoxy_X.Y.Z.zip</filename>
+</programlisting>
+ <para>
+ and upload the files to SourceForge.
+ </para>
+
+ <para>
+ When releasing the package on SourceForge, use the release notes
and Change Log from the source tarball package.
</para>
</sect3>
to SourceForge, and go through the release steps. The upload
is done via FTP:
</para>
- <itemizedlist>
- <listitem>
- <para>
- Upload to: <ulink url="ftp://upload.sourceforge.net/incoming">ftp://upload.sourceforge.net/incoming</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- user: <literal>anonymous</literal>
- </para>
- </listitem>
- <listitem>
- <para>
- password: <literal>ijbswa-developers@lists.sourceforge.net</literal>
- </para>
- </listitem>
- </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Upload to: <ulink url="ftp://upload.sourceforge.net/incoming">ftp://upload.sourceforge.net/incoming</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ user: <literal>anonymous</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ password: <literal>ijbswa-developers@lists.sourceforge.net</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
<para>
Or use the <command>make</command> targets as described above.
</para>
<para>
- Once this done go to <ulink
- url="https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
- >https://sourceforge.net/project/admin/editpackages.php?group_id=11118</ulink>,
+ Once this done go to
+ <ulink url="https://sourceforge.net/project/admin/editpackages.php?group_id=11118">
+ https://sourceforge.net/project/admin/editpackages.php?group_id=11118</ulink>,
making sure you are logged in. Find your target platform in the
second column, and click <literal>Add Release</literal>. You will
then need to create a new release for your package, using the format
<title>After the Release</title>
<para>
When all (or: most of the) packages have been uploaded and made available,
- send an email to the <ulink url="mailto:privoxy-announce@lists.privoxy.org">announce
- mailing list</ulink>, Subject: "Version X.Y.Z available for download". Be sure to
+ send an email to the
+ <ulink url="mailto:privoxy-announce@lists.privoxy.org">announce mailing
+ list</ulink>, Subject: "Version X.Y.Z available for download". Be sure to
include the
- <ulink url="https://sourceforge.net/project/showfiles.php?group_id=11118">download
- location</ulink>, the release notes and the Changelog. Also, post an
+ <ulink url="https://sourceforge.net/project/showfiles.php?group_id=11118">
+ download location</ulink>, the release notes and the Changelog. Also, post an
updated News item on the project page Sourceforge, and update the Home
page and docs linked from the Home page (see below). Other news sites
and release oriented sites, such as Freshmeat, should also be notified.
</para>
+ <para>
+ Then update the source code for the next version to be released:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Increment the version number and change the code status to "UNRELEASED"
+ in <filename>configure.in</filename>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Rebuild configure (<quote><command>autoheader && autoconf</command></quote>)
+ and GNUMakefile (<quote><command>./configure</command></quote>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <quote><command>make dok-release</command></quote> to update the sgml documentation source files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Commit all your changes.
+ </para>
+ </listitem>
+ </itemizedlist>
+
</sect2>
</sect1>
<para>
<![%p-newstuff;[
Yes. Version 3.0.5 introduces full <application>Windows</application> service
- functionality. See <ulink url="../user-manual/installation.html#installation-pack-win">
+ functionality. See <ulink url="../user-manual/installation.html#INSTALLATION-PACK-WIN">
the <citetitle>User Manual</citetitle></ulink> for details on how to install and configure
<application>Privoxy</application> as a service.
</para>
during upgrades. You can, however, create completely new templates,
place them in another directory and specify the alternate path in the main
<filename>config</filename>. For details, have a look at the <ulink
- url="../user-manual/config.html#templdir">templdir</ulink> option.
+ url="../user-manual/config.html#TEMPLDIR">templdir</ulink> option.
</para>
</sect2>
</para>
<screen>
# forward-socks5t / 127.0.0.1:9050 .
- </screen>
+</screen>
<para>
Note that if you got Tor through one of the bundles, you may
have to change the port from 9050 to 9150 (or even another one).
# forward 192.168.*.*/ .
# forward 10.*.*.*/ .
# forward 127.*.*.*/ .
- </screen>
+</screen>
<para>
Unencrypted connections to systems in these address ranges will
be as (un)secure as the local network is, but the alternative is
</para>
<screen>
# forward localhost/ .
- </screen>
+</screen>
<para>
Save the modified configuration file and open
<ulink url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>
* USA
*
*********************************************************************/
- </literallayout>
+</literallayout>
</msgtext>
</literal>
</para>
example:
</para>
-<para>
- <literal>
- <msgtext>
- <literallayout>
- <emphasis>confdir /etc/privoxy</emphasis></literallayout>
- </msgtext>
- </literal>
-</para>
+<literallayout>
+ <emphasis>confdir /etc/privoxy</emphasis>
+</literallayout>
<para>
Assigns the value <literal>/etc/privoxy</literal> to the option
Copyright (C) 2001-2018 Privoxy Developers https://www.privoxy.org/
</para>
-<para>
- <literallayout>
+<literallayout>
##################################################################
#
Table of Contents #
7. WINDOWS GUI OPTIONS #
#
##################################################################
- </literallayout>
-</para>
-<literallayout>I. INTRODUCTION
- =============== <!-- fuck this madness --></literallayout>
+
+I. INTRODUCTION
+ ===============
+</literallayout>
<para>
This file holds Privoxy's main configuration. Privoxy detects
<literal>PATH</literal> to where the <citetitle>User Manual</citetitle> is
located:
</para>
- <screen> user-manual /usr/share/doc/privoxy/user-manual</screen>
+ <screen> user-manual /usr/share/doc/privoxy/user-manual</screen>
<para>
The User Manual is then available to anyone with access to
<application>Privoxy</application>, by following the built-in URL:
If the documentation is not on the local system, it can be accessed
from a remote server, as:
</para>
- <screen> user-manual http://example.com/privoxy/user-manual/</screen>
+ <screen> user-manual http://example.com/privoxy/user-manual/</screen>
<![%user-man;[
<!-- this gets hammered in conversion to config. Text repeated below. -->
<warning>
</para>
<screen>
forward 192.168.*.*/ .
- forward 10.*.*.*/ .
- forward 127.*.*.*/ .
+ forward 10.*.*.*/ .
+ forward 127.*.*.*/ .
</screen>
<para>
Unencrypted connections to systems in these address ranges will
<para>
This directive was added as a work-around for Firefox bug 492459:
<quote>Websites are no longer rendered if SSL requests for JavaScripts are blocked by a proxy.</quote>
- (<ulink url="https://bugzilla.mozilla.org/show_bug.cgi?id=492459"
- >https://bugzilla.mozilla.org/show_bug.cgi?id=492459</ulink>),
+ (<ulink url="https://bugzilla.mozilla.org/show_bug.cgi?id=492459">
+ https://bugzilla.mozilla.org/show_bug.cgi?id=492459</ulink>),
the bug has been fixed for quite some time, but this directive is also useful
to make it harder for websites to detect whether or not resources are being
blocked.
<screen>
# Best speed (compared to the other levels)
compression-level 1
+
# Best compression
compression-level 9
+
# No compression. Only useful for testing as the added header
# slightly increases the amount of data that has to be sent.
# If your benchmark shows that using this compression level
# is superior to using no compression at all, the benchmark
# is likely to be flawed.
compression-level 0
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
# that are enabled based on CLIENT-TAG patterns.
client-specific-tag circumvent-blocks Overrule blocks but do not affect other actions
disable-content-filters Disable content-filters but do not affect other actions
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
<screen>
# Increase the time to life for temporarily enabled tags to 3 minutes
client-tag-lifetime 180
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
# Allow systems that can reach Privoxy to provide the client
# IP address with a X-Forwarded-For header.
trust-x-forwarded-for 1
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
<screen>
# Increase the receive buffer size
receive-buffer-size 32768
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
<![%config-file;[<literallayout>@@#activity-animation 1</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>activity-animation 1</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-messages">
<![%config-file;[<literallayout>@@#log-messages 1</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-messages 1</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-buffer-size">
<![%config-file;[<literallayout>@@#log-buffer-size 1</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-buffer-size 1</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-max-lines">
<![%config-file;[<literallayout>@@#log-max-lines 200</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-max-lines 200</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-highlight-messages">
<![%config-file;[<literallayout>@@#log-highlight-messages 1</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-highlight-messages 1</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-font-name">
<![%config-file;[<literallayout>@@#log-font-name Comic Sans MS</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-font-name Comic Sans MS</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="log-font-size">
<![%config-file;[<literallayout>@@#log-font-size 8</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>log-font-size 8</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="show-on-task-bar">
<![%config-file;[<literallayout>@@#show-on-task-bar 0</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>show-on-task-bar 0</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="close-button-minimizes">
<![%config-file;[<literallayout>@@#close-button-minimizes 1</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
<emphasis>close-button-minimizes 1</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
<anchor id="hide-console">
<![%config-file;[<literallayout>@@#hide-console</literallayout>]]>
<![%user-man;[
-<para>
- <literal>
- <msgtext>
<literallayout>
#<emphasis>hide-console</emphasis>
- </literallayout>
- </msgtext>
- </literal>
-</para>
+</literallayout>
]]>
</sect2>
<para>
Helping hands and donations are welcome:
+</para>
+<para>
<itemizedlist>
<listitem>
<para>
- <ulink url="https://www.privoxy.org/faq/general.html#PARTICIPATE"
- >https://www.privoxy.org/faq/general.html#PARTICIPATE</ulink>
+ <ulink url="https://www.privoxy.org/faq/general.html#PARTICIPATE">
+ https://www.privoxy.org/faq/general.html#PARTICIPATE</ulink>
</para>
</listitem>
<listitem>
<para>
- <ulink url="https://www.privoxy.org/faq/general.html#DONATE"
- >https://www.privoxy.org/faq/general.html#DONATE</ulink>
+ <ulink url="https://www.privoxy.org/faq/general.html#DONATE">
+ https://www.privoxy.org/faq/general.html#DONATE</ulink>
</para>
</listitem>
</itemizedlist>
<subscript>
<!-- Completely the wrong markup, but very little is allowed -->
<!-- in this part of an article. FIXME -->
- <link linkend="copyright">Copyright</link> &my-copy; 2001-2017 by
+ <link linkend="copyright">Copyright</link> &my-copy; 2001-2018 by
<ulink url="https://www.privoxy.org/">Privoxy Developers</ulink>
</subscript>
</pubdate>
<sect2 id="installation-source"><title>Building from Source</title>
<para>
- The most convenient way to obtain the <application>Privoxy</application> sources
- is to download the source tarball from our
- <ulink url="https://sourceforge.net/projects/ijbswa/files/Sources/">project download
- page</ulink>.
-</para>
-
-<para>
- If you like to live on the bleeding edge and are not afraid of using
- possibly unstable development versions, you can check out the up-to-the-minute
- version directly from <ulink url="https://sourceforge.net/p/ijbswa/code/?source=navbar">the
- CVS repository</ulink>.
-<!--
- deprecated...out of business.
- or simply download <ulink
- url="http://cvs.sourceforge.net/cvstarballs/ijbswa-cvsroot.tar.bz2">the nightly CVS
- tarball.</ulink>
--->
+ The most convenient way to obtain the <application>Privoxy</application> source
+ code is to download the source tarball from our
+ <ulink url="https://sourceforge.net/projects/ijbswa/files/Sources/">
+ project download page</ulink>,
+ or you can get the up-to-the-minute, possibly unstable, development version from
+ <ulink url="https://www.privoxy.org/">https://www.privoxy.org/</ulink>.
</para>
<!-- include buildsource.sgml boilerplate: -->
&buildsource;
<!-- end boilerplate -->
+
+ <sect3 id="WINBUILD-CYGWIN"><title>Windows</title>
+
+ <sect4 id="WINBUILD-SETUP"><title>Setup</title>
+ <para>
+ Install the Cygwin utilities needed to build <application>Privoxy</application>.
+ If you have a 64 bit CPU (which most people do by now), get the
+ Cygwin setup-x86_64.exe program <ulink url="https://cygwin.com/setup-x86_64.exe">here</ulink>
+ (the .sig file is <ulink url="https://cygwin.com/setup-x86_64.exe.sig">here</ulink>).
+ </para>
+ <para>
+ Run the setup program and from View / Category select:
+ </para>
+ <screen>
+ Devel
+ autoconf 2.5
+ automake 1.15
+ binutils
+ cmake
+ gcc-core
+ gcc-g++
+ git
+ make
+ mingw64-i686-gcc-core
+ mingw64-i686-zlib
+ Editors
+ vim
+ Libs
+ libxslt: GNOME XSLT library (runtime)
+ Net
+ curl
+ openssh
+ Text
+ docbook-dssl
+ docbook-sgml31
+ docbook-utils
+ openjade
+ Utils
+ gnupg
+ Web
+ w3m
+</screen>
+
+ <para>
+ If you haven't already downloaded the Privoxy source code, get it now:
+ </para>
+ <screen>
+ mkdir <root-dir>
+ cd <root-dir>
+ git clone https://www.privoxy.org/git/privoxy.git
+</screen>
+
+ <para>
+ Get the source code (.zip or .tar.gz) for tidy from
+ <ulink url="https://github.com/htacg/tidy-html5/releases">
+ https://github.com/htacg/tidy-html5/releases</ulink>,
+ unzip into <root-dir> and build the software:
+ </para>
+ <screen>
+ cd <root-dir>
+ cd tidy-html5-x.y.z/build/cmake
+ cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
+ make && make install
+</screen>
+
+ <para>
+ If you want to be able to make a Windows release package, get the NSIS .zip file from
+ <!-- FIXME: which version(s) are known to work? -->
+ <ulink url="https://sourceforge.net/projects/nsis/files/NSIS%203/">
+ https://sourceforge.net/projects/nsis/files/NSIS%203/</ulink>
+ and extract the NSIS directory to <literal>privoxy/windows</literal>.
+ Then edit the windows/GNUmakefile to set the location of the NSIS executable - eg:
+ </para>
+ <screen>
+# Path to NSIS
+MAKENSIS = ./nsis/makensis.exe
+</screen>
+
+ </sect4>
+
+ <sect4 id="WINBUILD-BUILD"><title>Build</title>
+
+ <para>
+ To build just the Privoxy executable and not the whole installation package, do:
+ </para>
+ <programlisting>
+ cd <root-dir>/privoxy
+ ./windows/MYconfigure && make
+</programlisting>
+
+ <para>
+ Privoxy uses the <ulink url="https://en.wikipedia.org/wiki/GNU_build_system">GNU Autotools</ulink>
+ for building software, so the process is:
+ </para>
+ <programlisting>
+ $ autoheader # creates config.h.in
+ $ autoconf # uses config.h.in to create the configure shell script
+ $ ./configure [options] # creates GNUmakefile
+ $ make [options] # builds the program
+</programlisting>
+
+ <para>
+ The usual <literal>configure</literal> options for building a native Windows application under cygwin are
+ </para>
+
+ <literallayout class="Monospaced">
+ --host=i686-w64-mingw32
+ --enable-mingw32
+ --enable-zlib
+ --enable-static-linking
+ --disable-pthread
+ --disable-dynamic-pcre
+</literallayout>
+
+ <para>
+ You can set the <literal>CFLAGS</literal> and <literal>LDFLAGS</literal> envars before
+ running <literal>configure</literal> to set compiler and linker flags. For example:
+ </para>
+
+ <programlisting>
+ $ export CFLAGS="-O2" # set gcc optimization level
+ $ export LDFLAGS="-Wl,--nxcompat" # Enable DEP
+ $ ./configure --host=i686-w64-mingw32 --enable-mingw32 --enable-zlib \
+ > --enable-static-linking --disable-pthread --disable-dynamic-pcre
+ $ make # build Privoxy
+</programlisting>
+
+ <para>
+ See the <ulink url="../developer-manual/newrelease.html#NEWRELEASE-WINDOWS">Developer's Manual</ulink>
+ for building a Windows release package.
+ </para>
+
+ </sect4>
+ </sect3>
</sect2>
+
+
<!-- ~~~~~ New section ~~~~~ -->
<sect2 id="installation-keepupdated"><title>Keeping your Installation Up-to-Date</title>
</para>
<!-- Needs to be put in a table and colorized -->
-<screen>
+<screen><!-- want the background color that goes with screen -->
<msgtext>
<bridgehead renderas="sect2"> Privoxy Menu</bridgehead>
-
<simplelist>
<member>
▪ <ulink url="http://config.privoxy.org/show-status">View & change the current configuration</ulink>
TAG:^User-Agent: fetch libfetch/
TAG:^User-Agent: Ubuntu APT-HTTP/
TAG:^User-Agent: MPlayer/
- </screen>
+</screen>
<screen>
# Tag all requests with the Range header set
# parts of multimedia files.
{-filter -deanimate-gifs}
TAG:^RANGE-REQUEST$
- </screen>
+</screen>
<screen>
# Tag all requests with the client IP address
# Change forwarding settings for requests coming from address 10.0.0.1
{+forward-override{forward-socks5 127.0.1.2:2222 .}}
TAG:^IP-ADDRESS: 10\.0\.0\.1$
- </screen>
+</screen>
</listitem>
</varlistentry>
<screen># Block the non-existent "Privacy-Violation:" client header
{ +crunch-client-header{Privacy-Violation:} }
/
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
{+hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
+crunch-if-none-match}
-/ </screen>
+/
+</screen>
</listitem>
</varlistentry>
</variablelist>
<listitem>
<screen># Crunch server headers that try to prevent caching
{ +crunch-server-header{no-cache} }
-/ </screen>
+/
+</screen>
</listitem>
</varlistentry>
</variablelist>
<listitem>
<screen>
+force-text-mode
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
-overwrite-last-modified \
}
TAG:^User-Agent: fetch libfetch/2\.0$
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
# but send an empty document instead of the usual HTML message.
{+block{Blocked JavaScript} +handle-as-empty-document}
example.org/.*\.js$
- </screen>
+</screen>
</listitem>
</varlistentry>
</variablelist>
{+hide-accept-language{en-ca} \
+hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \
}
-/ </screen>
+/
+</screen>
</listitem>
</varlistentry>
</variablelist>
{+server-header-filter{xml-to-html}}
example.org/instance-that-is-delivered-as-xml-but-is-not
- </screen>
+</screen>
</listitem>
</varlistentry>
+<link linkend="SET-IMAGE-BLOCKER">set-image-blocker{pattern}</link> \
}
/ # Match all URLs
- </screen>
+</screen>
<para>
The default behavior is now set.
-server-header-filter{xml-to-html}
-server-header-filter{html-to-xml}
-session-cookies-only
- +set-image-blocker {pattern} </screen>
+ +set-image-blocker {pattern}
+</screen>
<para>
Notice the only difference here to the previous listing, is to
CLASS="LITERALLAYOUT"
> <para><br>
Some text goes here.<br>
- </para><br>
- </P
+ </para></P
><P
> Tags marking individual words, or few words, should be in-line:
</P
><P
CLASS="LITERALLAYOUT"
-> Just to <emphasis>emphasize</emphasis>, some text goes here.<br>
- </P
+> Just to <emphasis>emphasize</emphasis>, some text goes here.</P
></LI
><LI
><P
</listitem><br>
</para><br>
</itemizedlist><br>
- </para><br>
- </P
+ </para></P
><P
> This makes it easier to find the text amongst the tags ;-)
</P
></LI
><LI
><P
-> Y, the version minor, represents the branch within the major version.
+>
+ Y, the version minor, represents the branch within the major version.
At any point in time, there are two branches being maintained:
The stable branch, with an even minor, say, 2N, in which no functionality is
being added and only bug-fixes are made, and 2N+1, the development branch, in
><LI
><P
> Z, the point or sub version, represents a release of the software within a branch.
- It is therefore incremented immediately before each code freeze.
- In development branches, only the even point versions correspond to actual releases,
- while the odd ones denote the evolving state of the sources on Git in between.
- It follows that Z is odd on Git in development branches most of the time. There, it gets
- increased to an even number immediately before a code freeze, and is increased to an odd
- number again immediately thereafter.
- This ensures that builds from Git snapshots are easily distinguished from released versions.
+ It is therefore incremented immediately after each software release.
+
The point version is reset to zero when the minor changes.
</P
><P
> in case
they have pending changes/fixes in their pipelines. Announce the
freeze so that nobody will interfere with last minute changes.
- </P
+ </P
></LI
><LI
><P
-> Increment the version number (point from odd to even in development
- branches!) in <TT
-CLASS="FILENAME"
->configure.in</TT
-> and update the code
- status (CODE_STATUS="xxx") to one of "alpha", "beta" or "stable".
- Rebuild configure and GNUMakefile to make sure the updated values are
- being used.
+> Update the code status (CODE_STATUS="xxx") in configure.in to one of
+ "alpha", "beta" or "stable".
</P
></LI
><LI
><P
-> Use the dok-release target to update the sgml documentation source files.
+> Rebuild configure and GNUMakefile to make sure the updated values are being used.
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="90%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>$ autoheader && autoconf # rebuild configure
+$ ./configure # rebuild GNUmakefile</PRE
+></TD
+></TR
+></TABLE
+></LI
+><LI
+><P
+> <B
+CLASS="COMMAND"
+>make dok-release</B
+> to update the sgml documentation source files.
</P
></LI
><LI
></LI
><LI
><P
-> All documentation should be rebuild after the version bump.
+> All documentation should be rebuild after the code status has been changed.
Finished docs should be then be committed to Git (for those
without the ability to build these). Some docs may require
rather obscure processing tools. <TT
the man page (and the html version of the man page)
fall in this category. README, the man page, AUTHORS, and config
should all also be committed to Git for other packagers. The
- formal docs should be uploaded to the webserver. See the
- Section "Updating the webserver" in this manual for details.
+ formal docs should be uploaded to the webserver. See the section
+ <A
+HREF="webserver-update.html"
+TARGET="_top"
+>"Updating the webserver"</A
+>
+ in this manual for details.
</P
></LI
><LI
>6.3.6. Windows</A
></H3
><P
-> Use the <A
-HREF="http://www.fruitbat.org/Cygwin/index.html#cygwincirca"
-TARGET="_top"
-> Cygwin Time Machine</A
-> to install the last 1.5 version of Cygwin.
- Run the following commands from within the Cygwin 1.5 bash shell.
+> Note that the docbook generated files might need some hand editing,
+ so the Windows build makefile does not rebuild the docs.
</P
><P
> First, <SPAN
version into an empty directory</I
></SPAN
>. (See "Building and releasing
- packages" above). Then get the Windows setup module:
+ packages" above).
+
+ </P
+><P
+> Then you can build the package. This is fully automated, and is
+ controlled by <TT
+CLASS="FILENAME"
+>windows/GNUmakefile</TT
+>.
+ All you need to do is:
</P
><TABLE
BORDER="0"
><TD
><PRE
CLASS="PROGRAMLISTING"
-> cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co winsetup</PRE
+> cd windows
+ make</PRE
></TD
></TR
></TABLE
><P
-> Then you can build the package. This is fully automated, and is
- controlled by <TT
+> Now you can manually rename <TT
+CLASS="FILENAME"
+>privoxy_setup.exe</TT
+> to
+ <TT
CLASS="FILENAME"
->winsetup/GNUmakefile</TT
+>privoxy_setup_X.Y.Z.exe</TT
+>, and the <TT
+CLASS="FILENAME"
+>build</TT
+>
+ directory to <TT
+CLASS="FILENAME"
+>privoxy_X.Y.Z</TT
>.
- All you need to do is:
+ Create a .zip file of the newly renamed <TT
+CLASS="FILENAME"
+>privoxy_X.Y.Z</TT
+> directory,
+ GPG sign the installer and zip file,
</P
><TABLE
BORDER="0"
><TD
><PRE
CLASS="PROGRAMLISTING"
-> cd winsetup
- make</PRE
+> $ gpg --armor --detach --sign <TT
+CLASS="FILENAME"
+>privoxy_setup_X.Y.Z.exe</TT
+>
+ $ gpg --armor --detach --sign <TT
+CLASS="FILENAME"
+>privoxy_X.Y.Z.zip</TT
+></PRE
></TD
></TR
></TABLE
><P
-> Now you can manually rename <TT
-CLASS="FILENAME"
->privoxy_setup.exe</TT
-> to
- <TT
-CLASS="FILENAME"
->privoxy_setup_X_Y_Z.exe</TT
->, and upload it to
- SourceForge. When releasing the package on SourceForge, use the release notes
+> and upload the files to SourceForge.
+ </P
+><P
+> When releasing the package on SourceForge, use the release notes
and Change Log from the source tarball package.
</P
></DIV
><UL
><LI
><P
-> Upload to: <A
+> Upload to: <A
HREF="ftp://upload.sourceforge.net/incoming"
TARGET="_top"
>ftp://upload.sourceforge.net/incoming</A
>
- </P
+ </P
></LI
><LI
><P
-> user: <TT
+> user: <TT
CLASS="LITERAL"
>anonymous</TT
>
- </P
+ </P
></LI
><LI
><P
-> password: <TT
+> password: <TT
CLASS="LITERAL"
>ijbswa-developers@lists.sourceforge.net</TT
>
- </P
+ </P
></LI
></UL
><P
> targets as described above.
</P
><P
-> Once this done go to <A
+> Once this done go to
+ <A
HREF="https://sourceforge.net/project/admin/editpackages.php?group_id=11118"
TARGET="_top"
->https://sourceforge.net/project/admin/editpackages.php?group_id=11118</A
+> https://sourceforge.net/project/admin/editpackages.php?group_id=11118</A
>,
making sure you are logged in. Find your target platform in the
second column, and click <TT
></H2
><P
> When all (or: most of the) packages have been uploaded and made available,
- send an email to the <A
+ send an email to the
+ <A
HREF="mailto:privoxy-announce@lists.privoxy.org"
TARGET="_top"
->announce
- mailing list</A
+>announce mailing
+ list</A
>, Subject: "Version X.Y.Z available for download". Be sure to
include the
<A
HREF="https://sourceforge.net/project/showfiles.php?group_id=11118"
TARGET="_top"
->download
- location</A
+> download location</A
>, the release notes and the Changelog. Also, post an
updated News item on the project page Sourceforge, and update the Home
page and docs linked from the Home page (see below). Other news sites
and release oriented sites, such as Freshmeat, should also be notified.
</P
+><P
+> Then update the source code for the next version to be released:
+ </P
+><P
+></P
+><UL
+><LI
+><P
+> Increment the version number and change the code status to "UNRELEASED"
+ in <TT
+CLASS="FILENAME"
+>configure.in</TT
+>
+ </P
+></LI
+><LI
+><P
+> Rebuild configure (<SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>autoheader && autoconf</B
+>"</SPAN
+>)
+ and GNUMakefile (<SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>./configure</B
+>"</SPAN
+>)
+ </P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="QUOTE"
+>"<B
+CLASS="COMMAND"
+>make dok-release</B
+>"</SPAN
+> to update the sgml documentation source files.
+ </P
+></LI
+><LI
+><P
+> Commit all your changes.
+ </P
+></LI
+></UL
></DIV
></DIV
><DIV
><H3
CLASS="SECT2"
><A
-NAME="AEN418"
+NAME="AEN419"
>3.4. There are several different <SPAN
CLASS="QUOTE"
>"actions"</SPAN
>Windows</SPAN
> service
functionality. See <A
-HREF="../user-manual/installation.html#installation-pack-win"
+HREF="../user-manual/installation.html#INSTALLATION-PACK-WIN"
TARGET="_top"
> the <I
CLASS="CITETITLE"
CLASS="FILENAME"
>config</TT
>. For details, have a look at the <A
-HREF="../user-manual/config.html#templdir"
+HREF="../user-manual/config.html#TEMPLDIR"
TARGET="_top"
>templdir</A
> option.</P
><H2
CLASS="SECT2"
><A
-NAME="AEN1500"
+NAME="AEN1501"
>7.1. License</A
></H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN1509"
+NAME="AEN1510"
>7.2. History</A
></H2
><P
><P
> Privoxy is an associated project of Software in the Public Interest (SPI).</P
><P
-> Helping hands and donations are welcome:
- <P
+> Helping hands and donations are welcome:</P
+><P
+> <P
></P
><UL
><LI
> <A
HREF="https://www.privoxy.org/faq/general.html#PARTICIPATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#PARTICIPATE</A
+> https://www.privoxy.org/faq/general.html#PARTICIPATE</A
>
</P
></LI
> <A
HREF="https://www.privoxy.org/faq/general.html#DONATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#DONATE</A
+> https://www.privoxy.org/faq/general.html#DONATE</A
>
</P
></LI
></DT
><DT
>3.4. <A
-HREF="configuration.html#AEN418"
+HREF="configuration.html#AEN419"
>There are several different <SPAN
CLASS="QUOTE"
>"actions"</SPAN
><DL
><DT
>7.1. <A
-HREF="copyright.html#AEN1500"
+HREF="copyright.html#AEN1501"
>License</A
></DT
><DT
>7.2. <A
-HREF="copyright.html#AEN1509"
+HREF="copyright.html#AEN1510"
>History</A
></DT
></DL
><TD
><PRE
CLASS="SCREEN"
-># forward-socks5t / 127.0.0.1:9050 .
- </PRE
+># forward-socks5t / 127.0.0.1:9050 .</PRE
></TD
></TR
></TABLE
CLASS="SCREEN"
># forward 192.168.*.*/ .
# forward 10.*.*.*/ .
-# forward 127.*.*.*/ .
- </PRE
+# forward 127.*.*.*/ .</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
-># forward localhost/ .
- </PRE
+># forward localhost/ .</PRE
></TD
></TR
></TABLE
><P
> Privoxy is an associated project of Software in the Public Interest (SPI).</P
><P
-> Helping hands and donations are welcome:
- <P
+> Helping hands and donations are welcome:</P
+><P
+> <P
></P
><UL
><LI
> <A
HREF="https://www.privoxy.org/faq/general.html#PARTICIPATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#PARTICIPATE</A
+> https://www.privoxy.org/faq/general.html#PARTICIPATE</A
>
</P
></LI
> <A
HREF="https://www.privoxy.org/faq/general.html#DONATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#DONATE</A
+> https://www.privoxy.org/faq/general.html#DONATE</A
>
</P
></LI
><HR><H2
CLASS="SECT1"
><A
-NAME="AEN62"
+NAME="AEN63"
></A
></H2
><P
><P
> Privoxy is an associated project of Software in the Public Interest (SPI).</P
><P
-> Helping hands and donations are welcome:
- <P
+> Helping hands and donations are welcome:</P
+><P
+> <P
></P
><UL
><LI
> <A
HREF="https://www.privoxy.org/faq/general.html#PARTICIPATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#PARTICIPATE</A
+> https://www.privoxy.org/faq/general.html#PARTICIPATE</A
>
</P
></LI
> <A
HREF="https://www.privoxy.org/faq/general.html#DONATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#DONATE</A
+> https://www.privoxy.org/faq/general.html#DONATE</A
>
</P
></LI
><HR><H2
CLASS="SECT1"
><A
-NAME="AEN61"
+NAME="AEN62"
></A
></H2
><P
TAG:^User-Agent: RPM APT-HTTP/
TAG:^User-Agent: fetch libfetch/
TAG:^User-Agent: Ubuntu APT-HTTP/
-TAG:^User-Agent: MPlayer/
- </PRE
+TAG:^User-Agent: MPlayer/</PRE
></TD
></TR
></TABLE
# it prevents clients from resuming downloads or skipping over
# parts of multimedia files.
{-filter -deanimate-gifs}
-TAG:^RANGE-REQUEST$
- </PRE
+TAG:^RANGE-REQUEST$</PRE
></TD
></TR
></TABLE
# Change forwarding settings for requests coming from address 10.0.0.1
{+forward-override{forward-socks5 127.0.1.2:2222 .}}
-TAG:^IP-ADDRESS: 10\.0\.0\.1$
- </PRE
+TAG:^IP-ADDRESS: 10\.0\.0\.1$</PRE
></TD
></TR
></TABLE
CLASS="SCREEN"
># Block the non-existent "Privacy-Violation:" client header
{ +crunch-client-header{Privacy-Violation:} }
-/
- </PRE
+/</PRE
></TD
></TR
></TABLE
{+hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
+crunch-if-none-match}
-/ </PRE
+/</PRE
></TD
></TR
></TABLE
CLASS="SCREEN"
># Crunch server headers that try to prevent caching
{ +crunch-server-header{no-cache} }
-/ </PRE
+/</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
->+force-text-mode
- </PRE
+>+force-text-mode</PRE
></TD
></TR
></TABLE
-hide-if-modified-since \
-overwrite-last-modified \
}
-TAG:^User-Agent: fetch libfetch/2\.0$
- </PRE
+TAG:^User-Agent: fetch libfetch/2\.0$</PRE
></TD
></TR
></TABLE
># Block all documents on example.org that end with ".js",
# but send an empty document instead of the usual HTML message.
{+block{Blocked JavaScript} +handle-as-empty-document}
-example.org/.*\.js$
- </PRE
+example.org/.*\.js$</PRE
></TD
></TR
></TABLE
{+hide-accept-language{en-ca} \
+hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \
}
-/ </PRE
+/</PRE
></TD
></TR
></TABLE
example.org/xml-instance-that-is-delivered-as-html
{+server-header-filter{xml-to-html}}
-example.org/instance-that-is-delivered-as-xml-but-is-not
- </PRE
+example.org/instance-that-is-delivered-as-xml-but-is-not</PRE
></TD
></TR
></TABLE
>set-image-blocker{pattern}</A
> \
}
-/ # Match all URLs
- </PRE
+/ # Match all URLs</PRE
></TD
></TR
></TABLE
-server-header-filter{xml-to-html}
-server-header-filter{html-to-xml}
-session-cookies-only
- +set-image-blocker {pattern} </PRE
+ +set-image-blocker {pattern}</PRE
></TD
></TR
></TABLE
values, all separated by whitespace (any number of spaces or tabs). For
example:</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
>confdir /etc/privoxy</I
></SPAN
></P
->
- </TT
-></P
><P
> Assigns the value <TT
CLASS="LITERAL"
><TD
><PRE
CLASS="SCREEN"
-> user-manual /usr/share/doc/privoxy/user-manual</PRE
+> user-manual /usr/share/doc/privoxy/user-manual</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
-> user-manual http://example.com/privoxy/user-manual/</PRE
+> user-manual http://example.com/privoxy/user-manual/</PRE
></TD
></TR
></TABLE
><PRE
CLASS="SCREEN"
> forward 192.168.*.*/ .
- forward 10.*.*.*/ .
- forward 127.*.*.*/ .</PRE
+ forward 10.*.*.*/ .
+ forward 127.*.*.*/ .</PRE
></TD
></TR
></TABLE
(<A
HREF="https://bugzilla.mozilla.org/show_bug.cgi?id=492459"
TARGET="_top"
->https://bugzilla.mozilla.org/show_bug.cgi?id=492459</A
+> https://bugzilla.mozilla.org/show_bug.cgi?id=492459</A
>),
the bug has been fixed for quite some time, but this directive is also useful
to make it harder for websites to detect whether or not resources are being
CLASS="SCREEN"
> # Best speed (compared to the other levels)
compression-level 1
+
# Best compression
compression-level 9
+
# No compression. Only useful for testing as the added header
# slightly increases the amount of data that has to be sent.
# If your benchmark shows that using this compression level
# is superior to using no compression at all, the benchmark
# is likely to be flawed.
- compression-level 0
- </PRE
+ compression-level 0</PRE
></TD
></TR
></TABLE
> # Define a couple of tags, the described effect requires action sections
# that are enabled based on CLIENT-TAG patterns.
client-specific-tag circumvent-blocks Overrule blocks but do not affect other actions
- disable-content-filters Disable content-filters but do not affect other actions
- </PRE
+ disable-content-filters Disable content-filters but do not affect other actions</PRE
></TD
></TR
></TABLE
><PRE
CLASS="SCREEN"
> # Increase the time to life for temporarily enabled tags to 3 minutes
- client-tag-lifetime 180
- </PRE
+ client-tag-lifetime 180</PRE
></TD
></TR
></TABLE
CLASS="SCREEN"
> # Allow systems that can reach Privoxy to provide the client
# IP address with a X-Forwarded-For header.
- trust-x-forwarded-for 1
- </PRE
+ trust-x-forwarded-for 1</PRE
></TD
></TR
></TABLE
><PRE
CLASS="SCREEN"
> # Increase the receive buffer size
- receive-buffer-size 32768
- </PRE
+ receive-buffer-size 32768</PRE
></TD
></TR
></TABLE
>"Privoxy"</SPAN
> is active. To turn off, set to 0.</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>activity-animation 1</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-MESSAGES"
>debug</A
> directive.</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-messages 1</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-BUFFER-SIZE"
> Warning: Setting this to 0 will result in the buffer to grow infinitely and
eat up all your memory!</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-buffer-size 1</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-MAX-LINES"
> is the maximum number of lines held
in the log buffer. See above.</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-max-lines 200</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-HIGHLIGHT-MESSAGES"
> will highlight portions of the log
messages with a bold-faced font:</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-highlight-messages 1</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-FONT-NAME"
><P
> The font used in the console window:</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-font-name Comic Sans MS</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="LOG-FONT-SIZE"
><P
> Font size used in the console window:</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>log-font-size 8</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="SHOW-ON-TASK-BAR"
> will appear as a button on the Task bar
when minimized:</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>show-on-task-bar 0</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="CLOSE-BUTTON-MINIMIZES"
> instead of closing
the program (close with the exit option on the File menu).</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> <SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>close-button-minimizes 1</I
></SPAN
-><br>
- </P
->
- </TT
></P
><A
NAME="HIDE-CONSOLE"
> will disconnect from and hide the
command console.</P
><P
-> <TT
-CLASS="LITERAL"
-> <P
CLASS="LITERALLAYOUT"
> #<SPAN
CLASS="emphasis"
CLASS="EMPHASIS"
>hide-console</I
></SPAN
-><br>
- </P
->
- </TT
></P
></DIV
></DIV
> <H2
CLASS="BRIDGEHEAD"
><A
-NAME="AEN881"
+NAME="AEN914"
></A
> Privoxy Menu</H2
><P
> <A
HREF="copyright.html"
>Copyright</A
-> © 2001-2017 by
+> © 2001-2018 by
<A
HREF="https://www.privoxy.org/"
TARGET="_top"
><P
> Privoxy is an associated project of Software in the Public Interest (SPI).</P
><P
-> Helping hands and donations are welcome:
- <P
+> Helping hands and donations are welcome:</P
+><P
+> <P
></P
><UL
><LI
> <A
HREF="https://www.privoxy.org/faq/general.html#PARTICIPATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#PARTICIPATE</A
+> https://www.privoxy.org/faq/general.html#PARTICIPATE</A
>
</P
></LI
> <A
HREF="https://www.privoxy.org/faq/general.html#DONATE"
TARGET="_top"
->https://www.privoxy.org/faq/general.html#DONATE</A
+> https://www.privoxy.org/faq/general.html#DONATE</A
>
</P
></LI
HREF="installation.html#INSTALLATION-SOURCE"
>Building from Source</A
></DT
+><DD
+><DL
+><DT
+>2.2.1. <A
+HREF="installation.html#WINBUILD-CYGWIN"
+>Windows</A
+></DT
+></DL
+></DD
><DT
>2.3. <A
HREF="installation.html#INSTALLATION-KEEPUPDATED"
> The most convenient way to obtain the <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> sources
- is to download the source tarball from our
+> source
+ code is to download the source tarball from our
<A
HREF="https://sourceforge.net/projects/ijbswa/files/Sources/"
TARGET="_top"
->project download
- page</A
->.</P
-><P
-> If you like to live on the bleeding edge and are not afraid of using
- possibly unstable development versions, you can check out the up-to-the-minute
- version directly from <A
-HREF="https://sourceforge.net/p/ijbswa/code/?source=navbar"
+> project download page</A
+>,
+ or you can get the up-to-the-minute, possibly unstable, development version from
+ <A
+HREF="https://www.privoxy.org/"
TARGET="_top"
->the
- CVS repository</A
+>https://www.privoxy.org/</A
>.</P
><P
> To build <SPAN
<A
HREF="http://www.gnu.org/software/make/make.html"
TARGET="_top"
->GNU make
- (gmake)</A
->, and, of course, a C compiler like <A
+>GNU make (gmake)</A
+>,
+ and, of course, a C compiler like
+ <A
HREF="http://www.gnu.org/software/gcc/gcc.html"
TARGET="_top"
>gcc</A
></TR
></TABLE
><P
-> For retrieving the current CVS sources, you'll need a CVS client installed.
- Note that sources from CVS are typically development quality, and may not be
- stable, or well tested. To download CVS source, check the Sourceforge
- documentation, which might give commands like:</P
+> To build the development version, you can get the source code by doing:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
><TD
><PRE
CLASS="SCREEN"
-> cvs -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa login
- cvs -z3 -d:pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa co current
- cd current</PRE
+> cd <root-dir>
+ git clone https://www.privoxy.org/git/privoxy.git</PRE
></TD
></TR
></TABLE
><P
> This will create a directory named <TT
CLASS="FILENAME"
->current/</TT
->, which will
- contain the source tree.</P
+><root-dir>/privoxy/</TT
+>,
+ which will contain the source tree.</P
><P
-> You can also check out any <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
->
- <SPAN
-CLASS="QUOTE"
->"branch"</SPAN
->, just exchange the <SPAN
-CLASS="APPLICATION"
->current</SPAN
->
- name with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs
- tree).</P
+> Note that source code in GIT is development quality, and may not be
+ stable or well tested.</P
><P
-> It is also strongly recommended to not run <SPAN
+> It is strongly recommended to not run <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>
CLASS="APPLICATION"
>Privoxy</SPAN
> as
- an unprivileged user, preferably by creating a <SPAN
+ an unprivileged user, preferably by creating a <SPAN
CLASS="QUOTE"
>"privoxy"</SPAN
> user
TARGET="_top"
>developer manual</A
>.</P
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="WINBUILD-CYGWIN"
+>2.2.1. Windows</A
+></H3
+><DIV
+CLASS="SECT4"
+><H4
+CLASS="SECT4"
+><A
+NAME="WINBUILD-SETUP"
+>2.2.1.1. Setup</A
+></H4
+><P
+> Install the Cygwin utilities needed to build <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>.
+ If you have a 64 bit CPU (which most people do by now), get the
+ Cygwin setup-x86_64.exe program <A
+HREF="https://cygwin.com/setup-x86_64.exe"
+TARGET="_top"
+>here</A
+>
+ (the .sig file is <A
+HREF="https://cygwin.com/setup-x86_64.exe.sig"
+TARGET="_top"
+>here</A
+>).
+ </P
+><P
+> Run the setup program and from View / Category select:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> Devel
+ autoconf 2.5
+ automake 1.15
+ binutils
+ cmake
+ gcc-core
+ gcc-g++
+ git
+ make
+ mingw64-i686-gcc-core
+ mingw64-i686-zlib
+ Editors
+ vim
+ Libs
+ libxslt: GNOME XSLT library (runtime)
+ Net
+ curl
+ openssh
+ Text
+ docbook-dssl
+ docbook-sgml31
+ docbook-utils
+ openjade
+ Utils
+ gnupg
+ Web
+ w3m</PRE
+></TD
+></TR
+></TABLE
+><P
+> If you haven't already downloaded the Privoxy source code, get it now:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> mkdir <root-dir>
+ cd <root-dir>
+ git clone https://www.privoxy.org/git/privoxy.git</PRE
+></TD
+></TR
+></TABLE
+><P
+> Get the source code (.zip or .tar.gz) for tidy from
+ <A
+HREF="https://github.com/htacg/tidy-html5/releases"
+TARGET="_top"
+> https://github.com/htacg/tidy-html5/releases</A
+>,
+ unzip into <root-dir> and build the software:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> cd <root-dir>
+ cd tidy-html5-x.y.z/build/cmake
+ cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
+ make && make install</PRE
+></TD
+></TR
+></TABLE
+><P
+> If you want to be able to make a Windows release package, get the NSIS .zip file from
+
+ <A
+HREF="https://sourceforge.net/projects/nsis/files/NSIS%203/"
+TARGET="_top"
+> https://sourceforge.net/projects/nsis/files/NSIS%203/</A
+>
+ and extract the NSIS directory to <TT
+CLASS="LITERAL"
+>privoxy/windows</TT
+>.
+ Then edit the windows/GNUmakefile to set the location of the NSIS executable - eg:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+># Path to NSIS
+MAKENSIS = ./nsis/makensis.exe</PRE
+></TD
+></TR
+></TABLE
+></DIV
+><DIV
+CLASS="SECT4"
+><H4
+CLASS="SECT4"
+><A
+NAME="WINBUILD-BUILD"
+>2.2.1.2. Build</A
+></H4
+><P
+> To build just the Privoxy executable and not the whole installation package, do:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> cd <root-dir>/privoxy
+ ./windows/MYconfigure && make</PRE
+></TD
+></TR
+></TABLE
+><P
+> Privoxy uses the <A
+HREF="https://en.wikipedia.org/wiki/GNU_build_system"
+TARGET="_top"
+>GNU Autotools</A
+>
+ for building software, so the process is:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> $ autoheader # creates config.h.in
+ $ autoconf # uses config.h.in to create the configure shell script
+ $ ./configure [options] # creates GNUmakefile
+ $ make [options] # builds the program</PRE
+></TD
+></TR
+></TABLE
+><P
+> The usual <TT
+CLASS="LITERAL"
+>configure</TT
+> options for building a native Windows application under cygwin are
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="LITERALLAYOUT"
+> --host=i686-w64-mingw32
+ --enable-mingw32
+ --enable-zlib
+ --enable-static-linking
+ --disable-pthread
+ --disable-dynamic-pcre</PRE
+></TD
+></TR
+></TABLE
+><P
+> You can set the <TT
+CLASS="LITERAL"
+>CFLAGS</TT
+> and <TT
+CLASS="LITERAL"
+>LDFLAGS</TT
+> envars before
+ running <TT
+CLASS="LITERAL"
+>configure</TT
+> to set compiler and linker flags. For example:
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+> $ export CFLAGS="-O2" # set gcc optimization level
+ $ export LDFLAGS="-Wl,--nxcompat" # Enable DEP
+ $ ./configure --host=i686-w64-mingw32 --enable-mingw32 --enable-zlib \
+ > --enable-static-linking --disable-pthread --disable-dynamic-pcre
+ $ make # build Privoxy</PRE
+></TD
+></TR
+></TABLE
+><P
+> See the <A
+HREF="../developer-manual/newrelease.html#NEWRELEASE-WINDOWS"
+TARGET="_top"
+>Developer's Manual</A
+>
+ for building a Windows release package.
+ </P
+></DIV
+></DIV
></DIV
><DIV
CLASS="SECT2"
><DIV
CLASS="FIGURE"
><A
-NAME="AEN640"
+NAME="AEN673"
></A
><P
><B
><DIV
CLASS="FIGURE"
><A
-NAME="AEN694"
+NAME="AEN727"
></A
><P
><B
><DIV
CLASS="FIGURE"
><A
-NAME="AEN738"
+NAME="AEN771"
></A
><P
><B