📄 geoip_isp_maxmind.pm
字号:
#!/usr/bin/perl#-----------------------------------------------------------------------------# GeoIp_Isp_Maxmind AWStats plugin# This plugin allow you to add a city report.# Need the licensed ISP database from Maxmind.#-----------------------------------------------------------------------------# Perl Required Modules: Geo::IP or Geo::IP::PurePerl#-----------------------------------------------------------------------------# $Revision: 1.9 $ - $Author: eldy $ - $Date: 2006/05/06 02:54:48 $# <-----# ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULESuse vars qw/ $type /;$type='geoip';if (!eval ('require "Geo/IP.pm";')) { $error1=$@; $type='geoippureperl'; if (!eval ('require "Geo/IP/PurePerl.pm";')) { $error2=$@; $ret=($error1||$error2)?"Error:\n$error1$error2":""; $ret.="Error: Need Perl module Geo::IP or Geo::IP::PurePerl"; return $ret; }}# ----->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="6.2";my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory";# -----># <-----# IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE.use vars qw/$geoip_isp_maxmind%_isp_p%_isp_h%_isp_k%_isp_l$MAXNBOFSECTIONGIR$MAXLENGTH/;# ----->#-----------------------------------------------------------------------------# PLUGIN FUNCTION: Init_pluginname#-----------------------------------------------------------------------------sub Init_geoip_isp_maxmind { my $InitParams=shift; my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); $MAXNBOFSECTIONGIR=10; $MAXLENGTH=20; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin geoip_isp_maxmind: InitParams=$InitParams",1); my ($mode,$datafile)=split(/\s+/,$InitParams,2); if (! $datafile) { $datafile="GeoIPIsp.dat"; } if ($type eq 'geoippureperl') { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::PurePerl::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::PurePerl::GEOIP_STANDARD(); } } else { if ($mode eq '' || $mode eq 'GEOIP_MEMORY_CACHE') { $mode=Geo::IP::GEOIP_MEMORY_CACHE(); } else { $mode=Geo::IP::GEOIP_STANDARD(); } } %TmpDomainLookup=(); debug(" Plugin geoip_isp_maxmind: GeoIP initialized type=$type mode=$mode",1); if ($type eq 'geoippureperl') { $geoip_isp_maxmind = Geo::IP::PurePerl->open($datafile, $mode); } else { $geoip_isp_maxmind = Geo::IP->open($datafile, $mode); }# Fails on some GeoIP version# debug(" Plugin geoip_isp_maxmind: GeoIP initialized database_info=".$geoip_isp_maxmind->database_info()); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions");}#-----------------------------------------------------------------------------# PLUGIN FUNCTION: AddHTMLMenuLink_pluginname# UNIQUE: NO (Several plugins using this function can be loaded)#-----------------------------------------------------------------------------sub AddHTMLMenuLink_geoip_isp_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- if ($Debug) { debug(" Plugin geoip_isp_maxmind: AddHTMLMenuLink"); } if ($categ eq 'who') { $menu->{'plugin_geoip_isp_maxmind'}=0.6; # Pos $menulink->{'plugin_geoip_isp_maxmind'}=2; # Type of link $menutext->{'plugin_geoip_isp_maxmind'}="ISP"; # Text } # -----> return 0;}#-----------------------------------------------------------------------------# PLUGIN FUNCTION: AddHTMLGraph_pluginname# UNIQUE: NO (Several plugins using this function can be loaded)#-----------------------------------------------------------------------------sub AddHTMLGraph_geoip_isp_maxmind { my $categ=$_[0]; my $menu=$_[1]; my $menulink=$_[2]; my $menutext=$_[3]; # <----- my $ShowISP='H'; $MinHit{'Isp'}=1; my $total_p; my $total_h; my $total_k; my $rest_p; my $rest_h; my $rest_k; if ($Debug) { debug(" Plugin geoip_isp_maxmind: AddHTMLGraph $categ $menu $menulink $menutext"); } my $title='ISP'; &tab_head("$title",19,0,'isp'); print "<tr bgcolor=\"#$color_TableBGRowTitle\"><th>ISP : ".((scalar keys %_isp_h)-($_isp_h{'unknown'}?1:0))."</th>"; if ($ShowISP =~ /P/i) { print "<th bgcolor=\"#$color_p\" width=\"80\">$Message[56]</th>"; } if ($ShowISP =~ /P/i) { print "<th bgcolor=\"#$color_p\" width=\"80\">$Message[15]</th>"; } if ($ShowISP =~ /H/i) { print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[57]</th>"; } if ($ShowISP =~ /H/i) { print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[15]</th>"; } if ($ShowISP =~ /B/i) { print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[75]</th>"; } if ($ShowISP =~ /L/i) { print "<th width=\"120\">$Message[9]</th>"; } print "</tr>\n"; $total_p=$total_h=$total_k=0; my $count=0; &BuildKeyList($MaxRowsInHTMLOutput,$MinHit{'Isp'},\%_isp_h,\%_isp_h); foreach my $key (@keylist) { if ($key eq 'unknown') { next; } my $p_p; my $p_h; if ($TotalPages) { $p_p=int($_isp_p{$key}/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($_isp_h{$key}/$TotalHits*1000)/10; } print "<tr>"; my $isp=$key; $isp =~ s/_/ /g; print "<td class=\"aws\">".ucfirst($isp)."</td>"; if ($ShowISP =~ /P/i) { print "<td>".($_isp_p{$key}?$_isp_p{$key}:" ")."</td>"; } if ($ShowISP =~ /P/i) { print "<td>".($_isp_p{$key}?"$p_p %":' ')."</td>"; } if ($ShowISP =~ /H/i) { print "<td>".($_isp_h{$key}?$_isp_h{$key}:" ")."</td>"; } if ($ShowISP =~ /H/i) { print "<td>".($_isp_h{$key}?"$p_h %":' ')."</td>"; } if ($ShowISP =~ /B/i) { print "<td>".Format_Bytes($_isp_k{$key})."</td>"; } if ($ShowISP =~ /L/i) { print "<td>".($_isp_p{$key}?Format_Date($_isp_l{$key},1):'-')."</td>"; } print "</tr>\n"; $total_p += $_isp_p{$key}||0; $total_h += $_isp_h{$key}; $total_k += $_isp_k{$key}||0; $count++; } if ($Debug) { debug("Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h",2); } $rest_p=0; $rest_h=$TotalHits-$total_h; $rest_k=0; if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other cities# print "<tr>";# print "<td class=\"aws\"> </td>";# if ($ShowISP =~ /P/i) { print "<td> </td>"; }# if ($ShowISP =~ /P/i) { print "<td> </td>"; }# if ($ShowISP =~ /H/i) { print "<td> </td>"; }# if ($ShowISP =~ /H/i) { print "<td> </td>"; }# if ($ShowISP =~ /B/i) { print "<td> </td>"; }# if ($ShowISP =~ /L/i) { print "<td> </td>"; }# print "</tr>\n"; my $p_p; my $p_h; if ($TotalPages) { $p_p=int($rest_p/$TotalPages*1000)/10; } if ($TotalHits) { $p_h=int($rest_h/$TotalHits*1000)/10; } print "<tr>"; print "<td class=\"aws\"><span style=\"color: #$color_other\">$Message[2]/$Message[0]</span></td>"; if ($ShowISP =~ /P/i) { print "<td>".($rest_p?$rest_p:" ")."</td>"; } if ($ShowISP =~ /P/i) { print "<td>".($rest_p?"$p_p %":' ')."</td>"; } if ($ShowISP =~ /H/i) { print "<td>".($rest_h?$rest_h:" ")."</td>"; } if ($ShowISP =~ /H/i) { print "<td>".($rest_h?"$p_h %":' ')."</td>"; } if ($ShowISP =~ /B/i) { print "<td>".Format_Bytes($rest_k)."</td>"; } if ($ShowISP =~ /L/i) { print "<td> </td>"; } print "</tr>\n"; } &tab_end(); # -----> return 0;}#-----------------------------------------------------------------------------# PLUGIN FUNCTION: ShowInfoHost_pluginname# UNIQUE: NO (Several plugins using this function can be loaded)# Function called to add additionnal columns to the Hosts report.# This function is called when building rows of the report (One call for each# row). So it allows you to add a column in report, for example with code :# print "<TD>This is a new cell for $param</TD>";# Parameters: Host name or ip#-----------------------------------------------------------------------------sub ShowInfoHost_geoip_isp_maxmind { my $param="$_[0]"; # <----- if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)output(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; my $NewLinkTarget=''; if ($DetailedReportsOnNewWindows) { $NewLinkTarget=" target=\"awstatsbis\""; } if (($FrameName eq 'mainleft' || $FrameName eq 'mainright') && $DetailedReportsOnNewWindows < 2) { $NewLinkParams.="&framename=mainright"; $NewLinkTarget=" target=\"mainright\""; } $NewLinkParams =~ s/(&|&)+/&/i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -