-
-
24 Apr 2009 03:47:20 UTC
- Distribution: Apache-GeoIP
- Module version: 1.99
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Issues (1)
- Testers (1 / 0 / 0)
- Kwalitee
Bus factor: 0- % Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (20.96KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- Geo::IP
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Apache2::Geo::Mirror - Find closest Mirror
SYNOPSIS
# in httpd.conf # PerlModule Apache2::HelloMirror #<Location /mirror> # SetHandler perl-script # PerlResponseHandler Apache2::HelloMirror # PerlSetVar GeoIPDBFile "/usr/local/share/GeoIP/GeoIP.dat" # PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" # PerlSetVar GeoIPDefault "http://www.cpan.org/" #</Location> # file Apache2::HelloMirror use Apache2::Geo::Mirror; use strict; use Apache2::Const -compile => 'OK'; sub handler { my $r = Apache2::Geo::Mirror->new(shift); $r->content_type('text/plain'); my $mirror = $r->find_mirror_by_addr(); $r->print($mirror); Apache2::Const::OK; } 1;
DESCRIPTION
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.
CONFIGURATION
This module subclasses Apache2::RequestRec, and can be used as follows in an Apache module.
# file Apache2::HelloMirror use Apache2::Geo::Mirror; use strict; sub handler { my $r = Apache2::Geo::Mirror->new(shift); # continue along }
The
PerlSetVar
directives in httpd.conf are as follows:<Location /mirror> PerlSetVar GeoIPDBFile "/usr/local/share/geoip/GeoIP.dat" PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" PerlSetVar GeoIPDefault "http://www.cpan.org/" PerlSetVar GeoIPFresh 2 # other directives </Location>
The directives available are
- PerlSetVar GeoIPDBFile "/path/to/GeoIP.dat"
-
This specifies the location of the GeoIP.dat file. If not given, it defaults to the location specified upon installing the module.
- PerlSetVar GeoIPFresh 5
-
This specifies a minimum freshness that the chosen mirror must satisfy. If this is not specified, a value of 0 is assumed.
- PerlSetVar GeoIPMirror "/path/to/mirror.txt"
-
This specifies the location of a file containing the list of available mirrors. No default location for this file is assumed. This file contains a list of mirror sites and the corresponding country code in the format
http://some.server.com/some/path us ftp://some.other.server.fr/somewhere fr
An optional third field may be specified, such as
ftp://some.other.server.ca/somewhere ca 3
where the third number indicates the freshness of the mirror. A default freshness of 0 is assumed when none is specified. When choosing a mirror, if the GeoIPFresh directive is specified, only those mirrors with a freshness equal to or above this value may be chosen.
- PerlSetVar GeoIPDefault "http://some.where.org/"
-
This specifies the default url to be used if no nearby mirror is found. Multiple values may be specified using PerlAddVar; if more than one default is given, a random one will be chosen.
- PerlSetVar GeoIPXForwardedFor 1
-
If this directive is set to something true, the X-Forwarded-For header will be used to try to identify the originating IP address; this is useful for clients connecting to a web server through an HTTP proxy or load balancer. If this header is not present,
$r->connection->remote_ip
will be used.
METHODS
The available methods are as follows.
- $mirror = $r->find_mirror_by_country( [$country] );
-
Finds the nearest mirror by country code. If $country is not given, this defaults to the country as specified by a lookup of
$r->connection->remote_ip
. - $mirror = $r->find_mirror_by_addr( [$ipaddr] );
-
Finds the nearest mirror by IP address. If $ipaddr is not given, the value obtained by examining the X-Forwarded-For header will be used, if GeoIPXForwardedFor is used, or else
$r->connection->remote_ip
is used. - $gm = $r->gm;
-
Returns the Geo::IP::Mirror object.
AUTOMATIC REDIRECTION
If Apache2::Geo::Mirror is used as
PerlModule Apache2::Geo::Mirror <Location /CPAN> PerlSetVar GeoIPDBFile "/usr/local/share/geoip/GeoIP.dat" PerlSetVar GeoIPMirror "/usr/local/share/data/mirror.txt" PerlSetVar GeoIPDefault "http://www.cpan.org/" PerlResponseHandler Apache2::Geo::Mirror->auto_redirect </Location>
then an automatic redirection is made. Within this, the directive
PerlSetVar GeoIPRobot "/path/to/a/robots.txt"
can be used to handle robots that honor a robots.txt file. This can be a physical file that exists on the system or, if it is set to the special value default, the string
User-agent: * Disallow: /
will be used, which disallows robot access to anything.
Within automatic redirection, the X-Forwarded-For header wil be used to try to infer the IP address of the client.
SEE ALSO
Geo::IP, Geo::Mirror, and Apache2::RequestRec.
AUTHOR
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, 2009 Randy Kobes < randy.kobes@gmail.com >.
All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Module Install Instructions
To install Apache::GeoIP, copy and paste the appropriate command in to your terminal.
cpanm Apache::GeoIP
perl -MCPAN -e shell install Apache::GeoIP
For more information on module installation, please visit the detailed CPAN module installation guide.