From: eldy <> Date: Sat, 22 Mar 2003 01:55:25 +0000 (+0000) Subject: Added geoipfree plugin (same than geoip but use Geo::IPfree perl module). X-Git-Tag: AWSTATS_5_5_BETA~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efefbb68993f0096e78f5b2c9d192c54b7947c42;p=thirdparty%2FAWStats.git Added geoipfree plugin (same than geoip but use Geo::IPfree perl module). --- diff --git a/wwwroot/cgi-bin/plugins/geoip.pm b/wwwroot/cgi-bin/plugins/geoip.pm index 5a9bde2a..4498fcd7 100644 --- a/wwwroot/cgi-bin/plugins/geoip.pm +++ b/wwwroot/cgi-bin/plugins/geoip.pm @@ -1,5 +1,4 @@ #!/usr/bin/perl -#!/usr/bin/perl #----------------------------------------------------------------------------- # GeoIp AWStats plugin # This plugin allow you to get AWStats country report with countries detected @@ -13,8 +12,7 @@ # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES -if (!eval ('require "Geo/IP.pm";')) { return "Error: Need Perl module Geo::IP"; } # For GeoIP -#if (!eval ('require "Geo/IPfree.pm";')) { return "Error: Need Perl module Geo::IPfree"; } # For GeoIPfree +if (!eval ('require "Geo/IP.pm";')) { return "Error: Need Perl module Geo::IP"; } # -----> use strict;no strict "refs"; @@ -39,13 +37,6 @@ $gi # -----> -# For manual test -#$gi = Geo::IPfree::new(); -# 10.230.17.130 -> us 80.8.56.15 -> fr -#my ($res,undef)=$gi->LookUp("80.8.56.15"); if ($res !~ /\w\w/) { $res='ip'; } -#print $res; - - #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- @@ -61,8 +52,7 @@ sub Init_geoip { else { $mode=Geo::IP::GEOIP_STANDARD(); } %TmpDomainLookup=(); debug(" GeoIP working in mode $mode",1); - $gi = Geo::IP->new($mode); # For GeoIP -# $gi = Geo::IPfree::new(); # For GeoIPfree + $gi = Geo::IP->new($mode); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); @@ -78,8 +68,7 @@ sub GetCountryCodeByName_geoip { # <----- my $res=$TmpDomainLookup{$_[0]}||''; if (! $res) { - $res=lc($gi->country_code_by_name($_[0])); # For GeoIP -# ($res,undef)=$gi->LookUp($_[0]); if ($res !~ /\w\w/) { $res='ip'; } # For GeoIPfree + $res=lc($gi->country_code_by_name($_[0])); $TmpDomainLookup{$_[0]}=$res; if ($Debug) { debug(" GetCountryCodeByName for $_[0]: $res",5); } } @@ -97,8 +86,7 @@ sub GetCountryCodeByAddr_geoip { # <----- my $res=$TmpDomainLookup{$_[0]}||''; if (! $res) { - $res=lc($gi->country_code_by_addr($_[0])); # For GeoIP -# ($res,undef)=$gi->LookUp($_[0]); if ($res !~ /\w\w/) { $res='ip'; } # For GeoIPfree + $res=lc($gi->country_code_by_addr($_[0])); $TmpDomainLookup{$_[0]}=$res; if ($Debug) { debug(" GetCountryCodeByAddr for $_[0]: $res",5); } } diff --git a/wwwroot/cgi-bin/plugins/geoipfree.pm b/wwwroot/cgi-bin/plugins/geoipfree.pm new file mode 100644 index 00000000..724e48e0 --- /dev/null +++ b/wwwroot/cgi-bin/plugins/geoipfree.pm @@ -0,0 +1,96 @@ +#!/usr/bin/perl +#----------------------------------------------------------------------------- +# GeoIpFree AWStats plugin +# This plugin allow you to get AWStats country report with countries detected +# from a Geographical database (GeoIP internal database) instead of domain +# hostname suffix. +#----------------------------------------------------------------------------- +# Perl Required Modules: Geo::IPfree +#----------------------------------------------------------------------------- +# $Revision$ - $Author$ - $Date$ + + +# <----- +# ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES +if (!eval ('require "Geo/IPfree.pm";')) { return "Error: Need Perl module Geo::IPfree"; } +# -----> +use strict;no strict "refs"; + + + +#----------------------------------------------------------------------------- +# PLUGIN VARIABLES +#----------------------------------------------------------------------------- +# <----- +# ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN +# AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. +my $PluginNeedAWStatsVersion="5.5"; +my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName"; +# -----> + +# <----- +# IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. +use vars qw/ +%TmpDomainLookup +$gi +/; +# -----> + + + +#----------------------------------------------------------------------------- +# PLUGIN FUNCTION: Init_pluginname +#----------------------------------------------------------------------------- +sub Init_geoipfree { + my $InitParams=shift; + my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); + + # <----- + # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS + debug(" InitParams=$InitParams",1); + %TmpDomainLookup=(); + $gi = Geo::IPfree::new(); + # -----> + + return ($checkversion?$checkversion:"$PluginHooksFunctions"); +} + + +#----------------------------------------------------------------------------- +# PLUGIN FUNCTION: GetCountryCodeByName_pluginname +# UNIQUE: YES (Only one plugin using this function can be loaded) +# GetCountryCodeByName is called to translate a host name into a country name. +#----------------------------------------------------------------------------- +sub GetCountryCodeByName_geoipfree { + # <----- + my $res=$TmpDomainLookup{$_[0]}||''; + if (! $res) { + ($res,undef)=$gi->LookUp($_[0]); if ($res !~ /\w\w/) { $res='ip'; } + $TmpDomainLookup{$_[0]}=$res; + if ($Debug) { debug(" GetCountryCodeByName for $_[0]: $res",5); } + } + elsif ($Debug) { debug(" GetCountryCodeByName for $_[0]: Already resolved to $res",5); } + return $res; + # -----> +} + +#----------------------------------------------------------------------------- +# PLUGIN FUNCTION: GetCountryCodeByAddr_pluginname +# UNIQUE: YES (Only one plugin using this function can be loaded) +# GetCountryCodeByAddr is called to translate an ip into a country name. +#----------------------------------------------------------------------------- +sub GetCountryCodeByAddr_geoipfree { + # <----- + my $res=$TmpDomainLookup{$_[0]}||''; + if (! $res) { + ($res,undef)=$gi->LookUp($_[0]); if ($res !~ /\w\w/) { $res='ip'; } + $TmpDomainLookup{$_[0]}=$res; + if ($Debug) { debug(" GetCountryCodeByAddr for $_[0]: $res",5); } + } + elsif ($Debug) { debug(" GetCountryCodeByAddr for $_[0]: Already resolved to $res",5); } + return $res; + # -----> +} + + +1; # Do not remove this line