Apache2::Apache::Geo::Mirror |
Apache::Geo::Mirror - Find closest Mirror
# in httpd.conf # PerlModule Apache::HelloMirror #<Location /mirror> # SetHandler perl-script # PerlHandler Apache::HelloMirror # PerlSetVar GeoIPDBFile "/usr/local/share/GeoIP/GeoIP.dat" # PerlSetVar GeoIPFlag Standard # PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" # PerlSetVar GeoIPDefault it #</Location> # file Apache::HelloMirror use Apache::Geo::Mirror; use strict; use Apache::Const -compile => 'OK'; sub handler { my $r = Apache::Geo::Mirror->new(shift); $r->content_type('text/plain'); my $mirror = $r->find_mirror_by_addr(); $r->print($mirror); Apache::OK; } 1;
This module provides a mod_perl (version 2) interface to the Geo::Mirror module, which finds the closest mirror for an IP address. It uses Geo::IP to identify the country that the IP address originated from. If the country is not represented in the mirror list, then it finds the closest country using a latitude/longitude table.
This module subclasses Apache::RequestRec, and can be used as follows in an Apache module.
# file Apache::HelloMirror
use Apache::Geo::Mirror; use strict;
sub handler { my $r = Apache::Geo::Mirror->new(shift); # continue along }
The directives in F<httpd.conf> are as follows:
<Location /mirror> PerlSetVar GeoIPDBFile "/usr/local/share/geoip/GeoIP.dat" PerlSetVar GeoIPFlag Standard PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" PerlSetVar GeoIPDefault us # other directives </Location>
The C<PerlSetVar> directives available are
http://some.server.com/some/path us ftp://some.other.server.fr/somewhere fr
No default location for this file is assumed.
The available methods are as follows.
$r->connection->remote_ip
.
$r->connection->remote_ip
.
$r->get_remote_host(Apache::REMOTE_HOST)
.
If Apache::Geo::Mirror is used as
PerlModule Apache::Geo::Mirror <Location /CPAN> PerlSetVar GeoIPDBFile "/usr/local/share/geoip/GeoIP.dat" PerlSetVar GeoIPFlag Standard PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" PerlSetVar GeoIPDefault us PerlResponseHandler Apache::Geo::Mirror->auto_redirect </Location>
then an automatic redirection is made.
0.10
the Geo::IP manpage, the Geo::Mirror manpage, and the Apache::RequestRec manpage.
The look-up code for associating a country with an IP address is based on the GeoIP library and the Geo::IP Perl module, and is Copyright (c) 2002, T.J. Mather, tjmather@tjmather.com, New York, NY, USA. See http://www.maxmind.com/ for details. The mod_perl interface is Copyright (c) 2002, Randy Kobes <randy@theoryx5.uwinnipeg.ca>.
All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Apache2::Apache::Geo::Mirror |