# ********************************************************************
#
# File : $Source: /cvsroot/ijbswa/current/default.filter,v $
#
# $Id: default.filter,v 1.11.2.23 2004/02/17 13:34:01 oes Exp $
#
# Purpose : Rules to process the content of web pages
#
# Copyright : Written by and Copyright (C) 2001 - 2004 the
# Privoxy team. http://www.privoxy.org/
#
# We value your feedback. However, to provide you with the best support,
# please note:
#
# * Use the support forum to get help:
# http://sourceforge.net/tracker/?group_id=11118&atid=211118
# * Submit bugs only thru our bug forum:
# http://sourceforge.net/tracker/?group_id=11118&atid=111118
# Make sure that the bug has not already been submitted. Please try
# to verify that it is a Privoxy bug, and not a browser or site
# bug first. If you are using your own custom configuration, please
# try the stock configs to see if the problem is a configuration
# related bug. And if not using the latest development snapshot,
# please try the latest one. Or even better, CVS sources.
# * Submit feature requests only thru our feature request forum:
# http://sourceforge.net/tracker/?atid=361118&group_id=11118&func=browse
#
# For any other issues, feel free to use the mailing lists:
# http://sourceforge.net/mail/?group_id=11118
#
# Anyone interested in actively participating in development and related
# discussions can join the appropriate mailing list here:
# http://sourceforge.net/mail/?group_id=11118. Archives are available
# here too.
#
#################################################################################
#
# Syntax:
#
# Filters start with a line "FILTER: name description". They are then referrable
# from the actionsfile with +filter{name}
#
# Inside the filters, write one Perl-Style substitution (job) per line.
# Jobs that precede the first FILTER: line are ignored.
#
# For Details see the pcrs manpage contained in this distribution.
# (and the perlre, perlop and pcre manpages)
#
# Note that you are free to choose the delimter as you see fit.
#
# Note2: In addidion to the Perl options gimsx, the following nonstandard
# options are supported:
#
# 'U' turns the default to ungreedy matching. Add ? to quantifiers to
# switch back to greedy.
# 'T' (trivial) prevents parsing for backreferences in the substitute.
# Use if you want to include text like '$&' in your substitute without
# quoting.
#
#################################################################################
#################################################################################
#
# js-annoyances: Get rid of particularly annoying JavaScript abuse
#
#################################################################################
FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
# Note: Most of these jobs would be safer if restricted to a
# )|$1never|sigU
# If we allow window.open, we want normal window features:
# Test: http://www.htmlgoodies.com/beyond/notitle.html
#
s/((?:open\s*\([^\)]+|["',])resizable=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])location=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])status=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])scroll(?:ing|bars|able)=)(["']?)(?:no|0)\2/$1$2auto$2/sigU
s/((?:open\s*\([^\)]+|["',])menubar=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])toolbar=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])directories=)(["']?)(?:no|0)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])fullscreen=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
s/((?:open\s*\([^\)]+|["',])always(?:raised|lowered)=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
s/((?:open\s*\([^\)]+|["',])z-?lock=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
s/((?:open\s*\([^\)]+|["',])hotkeys=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
s/((?:open\s*\([^\)]+|["',])titlebar=)(["']?)(?:yes|1)\2/$1$2yes$2/sigU
s/((?:open\s*\([^\)]+|["',])always(?:raised|lowered)=)(["']?)(?:yes|1)\2/$1$2no$2/sigU
#s%%%sigU
s%%%sigU
#################################################################################
#
# js-events: Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites)
#
#################################################################################
FILTER: js-events Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites)
s/(on|event\.)((mouse(over|out|down|up|move))|(un)?load|contextmenu|selectstart)/never/ig
# Not events, but abused on the same type of sites:
s/(alert|confirm)\s*\(/concat(/ig
s/settimeout\(/concat(/ig
s/code=['"]([^'">]*)\.class['"]/code="$1"/sig
s/