Log-Saftpresse

 view release on metacpan or  search on metacpan

lib/Log/Saftpresse/Plugin/GeoIP.pm  view on Meta::CPAN

package Log::Saftpresse::Plugin::GeoIP;

use Moose;

# ABSTRACT: plugin to lookup geoip database
our $VERSION = '1.6'; # VERSION

extends 'Log::Saftpresse::Plugin';

has 'address_fields' => ( is => 'ro', isa => 'Str', default => 'client_ip' );

has '_address_fields' => ( is => 'ro', isa => 'ArrayRef', lazy => 1,
	default => sub {
		my $self = shift;
		return( [ split(/\s*,\s*/, $self->address_fields) ] );
	},
);

use Geo::IP;

sub process {
	my ( $self, $stash ) = @_;
	my $addr;

	foreach my $field ( @{$self->_address_fields} ) {
		if( defined $stash->{$field} ) {
			$addr = $stash->{'client_ip'};
		}
	}

	if( ! defined $addr ) {
		return;
	}

	my $cc = $self->_geoip->country_code_by_addr( $addr );
	if( defined $cc ) {
		$stash->{'geoip_cc'} = $cc;
	} else {
		$stash->{'geoip_cc'} = 'unknown';
	}

	return;
}

has 'database' => ( is => 'ro', isa => 'Str', default => '/usr/share/GeoIP/GeoIP.dat' );

has '_geoip' => (
	is => 'ro', isa => 'Geo::IP', lazy => 1,
	default => sub {
		my $self = shift;
		return Geo::IP->open( $self->database, GEOIP_STANDARD );
	},
);

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Log::Saftpresse::Plugin::GeoIP - plugin to lookup geoip database

=head1 VERSION

version 1.6

=head1 AUTHOR



( run in 3.108 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )