- General improvements:
- <itemizedlist>
- <listitem>
- <para>
- Privoxy can (re)compress buffered content before delivering
- it to the client. Disabled by default as most users wouldn't
- benefit from it.
- </para>
- </listitem>
- <listitem>
- <para>
- The +fast-redirects{check-decoded-url} action checks URL
- segments separately. If there are other parameters behind
- the redirect URL, this makes it unnecessary to cut them off
- by additionally using a +redirect{} pcrs command.
- Initial patch submitted by Jamie Zawinski in #3429848.
- </para>
- </listitem>
- <listitem>
- <para>
- When loading action sections, verify that the referenced filters
- exist. Currently missing filters only result in an error message,
- but eventually the severity will be upgraded to fatal.
- </para>
- </listitem>
- <listitem>
- <para>
- Allow to bind to multiple separate addresses.
- Patch set submitted by Petr Pisar in #3354485.
- </para>
- </listitem>
- <listitem>
- <para>
- Set socket_error to errno if connecting fails in rfc2553_connect_to()
- Previously rejected direct connections could be incorrectly reported
- as DNS issues if Privoxy was compiled with IPv6 support.
- </para>
- </listitem>
- <listitem>
- <para>
- Adjust url_code_map[] so spaces are replaced with %20 instead of '+'
- While '+' can be used by client's submitting form data, this is not
- actually what Privoxy is using the lookups for. This is more of a
- cosmetic issue and doesn't fix any known problems.
- </para>
- </listitem>
- <listitem>
- <para>
- When compiled without FEATURE_FAST_REDIRECTS, do not silently
- ignore +fast-redirect{} directives
- </para>
- </listitem>
- <listitem>
- <para>
- Added a workaround for GNU libc's strptime() reporting negative
- year values when the parsed year is only specified with two digits.
- On affected systems cookies with such a date would not be turned
- into session cookies by the +session-cookies-only action.
- Reported by Vaeinoe in #3403560
- </para>
- </listitem>
- <listitem>
- <para>
- Fixed bind failures with certain GNU libc versions if no non-loopback
- IP address has been configured on the system. This is mainly an issue
- if the system is using DHCP and Privoxy is started before the network
- is completely configured.
- Reported by Raphael Marichez in #3349356.
- Additional insight from Petr Pisar.
- </para>
- </listitem>
- <listitem>
- <para>
- Privoxy log messages now use the ISO 8601 date format %Y-%m-%d.
- It's only slightly longer than the old format, but contains
- the full date including the year and allows sorting by date
- (when grepping in multiple log files) without hassle.
- </para>
- </listitem>
- <listitem>
- <para>
- In get_last_url(), do not bother trying to decode URLs that do
- not contain at least one '%' sign. It reduces the log noise and
- a number of unnecessary memory allocations.
- </para>
- </listitem>
- <listitem>
- <para>
- In case of SOCKS5 failures, dump the socks response in the log message.
- </para>
- </listitem>
- <listitem>
- <para>
- Simplify the signal setup in main()
- </para>
- </listitem>
- <listitem>
- <para>
- Streamline socks5_connect() slightly
- </para>
- </listitem>
- <listitem>
- <para>
- In socks5_connect(), require a complete socks response from the server
- Previously Privoxy didn't care how much data the server response
- contained as long as the first two bytes contained the expected
- values. While at it, shrink the buffer size so Privoxy can't read
- more than a whole socks response.
- </para>
- </listitem>
- <listitem>
- <para>
- In chat(), do not bother to generate a client request in case of
- direct CONNECT requests. It will not be used anyway.
- </para>
- </listitem>
- <listitem>
- <para>
- Reduce server_last_modified()'s stack size.
- </para>
- </listitem>
- <listitem>
- <para>
- Shorten get_http_time() by using strftime().
- </para>
- </listitem>
- <listitem>
- <para>
- Constify the known_http_methods pointers in unknown_method().
- </para>
- </listitem>
- <listitem>
- <para>
- Constify the time_formats pointers in parse_header_time().
- </para>
- </listitem>
- <listitem>
- <para>
- Constify the formerly_valid_actions pointers in action_used_to_be_valid().
- </para>
- </listitem>
- <listitem>
- <para>
- Introduce a GNUMakefile MAN_PAGE variable that defaults to privoxy.1.
- The Debian package uses section 8 for the man page and this
- should simplify the patch.
- </para>
- </listitem>
- <listitem>
- <para>
- Deduplicate the INADDR_NONE definition for Solaris by moving it to jbsockets.h
- </para>
- </listitem>
- <listitem>
- <para>
- In block_url(), ditch the obsolete workaround for ancient Netscape versions
- that supposedly couldn't properly deal with status code 403.
- </para>
- </listitem>
- <listitem>
- <para>
- Remove a useless NULL pointer check in load_trustfile().
- </para>
- </listitem>
- <listitem>
- <para>
- Remove two useless NULL pointer checks in load_one_re_filterfile().
- </para>
- </listitem>
- <listitem>
- <para>
- Change url_code_map[] from an array of pointers to an array of arrays
- It removes an unnecessary layer of indirection and on 64bit system reduces
- the size of the binary a bit.
- </para>
- </listitem>
- <listitem>
- <para>
- Fix various typos. Fixes taken from Debian's 29_typos.dpatch by Roland Rosenfeld.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a dok-tidy GNUMakefile target to clean up the messy HTML
- generated by the other dok targets.
- </para>
- </listitem>
- <listitem>
- <para>
- GNUisms in the GNUMakefile have been removed.
- </para>
- </listitem>
- <listitem>
- <para>
- Change the HTTP version in static responses to 1.1
- </para>
- </listitem>
- <listitem>
- <para>
- Synced config.sub and config.guess with upstream
- 2011-11-11/386c7218162c145f5f9e1ff7f558a3fbb66c37c5.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a dedicated function to parse the values of toggles. Reduces duplicated
- code in load_config() and provides better error handling. Invalid or missing
- toggle values are now a fatal error instead of being silently ignored.
- </para>
- </listitem>
- <listitem>
- <para>
- Terminate HTML lines in static error messages with \n instead of \r\n.
- </para>
- </listitem>
- <listitem>
- <para>
- Simplify cgi_error_unknown() a bit.
- </para>
- </listitem>
- <listitem>
- <para>
- In LogPutString(), don't bother looking at pszText when not
- actually logging anything.
- </para>
- </listitem>
- <listitem>
- <para>
- Change ssplit()'s fourth parameter from int to size_t.
- Fixes a clang complaint.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a warning that the statistics currently can't be trusted.
- Mention Privoxy-Log-Parser's --statistics option as
- an alternative for the time being.
- </para>
- </listitem>
- <listitem>
- <para>
- In rfc2553_connect_to(), start setting cgi->error_message on error
- </para>
- </listitem>
- <listitem>
- <para>
- Change the expected status code returned for http://p.p/die depending
- on whether or not FEATURE_GRACEFUL_TERMINATION is available.
- </para>
- </listitem>
- <listitem>
- <para>
- In cgi_die(), mark the client connection for closing.
- If the client will fetch the style sheet through another connection
- it gets the main thread out of the accept() state and should thus
- trigger the actual shutdown.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a proper CGI message for cgi_die().
- </para>
- </listitem>
- <listitem>
- <para>
- Don't enforce a logical line length limit in read_config_line()
- </para>
- </listitem>
- <listitem>
- <para>
- Slightly refactor server_last_modified() to remove useless gmtime*() calls
- </para>
- </listitem>
- <listitem>
- <para>
- In get_content_type(), also recognize '.jpeg' as JPEG extension
- </para>
- </listitem>
- <listitem>
- <para>
- Add '.png' to the list of recognized file extensions in get_content_type()
- </para>
- </listitem>
- <listitem>
- <para>
- In block_url(), consistently use the block reason "Request blocked by Privoxy"
- In two places the reason was "Request for blocked URL" which hides the
- fact that the request got blocked by Privoxy and isn't necessarily
- correct as the block may be due to tags.
- </para>
- </listitem>
- <listitem>
- <para>
- In listen_loop(), reload the configuration files after accepting
- a new connection instead of before.
- Previously the first connection that arrived after a configuration
- change would still be handled with the old configuration.
- </para>
- </listitem>
- <listitem>
- <para>
- In chat()'s receive-data loop, skip a client socket check if
- the socket will be written to right away anyway. This can
- increase the transfer speed for unfiltered content on fast
- network connections.
- </para>
- </listitem>
- <listitem>
- <para>
- The socket timeout is used for SOCKS negotiations as well which
- previously couldn't timeout.
- </para>
- </listitem>
- <listitem>
- <para>
- Don't keep the client connection alive if any configuration file
- changed since the time the connection came in. This is closer to
- Privoxy's behaviour before keep-alive support for client connection
- has been added and also less confusing in general.
- </para>
- </listitem>
- <listitem>
- <para>
- Treat all Content-Type header values containing the pattern
- 'script' as a sign of text. Reported by pribog in #3134970.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Action file improvements:
- <itemizedlist>
- <listitem>
- <para>
- Moved the site-specific block pattern section below the one for the
- generic patterns so for requests that are matched in both, the block
- reason for the domain is shown which is usually more useful than showing
- the one for the generic pattern.
- </para>
- </listitem>
- <listitem>
- <para>
- Remove -prevent-compression from the fragile alias It's no longer
- used anywhere by default and isn't known to break stuff anyway.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a (disabled) section to block various Facebook tracking URLs
- Reported by Dan Stahlke in #3421764.
- </para>
- </listitem>
- <listitem>
- <para>
- Add a (disabled) section to rewrite and redirect click-tracking
- URLs used on news.google.com
- Reported by Dan Stahlke in #3421755.
- </para>
- </listitem>
- <listitem>
- <para>
- Unblock linuxcounter.net/
- Reported by Dan Stahlke in #3422612.
- </para>
- </listitem>
- <listitem>
- <para>
- Block 'www91.intel.com/' which is used by Omniture.
- Reported by Adam Piggott in #3167370.
- </para>
- </listitem>
- <listitem>
- <para>
- Disable the handle-as-empty-doc-returns-ok option and mark it as deprecated.
- Reminded by tceverling in #2790091.
- </para>
- </listitem>
- <listitem>
- <para>
- Add ".ivwbox.de/" to the "Cross-site user tracking" section.
- Reported by Nettozahler in #3172525.
- </para>
- </listitem>
- <listitem>
- <para>
- Unblock and fast-redirect ".awin1.com/.*=http://"
- Reported by Adam Piggott in #3170921.
- </para>
- </listitem>
- <listitem>
- <para>
- Block "b.collective-media.net/".
- </para>
- </listitem>
- <listitem>
- <para>
- Widen the Debian popcon exception to "qa.debian.org/popcon".
- Seen in Debian's 05_default_action.dpatch by Roland Rosenfeld.
- </para>
- </listitem>
- <listitem>
- <para>
- Block ".gemius.pl/" which only seems to be used for user tracking.
- Reported by johnd16 in #3002731. Additional input from Lee and movax.
- </para>
- </listitem>
- <listitem>
- <para>
- Disable banners-by-size filters for '.thinkgeek.com/'
- The filter only seems to catch pictures of the inventory.
- </para>
- </listitem>
- <listitem>
- <para>
- Block requests for 'go.idmnet.bbelements.com/please/showit/'
- Reported by kacperdominik in #3372959.
- </para>
- </listitem>
- <listitem>
- <para>
- Unblock adainitiative.org/
- </para>
- </listitem>
- <listitem>
- <para>
- Add a fast-redirects exception for '.googleusercontent.com/.*=cache'
- </para>
- </listitem>
- <listitem>
- <para>
- Add a fast-redirects exception for webcache.googleusercontent.com/
- </para>
- </listitem>
- <listitem>
- <para>
- Unblock http://adassier.wordpress.com/ and http://adassier.files.wordpress.com/
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Filter file improvements:
- <itemizedlist>
- <listitem>
- <para>
- Let the yahoo filter hide '.ads'
- </para>
- </listitem>
- <listitem>
- <para>
- Let the msn filter hide overlay ads for Facebook 'likes' in search
- results and elements with the id 's_notf_div'. They only seem to be
- used to advertise site 'enhancements'.
- </para>
- </listitem>
- <listitem>
- <para>
- Let the js-events filter additionally disarm setInterval()
- Suggested by dg1727 in #3423775.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Documentation improvements:
- <itemizedlist>
- <listitem>
- <para>
- Clarify the effect of compiling Privoxy with zlib support
- Suggested by dg1727 in #3423782.
- </para>
- </listitem>
- <listitem>
- <para>
- Point out that the SourceForge messaging system works like a black
- hole and should thus not be used to contact individual developers.
- </para>
- </listitem>
- <listitem>
- <para>
- Mention some of the problems one can experience when not explicitly
- configuring an IP addresses as listen address.
- </para>
- </listitem>
- <listitem>
- <para>
- Explicitly mention that hostnames can be used instead of IP addresses
- for the listen-address, that only the first address returned will be
- used and what happens if the address is invalid.
- Requested by Calestyo in #3302213.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Log message improvements:
- <itemizedlist>
- <listitem>
- <para>
- If only the server connection is kept alive, do not pretend to
- wait for a new client request.
- </para>
- </listitem>
- <listitem>
- <para>
- Remove a superfluous log message in forget_connection()
- </para>
- </listitem>
- <listitem>
- <para>
- In chat(), properly report missing server responses as such
- instead of calling them empty
- </para>
- </listitem>
- <listitem>
- <para>
- In forwarded_connect(), fix a log message nobody should ever see
- </para>
- </listitem>
- <listitem>
- <para>
- Fix a log message in socks5_connect(), a failed write operation
- was logged as failed read operation
- </para>
- </listitem>
- <listitem>
- <para>
- Let load_one_actions_file() properly complain about a missing
- '{' at the beginning of the file
- Simply stating that a line is invalid isn't particularly helpful.
- </para>
- </listitem>
- <listitem>
- <para>
- Do not claim to listen on a socket until Privoxy actually does.
- Patch submitted by Petr Pisar #3354485
- </para>
- </listitem>
- <listitem>
- <para>
- Prevent a duplicated LOG_LEVEL_CLF message when sending out
- the "no-server-data" response
- </para>
- </listitem>
- <listitem>
- <para>
- Also log the client socket when dropping a connection.
- </para>
- </listitem>
- <listitem>
- <para>
- Include the destination host in the 'Request ... marked for
- blocking. limit-connect{...} doesn't allow CONNECT ...' message
- Patch submitted by Saperski in #3296250.
- </para>
- </listitem>
- <listitem>
- <para>
- Prevent a duplicated log message if none of the resolved IP
- addresses were reachable
- </para>
- </listitem>
- <listitem>
- <para>
- In connect_to(), do not pretend to retry if forwarded-connect-retries
- is zero or unset.
- </para>
- </listitem>
- <listitem>
- <para>
- When a specified user or group can't be found, put the name in
- single-quotes when logging it.
- </para>
- </listitem>
- <listitem>
- <para>
- In rfc2553_connect_to(), explain getnameinfo() errors better.
- </para>
- </listitem>
- <listitem>
- <para>
- Remove a useless log message in chat()
- </para>
- </listitem>
- <listitem>
- <para>
- When retrying to connect, also log the maximum number of connection
- attempts
- </para>
- </listitem>
- <listitem>
- <para>
- Rephrase a log message in compile_dynamic_pcrs_job_list().
- Divide the error code and its meaning with a colon. Call the pcrs
- job dynamic and not the filter. Filters may contain dynamic and
- non-dynamic pcrs jobs at the same time. Only mention the name of
- the filter or tagger, but don't claim it's a filter when it could
- be a tagger.
- </para>
- </listitem>
- <listitem>
- <para>
- In a fatal error message in load_one_actions_file(), cover both
- URL and TAG patterns.
- </para>
- </listitem>
- <listitem>
- <para>
- In pcrs_strerror(), properly report unknown positive error code
- values as such. Previously they were handled like 0 (no error).
- </para>
- </listitem>
- <listitem>
- <para>
- In compile_dynamic_pcrs_job_list(), also log the actual error code as
- pcrs_strerror() doesn't handle all errors reported by pcre
- </para>
- </listitem>
- <listitem>
- <para>
- Don't bother trying to continue chatting if the client didn't ask for it.
- Reduces log noise a bit.
- </para>
- </listitem>
- <listitem>
- <para>
- Make two fatal error message in load_one_actions_file() more descriptive
- </para>
- </listitem>
- <listitem>
- <para>
- In cgi_send_user_manual(), log when rejecting a file name due to '/' or '..'
- </para>
- </listitem>
- <listitem>
- <para>
- In load_file(), log a message if opening a file failed
- The CGI error message alone isn't too helpful.
- </para>
- </listitem>
- <listitem>
- <para>
- In connection_destination_matches(), improve two log messages
- to help understand why the destinations don't match.
- </para>
- </listitem>
- <listitem>
- <para>
- Rephrase a log message in serve(). Client request arrival
- should be differentiated from closed client connections now.
- </para>
- </listitem>
- <listitem>
- <para>
- In serve(), log if a client connection isn't reused due to a
- configuration file change.
- </para>
- </listitem>
- <listitem>
- <para>
- Let mark_server_socket_tainted() always mark the server socket tainted,
- just don't talk about it in cases where it has no effect. It doesn't change
- Privoxy's behaviour, but makes understanding the log file easier.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- configure:
- <itemizedlist>
- <listitem>
- <para>
- Added a --disable-ipv6-support switch for platforms where support
- is detected but doesn't actually work.
- </para>
- </listitem>
- <listitem>
- <para>
- Do not check for the existence of strerror() and memmove() twice
- </para>
- </listitem>
- <listitem>
- <para>
- Remove a useless test for setpgrp(2). Privoxy doesn't need it and
- it can cause problems when cross-compiling.
- </para>
- </listitem>
- <listitem>
- <para>
- Rename the --disable-acl-files switch to --disable-acl-support.
- Since about 2001, ACL directives are specified in the standard
- config file.
- </para>
- </listitem>
- <listitem>
- <para>
- Update the URL of the 'Removing outdated PCRE version after the
- next stable release' posting. The old URL stopped working after
- one of SF's recent site "optimizations". Reported by Han Liu.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Privoxy-Regression-Test:
- <itemizedlist>
- <listitem>
- <para>
- Added --shuffle-tests option to increase the chances of detection race conditions.
- </para>
- </listitem>
- <listitem>
- <para>
- Added a --local-test-file option that allows to use Privoxy-Regression-Test without Privoxy
- </para>
- </listitem>
- <listitem>
- <para>
- Added tests for missing socks4 and socks4a forwarders
- </para>
- </listitem>
- <listitem>
- <para>
- The --privoxy-address option now works with IPv6 addresses containing brackets, too
- </para>
- </listitem>
- <listitem>
- <para>
- Perform limited sanity checks for parameters that are supposed to have numerical values.
- </para>
- </listitem>
- <listitem>
- <para>
- Added a --sleep-time option to specify a number of seconds to
- sleep between tests, defaults to 0.
- </para>
- </listitem>
- <listitem>
- <para>
- Disable the range-requests tagger for tests that break if it's enabled
- </para>
- </listitem>
- <listitem>
- <para>
- Log messages use the ISO 8601 date format %Y-%m-%d.
- </para>
- </listitem>
- <listitem>
- <para>
- Fix spelling in two error messages.
- </para>
- </listitem>
- <listitem>
- <para>
- In the --help output, include a list of supported tests and their default levels.
- </para>
- </listitem>
- <listitem>
- <para>
- Adjust the tests to properly deal with FEATURE_TOGGLE being disabled.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- Privoxy-Log-Parser:
- <itemizedlist>
- <listitem>
- <para>
- Perform limited sanity checks for command line parameters that
- are supposed to have numerical values.
- </para>
- </listitem>
- <listitem>
- <para>
- Implement a --unbreak-lines-only option to try to revert MUA breakage.
- </para>
- </listitem>
- <listitem>
- <para>
- Accept and highlight: Added header: Content-Encoding: deflate
- </para>
- </listitem>
- <listitem>
- <para>
- Accept and highlight: Compressed content from 29258 to 8630 bytes.
- </para>
- </listitem>
- <listitem>
- <para>
- Accept and highlight: Client request arrived in time on socket 21.
- </para>
- </listitem>
- <listitem>
- <para>
- Highlight: Didn't receive data in time: a.fsdn.com:443
- </para>
- </listitem>
- <listitem>
- <para>
- Accept log messages with ISO 8601 time stamps, too
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para>
- uagen:
- <itemizedlist>
- <listitem>
- <para>
- Bump generated Firefox version to 8.0
- </para>
- </listitem>
- <listitem>
- <para>
- Only randomize the release date if the new --randomize-release-date
- option is enabled. Firefox versions after 4 use a fixed date string
- without meaning.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- </itemizedlist>
-</para>
-
-
-<!-- ~~~~~ New section ~~~~~ -->
-
-<sect2 id="upgradersnote">
-<title>Note to Upgraders</title>
-
-<para>
- A quick list of things to be aware of before upgrading from earlier
- versions of <application>Privoxy</application>:
-</para>
-
-<para>
- <itemizedlist>
-
- <listitem>
- <para>
- The recommended way to upgrade &my-app; is to backup your old
- configuration files, install the new ones, verify that &my-app;
- is working correctly and finally merge back your changes using
- <application>diff</application> and maybe <application>patch</application>.
- </para>
- <para>
- There are a number of new features in each &my-app; release and
- most of them have to be explicitly enabled in the configuration
- files. Old configuration files obviously don't do that and due
- to syntax changes using old configuration files with a new
- &my-app; isn't always possible anyway.
- </para>
- </listitem>
- <listitem>
- <para>
- Note that some installers remove earlier versions completely,
- including configuration files, therefore you should really save
- any important configuration files!
- </para>
- </listitem>
- <listitem>
- <para>
- On the other hand, other installers don't overwrite existing configuration
- files, thinking you will want to do that yourself.
- </para>
- </listitem>
- <listitem>
- <para>
- <filename>standard.action</filename> has been merged into
- the <filename>default.action</filename> file.
- </para>
- </listitem>
- <listitem>
- <para>
- In the default configuration only fatal errors are logged now.
- You can change that in the <link linkend="DEBUG">debug section</link>
- of the configuration file. You may also want to enable more verbose
- logging until you verified that the new &my-app; version is working
- as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Three other config file settings are now off by default:
- <link linkend="enable-remote-toggle">enable-remote-toggle</link>,
- <link linkend="enable-remote-http-toggle">enable-remote-http-toggle</link>,
- and <link linkend="enable-edit-actions">enable-edit-actions</link>.
- If you use or want these, you will need to explicitly enable them, and
- be aware of the security issues involved.
- </para>
- </listitem>
-
-<!--
- <listitem>
- <para>
- What constitutes a <quote>default</quote> configuration has changed,
- and you may want to review which actions are <quote>on</quote> by
- default. This is primarily a matter of emphasis, but some features
- you may have been used to, may now be <quote>off</quote> by default.
- There are also a number of new actions and filters you may want to
- consider, most of which are not fully incorporated into the default
- settings as yet (see above).
- </para>
- </listitem>
--->
-<!--
- <listitem>
- <para>
- The default actions setting is now <literal>Cautious</literal>. Previous
- releases had a default setting of <literal>Medium</literal>. Experienced
- users may want to adjust this, as it is fairly conservative by &my-app;
- standards and past practices. See <ulink
- url="http://config.privoxy.org/edit-actions-list?f=default">
- http://config.privoxy.org/edit-actions-list?f=default</ulink>. New users
- should try the default settings for a while before turning up the volume.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The default setting has filtering turned <emphasis>off</emphasis>, which
- subsequently means that compression is <emphasis>on</emphasis>. Remember
- that filtering does not work on compressed pages, so if you use, or want to
- use, filtering, you will need to force compression off. Example:
- </para>
- <para>
- <screen>
- { +<link linkend="filter">filter</link>{google} +<link linkend="prevent-compression">prevent-compression</link> }
- .google.</screen>
- </para>
- <para>
- Or if you use a number of filters, or filter many sites, you may just want
- to turn off compression for all sites in
- <filename>default.action</filename> (or
- <filename>user.action</filename>).
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- Also, <link linkend="SESSION-COOKIES-ONLY">session-cookies-only</link> is
- off by default now. If you've liked this feature in the past, you may want
- to turn it back on in <filename>user.action</filename> now.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- Some installers may not automatically start
- <application>Privoxy</application> after installation.
- </para>
- </listitem>
--->
-
- </itemizedlist>
-</para>
-
-</sect2>
-</sect1>
-
-<!-- ~~~~~ New section ~~~~~ -->
-<sect1 id="quickstart"><title>Quickstart to Using Privoxy</title>
-<para>
- <itemizedlist>
-
- <listitem>
- <para>
- Install <application>Privoxy</application>. See the <link
- linkend="installation">Installation Section</link> below for platform specific
- information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Advanced users and those who want to offer <application>Privoxy</application>
- service to more than just their local machine should check the <link
- linkend="config">main config file</link>, especially the <link
- linkend="access-control">security-relevant</link> options. These are
- off by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Start <application>Privoxy</application>, if the installation program has
- not done this already (may vary according to platform). See the section
- <link linkend="startup">Starting <application>Privoxy</application></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Set your browser to use <application>Privoxy</application> as HTTP and
- HTTPS (SSL) <ulink url="http://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>
- by setting the proxy configuration for address of
- <literal>127.0.0.1</literal> and port <literal>8118</literal>.
- <emphasis>DO NOT</emphasis> activate proxying for <literal>FTP</literal> or
- any protocols besides HTTP and HTTPS (SSL) unless you intend to prevent your
- browser from using these protocols.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Flush your browser's disk and memory caches, to remove any cached ad images.
- If using <application>Privoxy</application> to manage
- <ulink url="http://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
- you should remove any currently stored cookies too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A default installation should provide a reasonable starting point for
- most. There will undoubtedly be occasions where you will want to adjust the
- configuration, but that can be dealt with as the need arises. Little
- to no initial configuration is required in most cases, you may want
- to enable the
- <ulink url="config.html#ENABLE-EDIT-ACTIONS">web-based action editor</ulink> though.
- Be sure to read the warnings first.
- </para>
- <para>
- See the <link linkend="configuration">Configuration section</link> for more
- configuration options, and how to customize your installation.
- You might also want to look at the <link
- linkend="quickstart-ad-blocking">next section</link> for a quick
- introduction to how <application>Privoxy</application> blocks ads and
- banners.
-</para>
- </listitem>
-
- <listitem>
- <para>
- If you experience ads that slip through, innocent images that are
- blocked, or otherwise feel the need to fine-tune
- <application>Privoxy's</application> behavior, take a look at the <link
- linkend="actions-file">actions files</link>. As a quick start, you might
- find the <link linkend="act-examples">richly commented examples</link>
- helpful. You can also view and edit the actions files through the <ulink
- url="http://config.privoxy.org">web-based user interface</ulink>. The
- Appendix <quote><link linkend="actionsanat">Troubleshooting: Anatomy of an
- Action</link></quote> has hints on how to understand and debug actions that
- <quote>misbehave</quote>.
- </para>
- </listitem>
-
-<!--
- Did anyone test these lately?
- fk 2007-11-10
- <listitem>
- <para>
- For easy access to &my-app;'s most important controls, drag the provided
- <link linkend="bookmarklets">Bookmarklets</link> into your browser's
- personal toolbar.
- </para>
- </listitem>
--->
-
- <listitem>
- <para>
- Please see the section <link linkend="contact">Contacting the
- Developers</link> on how to report bugs, problems with websites or to get
- help.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Now enjoy surfing with enhanced control, comfort and privacy!
- </para>
- </listitem>
-
- </itemizedlist>
-</para>
-
-
-<!-- ~~~~~ New section ~~~~~ -->
-
-<sect2 id="quickstart-ad-blocking">
-<title>Quickstart to Ad Blocking</title>
-<!--
- NOTE: This section is deliberately redundant for those that don't
- want to read the whole thing (which is getting lengthy).
--->
-<para>
- Ad blocking is but one of <application>Privoxy's</application>
- array of features. Many of these features are for the technically minded advanced
- user. But, ad and banner blocking is surely common ground for everybody.
-</para>
-<para>
- This section will provide a quick summary of ad blocking so
- you can get up to speed quickly without having to read the more extensive
- information provided below, though this is highly recommended.
-</para>
-<para>
- First a bit of a warning ... blocking ads is much like blocking SPAM: the
- more aggressive you are about it, the more likely you are to block
- things that were not intended. And the more likely that some things
- may not work as intended. So there is a trade off here. If you want
- extreme ad free browsing, be prepared to deal with more
- <quote>problem</quote> sites, and to spend more time adjusting the
- configuration to solve these unintended consequences. In short, there is
- not an easy way to eliminate <emphasis>all</emphasis> ads. Either take
- the easy way and settle for <emphasis>most</emphasis> ads blocked with the
- default configuration, or jump in and tweak it for your personal surfing
- habits and preferences.
-</para>
-<para>
- Secondly, a brief explanation of <application>Privoxy's </application>
- <quote>actions</quote>. <quote>Actions</quote> in this context, are
- the directives we use to tell <application>Privoxy</application> to perform
- some task relating to HTTP transactions (i.e. web browsing). We tell
- <application>Privoxy</application> to take some <quote>action</quote>. Each
- action has a unique name and function. While there are many potential
- <application>actions</application> in <application>Privoxy's</application>
- arsenal, only a few are used for ad blocking. <link
- linkend="actions">Actions</link>, and <link linkend="actions-file">action
- configuration files</link>, are explained in depth below.
-</para>
-<para>
- Actions are specified in <application>Privoxy's</application> configuration,
- followed by one or more URLs to which the action should apply. URLs
- can actually be URL type <link linkend="af-patterns">patterns</link> that use
- wildcards so they can apply potentially to a range of similar URLs. The
- actions, together with the URL patterns are called a section.
-</para>
-<para>
- When you connect to a website, the full URL will either match one or more
- of the sections as defined in <application>Privoxy's</application> configuration,
- or not. If so, then <application>Privoxy</application> will perform the
- respective actions. If not, then nothing special happens. Furthermore, web
- pages may contain embedded, secondary URLs that your web browser will
- use to load additional components of the page, as it parses the
- original page's HTML content. An ad image for instance, is just an URL
- embedded in the page somewhere. The image itself may be on the same server,
- or a server somewhere else on the Internet. Complex web pages will have many
- such embedded URLs. &my-app; can deal with each URL individually, so, for
- instance, the main page text is not touched, but images from such-and-such
- server are blocked.
-</para>
-
-<para>
- The most important actions for basic ad blocking are: <literal><link
- linkend="block">block</link></literal>, <literal><link
- linkend="handle-as-image">handle-as-image</link></literal>,
- <literal><link
- linkend="handle-as-empty-document">handle-as-empty-document</link></literal>,and
- <literal><link linkend="set-image-blocker">set-image-blocker</link></literal>:
-</para>
-
-<para>
- <itemizedlist>
-
- <listitem>
- <para>
- <literal><link linkend="block">block</link></literal> - this is perhaps
- the single most used action, and is particularly important for ad blocking.
- This action stops any contact between your browser and any URL patterns
- that match this action's configuration. It can be used for blocking ads,
- but also anything that is determined to be unwanted. By itself, it simply
- stops any communication with the remote server and sends
- <application>Privoxy</application>'s own built-in BLOCKED page instead to
- let you now what has happened (with some exceptions, see below).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal><link linkend="handle-as-image">handle-as-image</link></literal> -
- tells <application>Privoxy</application> to treat this URL as an image.
- <application>Privoxy</application>'s default configuration already does this
- for all common image types (e.g. GIF), but there are many situations where this
- is not so easy to determine. So we'll force it in these cases. This is particularly
- important for ad blocking, since only if we know that it's an image of
- some kind, can we replace it with an image of our choosing, instead of the
- <application>Privoxy</application> BLOCKED page (which would only result in
- a <quote>broken image</quote> icon). There are some limitations to this
- though. For instance, you can't just brute-force an image substitution for
- an entire HTML page in most situations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal><link linkend="handle-as-empty-document">handle-as-empty-document</link></literal> -
- sends an empty document instead of <application>Privoxy's</application>
- normal BLOCKED HTML page. This is useful for file types that are neither
- HTML nor images, such as blocking JavaScript files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal><link
- linkend="set-image-blocker">set-image-blocker</link></literal> - tells
- <application>Privoxy</application> what to display in place of an ad image that
- has hit a block rule. For this to come into play, the URL must match a
- <literal><link linkend="block">block</link></literal> action somewhere in the
- configuration, <emphasis>and</emphasis>, it must also match an
- <literal><link linkend="handle-as-image">handle-as-image</link></literal> action.
- </para>
- <para>
- The configuration options on what to display instead of the ad are:
- </para>
- <simplelist>
- <member>
- <emphasis>pattern</emphasis> - a checkerboard pattern, so that an ad
- replacement is obvious. This is the default.
- </member>
- </simplelist>
- <simplelist>
- <member>
- <emphasis>blank</emphasis> - A very small empty GIF image is displayed.
- This is the so-called <quote>invisible</quote> configuration option.
- </member>
- </simplelist>
- <simplelist>
- <member>
- <emphasis>http://<URL></emphasis> - A redirect to any image anywhere
- of the user's choosing (advanced usage).
- </member>
- </simplelist>
- </listitem>
-
-</itemizedlist>
-</para>
-
-<para>
- Advanced users will eventually want to explore &my-app;
- <literal><link linkend="filter">filters</link></literal> as well. Filters
- are very different from <literal><link
- linkend="block">blocks</link></literal>.
- A <quote>block</quote> blocks a site, page, or unwanted contented. Filters
- are a way of filtering or modifying what is actually on the page. An example
- filter usage: a text replacement of <quote>no-no</quote> for
- <quote>nasty-word</quote>. That is a very simple example. This process can be
- used for ad blocking, but it is more in the realm of advanced usage and has
- some pitfalls to be wary off.
-</para>
-
-<para>
- The quickest way to adjust any of these settings is with your browser through
- the special <application>Privoxy</application> editor at <ulink
- url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>
- (shortcut: <ulink url="http://p.p/">http://p.p/show-status</ulink>). This
- is an internal page, and does not require Internet access.
-</para>
-
-<para>
- Note that as of <application>Privoxy</application> 3.0.7 beta the
- action editor is disabled by default. Check the
- <ulink url="config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions
- section in the configuration file</ulink> to learn why and in which
- cases it's safe to enable again.
-</para>
-
-<para>
- If you decided to enable the action editor, select the appropriate
- <quote>actions</quote> file, and click
- <quote><guibutton>Edit</guibutton></quote>. It is best to put personal or
- local preferences in <filename>user.action</filename> since this is not
- meant to be overwritten during upgrades, and will over-ride the settings in
- other files. Here you can insert new <quote>actions</quote>, and URLs for ad
- blocking or other purposes, and make other adjustments to the configuration.
- <application>Privoxy</application> will detect these changes automatically.
-</para>
-
-<para>
- A quick and simple step by step example:
-</para>
-
-<para>
- <itemizedlist>
-
- <listitem>
- <para>
- Right click on the ad image to be blocked, then select
- <quote><guimenuitem>Copy Link Location</guimenuitem></quote> from the
- pop-up menu.
- </para>
- </listitem>
- <listitem>
- <para>
- Set your browser to
- <ulink
- url="http://config.privoxy.org/show-status">http://config.privoxy.org/show-status</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- Find <filename>user.action</filename> in the top section, and click
- on <quote><guibutton>Edit</guibutton></quote>:
- </para>
-
- <!-- image of editor and actions files selections -->
- <para>
- <figure pgwide="0" float="0"><title>Actions Files in Use</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="files-in-use.jpg" format="jpg">
- </imageobject>
- <textobject>
- <phrase>[ Screenshot of Actions Files in Use ]</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
- </listitem>
-
- <listitem>
- <para>
- You should have a section with only
- <literal><link linkend="block">block</link></literal> listed under
- <quote>Actions:</quote>.
- If not, click a <quote><guibutton>Insert new section below</guibutton></quote>
- button, and in the new section that just appeared, click the
- <guibutton>Edit</guibutton> button right under the word <quote>Actions:</quote>.
- This will bring up a list of all actions. Find
- <literal><link linkend="block">block</link></literal> near the top, and click
- in the <quote>Enabled</quote> column, then <quote><guibutton>Submit</guibutton></quote>
- just below the list.
- </para>
- </listitem>
- <listitem>
- <para>
- Now, in the <literal><link linkend="block">block</link></literal> actions section,
- click the <quote><guibutton>Add</guibutton></quote> button, and paste the URL the
- browser got from <quote><guimenuitem>Copy Link Location</guimenuitem></quote>.
- Remove the <literal>http://</literal> at the beginning of the URL. Then, click
- <quote><guibutton>Submit</guibutton></quote> (or
- <quote><guibutton>OK</guibutton></quote> if in a pop-up window).
- </para>
- </listitem>
- <listitem>
- <para>
- Now go back to the original page, and press <keycap>SHIFT-Reload</keycap>
- (or flush all browser caches). The image should be gone now.
- </para>
- </listitem>
-
- </itemizedlist>
-</para>
-
-<para>
- This is a very crude and simple example. There might be good reasons to use a
- wildcard pattern match to include potentially similar images from the same
- site. For a more extensive explanation of <quote>patterns</quote>, and
- the entire actions concept, see <link linkend="actions-file">the Actions
- section</link>.
-</para>
-
-<para>
- For advanced users who want to hand edit their config files, you might want
- to now go to the <link linkend="act-examples">Actions Files Tutorial</link>.
- The ideas explained therein also apply to the web-based editor.
-</para>
-<para>
- There are also various
- <link linkend="filter">filters</link> that can be used for ad blocking
- (filters are a special subset of actions). These
- fall into the <quote>advanced</quote> usage category, and are explained in
- depth in later sections.
-</para>
-
-</sect2>
-
-</sect1>
-
-<!-- ~ End section ~ -->
-
-
-<!-- ~~~~~ New section ~~~~~ -->
-<sect1 id="startup">
-<title>Starting Privoxy</title>
-<para>
- Before launching <application>Privoxy</application> for the first time, you
- will want to configure your browser(s) to use
- <application>Privoxy</application> as a HTTP and HTTPS (SSL)
- <ulink url="http://en.wikipedia.org/wiki/Proxy_server">proxy</ulink>. The default is
- 127.0.0.1 (or localhost) for the proxy address, and port 8118 (earlier versions
- used port 8000). This is the one configuration step <emphasis>that must be done
-</emphasis>!
-</para>
-<para>
- Please note that <application>Privoxy</application> can only proxy HTTP and
- HTTPS traffic. It will not work with FTP or other protocols.
-</para>
-
- <!-- image of Mozilla Proxy configuration -->
- <para>
- <figure pgwide="0" float="0"><title>Proxy Configuration Showing
- Mozilla/Netscape HTTP and HTTPS (SSL) Settings</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="proxy_setup.jpg" format="jpg">
- </imageobject>
- <textobject>
- <phrase>[ Screenshot of Mozilla Proxy Configuration ]</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
-
-
-<para>
- With <application>Firefox</application>, this is typically set under:
-</para>
-
-<literallayout>
- <guibutton>Tools</guibutton> -> <guibutton>Options</guibutton> -> <guibutton>Advanced</guibutton> -> <guibutton>Network</guibutton> -><guibutton>Connection</guibutton> -> <guibutton>Settings</guibutton>
-
-</literallayout>
-
-<para>
- Or optionally on some platforms:
-</para>
-
-<literallayout>
- <guibutton>Edit</guibutton> -> <guibutton>Preferences</guibutton> -> <guibutton>General</guibutton> -> <guibutton>Connection Settings</guibutton> -> <guibutton>Manual Proxy Configuration</guibutton>
-
-</literallayout>
-
-
-<para>
- With <application>Netscape</application> (and
- <application>Mozilla</application>), this can be set under:
-</para>
-
-
-<literallayout>
-<!-- Mix ascii and gui art, something for everybody -->
-<!-- spacing on this is tricky -->
- <guibutton>Edit</guibutton> -> <guibutton>Preferences</guibutton> -> <guibutton>Advanced</guibutton> -> <guibutton>Proxies</guibutton> -> <guibutton>HTTP Proxy</guibutton>
-
-</literallayout>
-
-<para>
- For <application>Internet Explorer v.5-7</application>:
-</para>
-
-<literallayout>
- <guibutton>Tools</guibutton> -> <guibutton>Internet Options</guibutton> -> <guibutton>Connections</guibutton> -> <guibutton>LAN Settings</guibutton>
-</literallayout>
-
-<para>
- Then, check <quote>Use Proxy</quote> and fill in the appropriate info
- (Address: 127.0.0.1, Port: 8118). Include HTTPS (SSL), if you want HTTPS
- proxy support too (sometimes labeled <quote>Secure</quote>). Make sure any
- checkboxes like <quote>Use the same proxy server for all protocols</quote> is
- <emphasis>UNCHECKED</emphasis>. You want only HTTP and HTTPS (SSL)!
-</para>
-
- <!-- image of IE Proxy configuration -->
- <para>
- <figure pgwide="0" float="0"><title>Proxy Configuration Showing
- Internet Explorer HTTP and HTTPS (Secure) Settings</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="proxy2.jpg" format="jpg">
- </imageobject>
- <textobject>
- <phrase>[ Screenshot of IE Proxy Configuration ]</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
-
-
-<para>
- After doing this, flush your browser's disk and memory caches to force a
- re-reading of all pages and to get rid of any ads that may be cached. Remove
- any <ulink url="http://en.wikipedia.org/wiki/Browser_cookie">cookies</ulink>,
- if you want <application>Privoxy</application> to manage that. You are now
- ready to start enjoying the benefits of using
- <application>Privoxy</application>!
-</para>
-
-<para>
- <application>Privoxy</application> itself is typically started by specifying the
- main configuration file to be used on the command line. If no configuration
- file is specified on the command line, <application>Privoxy</application>
- will look for a file named <filename>config</filename> in the current
- directory. Except on Win32 where it will try <filename>config.txt</filename>.
-</para>
-
-<sect2 id="start-redhat">
-<title>Red Hat and Fedora</title>
-<para>
- A default Red Hat installation may not start &my-app; upon boot. It will use
- the file <filename>/etc/privoxy/config</filename> as its main configuration
- file.
-</para>
-<para>
- <screen>
- # /etc/rc.d/init.d/privoxy start
-</screen>
-</para>
-<para>
- Or ...
-</para>
-<para>
- <screen>
- # service privoxy start
-</screen>
-</para>
-</sect2>
-
-<sect2 id="start-debian">
-<title>Debian</title>
-<para>
- We use a script. Note that Debian typically starts &my-app; upon booting per
- default. It will use the file
- <filename>/etc/privoxy/config</filename> as its main configuration
- file.
-</para>
-<para>