1#!/usr/bin/perl -w 2 3# script kindly offered by glb (Eric Cassagnard) 4 5use HTTP::Proxy qw( :log ); 6use HTTP::Proxy::BodyFilter::tags; 7use HTTP::Proxy::BodyFilter::simple; 8use HTTP::Proxy::BodyFilter::htmltext; 9use strict; 10 11my $proxy = HTTP::Proxy->new(@ARGV); 12 13my %noaccent = ( 14 Agrave => 'A', Aacute => 'A', Acirc => 'A', Atilde => 'A', 15 Auml => 'A', Aring => 'A', AElig => 'AE', Ccedil => 'C', 16 Egrave => 'E', Eacute => 'E', Ecirc => 'E', Euml => 'E', 17 Igrave => 'I', Iacute => 'I', Icirc => 'I', Iuml => 'I', 18 Ntilde => 'N', Ograve => 'O', Oacute => 'O', Ocirc => 'O', 19 Otile => 'O', Ouml => 'O', Oslash => 'O', Ugrave => 'U', 20 Uacute => 'U', Ucirc => 'U', Uuml => 'U', Yacute => 'Y', 21 agrave => 'a', aacute => 'a', acirc => 'a', atilde => 'a', 22 auml => 'a', aring => 'a', aelig => 'ae', ccedil => 'c', 23 egrave => 'e', eacute => 'e', ecirc => 'e', euml => 'e', 24 igrave => 'i', iacute => 'i', icirc => 'i', iuml => 'i', 25 ntilde => 'n', ograve => 'o', oacute => 'o', ocirc => 'o', 26 otile => 'o', ouml => 'o', oslash => 'o', ugrave => 'u', 27 uacute => 'u', ucirc => 'u', uuml => 'u', yacute => 'y', 28 'yuml' => 'y', '�' => 'AE', '�' => 'ae', 29); 30my $re = join '|', sort keys %noaccent; 31 32my %sounds = ( 33 an => 'un', An => 'Un', au => 'oo', Au => 'Oo', a => 'e', 34 A => 'E', ew => 'oo', e => 'e-a', e => 'i', E => 'I', 35 f => 'ff', ir => 'ur', ow => 'oo', o => 'oo', O => 'Oo', 36 o => 'u', the => 'zee', The => 'Zee', th => 't', tion => 'shun', 37 u => 'oo', U => 'Oo', v => 'f', V => 'F', w => 'v', 38 W => 'V' ); 39my $sc = join '|', sort keys %sounds; 40 41$proxy->push_filter( 42 mime => 'text/html', 43 response => HTTP::Proxy::BodyFilter::tags->new, 44 response => HTTP::Proxy::BodyFilter::simple->new( 45 sub { ${ $_[ 1 ] } =~ s/&($re);/$noaccent{$1}/go; } 46 ), 47 response => HTTP::Proxy::BodyFilter::htmltext->new( 48 sub { 49 tr{�������������������������������������������������������} 50 {AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy}; 51 s/($sc)/$sounds{$1}/go; 52 s/([?!]+)/$1 Bork bork bork !/go ; 53 s/(\.+)(\s|$)/$1 Bork bork bork ! /go ; 54 } 55 ) 56); 57 58$proxy->start; 59 60