4bb07d
#!/usr/bin/perl
4bb07d
4bb07d
use strict;
4bb07d
use warnings;
4bb07d
use POSIX;
4bb07d
use LWP::Simple;
4bb07d
use File::Copy;
4bb07d
use Carp;
4bb07d
4bb07d
my $ipdb     = "GeoLiteCity.dat";
4bb07d
my $datadir  = "/usr/share/GeoIP/";
4bb07d
my $fullpath = $datadir . $ipdb;
4bb07d
my $url = "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz";
4bb07d
my $date = strftime "%Y%m%d", localtime;
4bb07d
4bb07d
# Do we have an existing IP database?
4bb07d
if ( -e $fullpath ) {
4bb07d
    print "Fetching " . $ipdb . " from " . $url . "\r\n";
4bb07d
    if ( is_success( getstore( $url, $datadir . "GeoLiteCity.dat.gz" ) ) ) {
4bb07d
        move( $fullpath, $datadir . $ipdb . "." . $date )
4bb07d
          || croak "Can't move the old database aside\r\n";
4bb07d
        system( 'gzip', '-d', $datadir . 'GeoLiteCity.dat.gz' );
4bb07d
        if ( $? ne 0 ) {
4bb07d
            croak "Could not uncompress database - exited $?\r\n";
4bb07d
        }
4bb07d
        print "GeoIP database updated. Old copy is at " . $ipdb . "." . $date
4bb07d
          . "\r\n";
4bb07d
    }
4bb07d
    else {
4bb07d
        croak "Fetch failed - try again later?\r\n";
4bb07d
    }
4bb07d
}
4bb07d
else {
4bb07d
    croak "You don't appear to have a valid GeoIP database installed..\r\n";
4bb07d
}
4bb07d