1 |
dpavlin |
11 |
package Net::Analysis::Listener::Maps; |
2 |
dpavlin |
1 |
|
3 |
|
|
use strict; |
4 |
|
|
use warnings; |
5 |
|
|
use base qw(Net::Analysis::Listener::Base); |
6 |
|
|
use File::Slurp; |
7 |
|
|
|
8 |
|
|
sub http_transaction { |
9 |
|
|
my ($self, $args) = @_; |
10 |
|
|
my ($req) = $args->{req}; # isa HTTP::Request |
11 |
|
|
my ($resp) = $args->{resp}; # isa HTTP::Response |
12 |
|
|
my ($req_mono) = $args->{req_mono}; # isa Net::Analysis::TCPMonologue |
13 |
|
|
my ($resp_mono) = $args->{resp_mono}; # isa Net::Analysis::TCPMonologue |
14 |
|
|
|
15 |
dpavlin |
12 |
my $file; |
16 |
dpavlin |
1 |
|
17 |
|
|
if ( $req->uri() =~ m!/GElin/MapSrv\.aspx\?lwM=(\d+)&twM=(\d+)&zf=(\d+)! ) { |
18 |
dpavlin |
11 |
# Mireo |
19 |
dpavlin |
12 |
$file = "$3/$1-$2.gif"; |
20 |
dpavlin |
11 |
} elsif ( $req->uri() =~ m!/mt\?.*x=(\d+)&y=(\d+)&zoom=(\d+)! ) { |
21 |
|
|
# Google maps |
22 |
dpavlin |
12 |
$file = "$3/$1-$2.png"; |
23 |
|
|
} elsif ( $req->uri() =~ m!/aerial.maps.yimg.com/img.*&x=(\d+)&y=(\d+)&z=(\d+)&v=1\.7! ) { |
24 |
|
|
# Yahoo maps |
25 |
|
|
$file = "$3/$1-$2.jpg"; |
26 |
dpavlin |
11 |
} |
27 |
|
|
|
28 |
dpavlin |
12 |
if ( $file ) { |
29 |
dpavlin |
1 |
mkdir "dump" unless -e "dump"; |
30 |
|
|
mkdir "dump/$3" unless -e "dump/$3"; |
31 |
dpavlin |
12 |
write_file( "dump/$file", $resp->content ); |
32 |
|
|
print "$1x$2 zoom: $3 -> $file ", -s "dump/$file", " bytes\n"; |
33 |
|
|
} else { |
34 |
|
|
print ">> ",$req->uri, "\n"; |
35 |
dpavlin |
1 |
} |
36 |
dpavlin |
11 |
|
37 |
dpavlin |
12 |
|
38 |
dpavlin |
1 |
} |
39 |
|
|
|
40 |
|
|
1; |
41 |
|
|
|
42 |
|
|
=head1 NAME |
43 |
|
|
|
44 |
dpavlin |
11 |
Net::Analysis::Listener::Maps - looking at HTTP transactions |
45 |
dpavlin |
1 |
|
46 |
dpavlin |
11 |
$ perl -MNet::Analysis -e main HTTP Maps maps_dump.tcp |
47 |
dpavlin |
1 |
|