1#!/usr/bin/perl -w
2use HTTP::Proxy qw( :log );
3use HTTP::Proxy::BodyFilter::tags;
4use HTTP::Proxy::BodyFilter::simple;
5use HTTP::Proxy::BodyFilter::htmltext;
6use strict;
7
8my $proxy = HTTP::Proxy->new(@ARGV);
9
10my %noaccent = (
11    Agrave => 'A', Aacute => 'A', Acirc  => 'A',  Atilde => 'A',
12    Auml   => 'A', Aring  => 'A', AElig  => 'AE', Ccedil => 'C',
13    Egrave => 'E', Eacute => 'E', Ecirc  => 'E',  Euml   => 'E',
14    Igrave => 'I', Iacute => 'I', Icirc  => 'I',  Iuml   => 'I',
15    Ntilde => 'N', Ograve => 'O', Oacute => 'O',  Ocirc  => 'O',
16    Otile  => 'O', Ouml   => 'O', Oslash => 'O',  Ugrave => 'U',
17    Uacute => 'U', Ucirc  => 'U', Uuml   => 'U',  Yacute => 'Y',
18    agrave => 'a', aacute => 'a', acirc  => 'a',  atilde => 'a',
19    auml   => 'a', aring  => 'a', aelig  => 'ae', ccedil => 'c',
20    egrave => 'e', eacute => 'e', ecirc  => 'e',  euml   => 'e',
21    igrave => 'i', iacute => 'i', icirc  => 'i',  iuml   => 'i',
22    ntilde => 'n', ograve => 'o', oacute => 'o',  ocirc  => 'o',
23    otile  => 'o', ouml   => 'o', oslash => 'o',  ugrave => 'u',
24    uacute => 'u', ucirc  => 'u', uuml   => 'u',  yacute => 'y',
25    'yuml' => 'y', '�'    => 'AE', '�'   => 'ae',
26);
27
28my $re = join '|', sort keys %noaccent;
29
30$proxy->push_filter(
31    mime     => 'text/html',
32    response => HTTP::Proxy::BodyFilter::tags->new,      # protect tags
33    response => HTTP::Proxy::BodyFilter::simple->new(    # remove accents
34        sub { ${ $_[1] } =~ s/&($re);/$noaccent{$1}/go; }
35    ),
36    response => HTTP::Proxy::BodyFilter::htmltext->new(    # rot13
37        sub {
38            tr{�������������������������������������������������������}
39              {AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy};
40            tr/a-zA-z/n-za-mN-ZA-M/;
41        }
42    )
43);
44
45$proxy->start;
46
47