]> git.ipfire.org Git - thirdparty/AWStats.git/commitdiff
Added geoipfree plugin (same than geoip but use Geo::IPfree perl module).
authoreldy <>
Sat, 22 Mar 2003 01:55:25 +0000 (01:55 +0000)
committereldy <>
Sat, 22 Mar 2003 01:55:25 +0000 (01:55 +0000)
wwwroot/cgi-bin/plugins/geoip.pm
wwwroot/cgi-bin/plugins/geoipfree.pm [new file with mode: 0644]

index 5a9bde2ab3f76f04c555e0468003c2aee705a33b..4498fcd72908b121948d85fee3201ab598eee2ba 100644 (file)
@@ -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 (file)
index 0000000..724e48e
--- /dev/null
@@ -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