⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geoip_region_maxmind.pm

📁 awstats-6.6.zip tomcat日志分析包linux
💻 PM
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/perl#-----------------------------------------------------------------------------# GeoIp_Region_Maxmind AWStats plugin# This plugin allow you to add a region report with regions detected# from a Geographical database (US and Canada).# Need the licensed region database from Maxmind.#-----------------------------------------------------------------------------# Perl Required Modules: Geo::IP or Geo::IP::PurePerl#-----------------------------------------------------------------------------# $Revision: 1.12 $ - $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.5";my $PluginHooksFunctions="AddHTMLMenuLink AddHTMLGraph ShowInfoHost SectionInitHashArray SectionProcessIp SectionProcessHostname SectionReadHistory SectionWriteHistory";# -----># <-----# IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE.use vars qw/%TmpDomainLookup$geoip_region_maxmind%_region_p%_region_h%_region_k%_region_l$MAXNBOFSECTIONGIR%region/;my %countrylib=('ca'=>'Canada','us'=>'USA');my %countryregionlib=('ca'=>'Canadian Regions','us'=>'US regions');my %regca=('AB',"Alberta",'BC',"British Columbia",'MB',"Manitoba",'NB',"New Brunswick",'NF',"Newfoundland",'NS',"Nova Scotia",'NU',"Nunavut",'ON',"Ontario",'PE',"Prince Edward Island",'QC',"Quebec",'SK',"Saskatchewan",'NT',"Northwest Territories",'YT',"Yukon Territory");my %regus=('AA',"Armed Forces Americas",'AE',"Armed Forces Europe, Middle East, & Canada",'AK',"Alaska",'AL',"Alabama",'AP',"Armed Forces Pacific",'AR',"Arkansas",'AS',"American Samoa",'AZ',"Arizona",'CA',"California",'CO',"Colorado",'CT',"Connecticut",'DC',"District of Columbia",'DE',"Delaware",'FL',"Florida",'FM',"Federated States of Micronesia",'GA',"Georgia",'GU',"Guam",'HI',"Hawaii",'IA',"Iowa",'ID',"Idaho",'IL',"Illinois",'IN',"Indiana",'KS',"Kansas",'KY',"Kentucky",'LA',"Louisiana",'MA',"Massachusetts",'MD',"Maryland",'ME',"Maine",'MH',"Marshall Islands",'MI',"Michigan",'MN',"Minnesota",'MO',"Missouri",'MP',"Northern Mariana Islands",'MS',"Mississippi",'MT',"Montana",'NC',"North Carolina",'ND',"North Dakota",'NE',"Nebraska",'NH',"New Hampshire",'NJ',"New Jersey",'NM',"New Mexico",'NV',"Nevada",'NY',"New York",'OH',"Ohio",'OK',"Oklahoma",'OR',"Oregon",'PA',"Pennsylvania",'PR',"Puerto Rico",'PW',"Palau",'RI',"Rhode Island",'SC',"South Carolina",'SD',"South Dakota",'TN',"Tennessee",'TX',"Texas",'UT',"Utah",'VA',"Virginia",'VI',"Virgin Islands",'VT',"Vermont",'WA',"Washington",'WV',"West Virginia",'WI',"Wisconsin",'WY',"Wyoming");my %region=('ca'=>\%regca,'us'=>\%regus);# ----->#-----------------------------------------------------------------------------# PLUGIN FUNCTION: Init_pluginname#-----------------------------------------------------------------------------sub Init_geoip_region_maxmind {	my $InitParams=shift;	my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion);    $MAXNBOFSECTIONGIR=10;    	# <-----	# ENTER HERE CODE TO DO INIT PLUGIN ACTIONS	debug(" Plugin geoip_region_maxmind: InitParams=$InitParams",1);   	my ($mode,$datafile)=split(/\s+/,$InitParams,2);   	if (! $datafile) { $datafile="GeoIPRegion.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_region_maxmind: GeoIP initialized type=$type mode=$mode",1);	if ($type eq 'geoippureperl') {		$geoip_region_maxmind = Geo::IP::PurePerl->open($datafile, $mode);	} else {		$geoip_region_maxmind = Geo::IP->open($datafile, $mode);	}# Fails with some geoip versions# 	debug(" Plugin geoip_region_maxmind: GeoIP initialized database_info=".$geoip_region_maxmind->database_info()); 	# ----->	return ($checkversion?$checkversion:"$PluginHooksFunctions");}#-----------------------------------------------------------------------------# PLUGIN FUNCTION: AddHTMLMenuLink_pluginname# UNIQUE: NO (Several plugins using this function can be loaded)#-----------------------------------------------------------------------------sub AddHTMLMenuLink_geoip_region_maxmind {    my $categ=$_[0];    my $menu=$_[1];    my $menulink=$_[2];    my $menutext=$_[3];	# <-----	if ($Debug) { debug(" Plugin geoip_region_maxmind: AddHTMLMenuLink"); }    if ($categ eq 'who') {        $menu->{'plugin_geoip_region_maxmind'}=2.1;             # Pos        $menulink->{'plugin_geoip_region_maxmind'}=2;           # Type of link        $menutext->{'plugin_geoip_region_maxmind'}="Regions";   # Text    }	# ----->	return 0;}#-----------------------------------------------------------------------------# PLUGIN FUNCTION: AddHTMLGraph_pluginname# UNIQUE: NO (Several plugins using this function can be loaded)#-----------------------------------------------------------------------------sub AddHTMLGraph_geoip_region_maxmind {    my $categ=$_[0];    my $menu=$_[1];    my $menulink=$_[2];    my $menutext=$_[3];	# <-----    my $ShowRegions='H';	$MinHit{'Regions'}=1;	my $total_p; my $total_h; my $total_k;	my $rest_p; my $rest_h; my $rest_k;	if ($Debug) { debug(" Plugin geoip_region_maxmind: AddHTMLGraph"); }	my $title='Regions';	&tab_head("$title",19,0,'regions');	print "<tr bgcolor=\"#$color_TableBGRowTitle\"><th>US and CA Regions : ".((scalar keys %_region_h)-($_region_h{'unknown'}?1:0))."</th>";	if ($ShowRegions =~ /P/i) { print "<th bgcolor=\"#$color_p\" width=\"80\">$Message[56]</th>"; }	if ($ShowRegions =~ /P/i) { print "<th bgcolor=\"#$color_p\" width=\"80\">$Message[15]</th>"; }	if ($ShowRegions =~ /H/i) { print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[57]</th>"; }	if ($ShowRegions =~ /H/i) { print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[15]</th>"; }	if ($ShowRegions =~ /B/i) { print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[75]</th>"; }	if ($ShowRegions =~ /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{'Regions'},\%_region_h,\%_region_h);    # Group by country    my @countrylist=('ca','us');    foreach my $country (@countrylist) {	    print "<tr><td class=\"aws\"><b>".$countryregionlib{$country}."</b></td>";   		if ($ShowRegions =~ /P/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /P/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /H/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /H/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /B/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /L/i) { print "<td>&nbsp;</td>"; }        print "</tr>\n";    	foreach my $key (@keylist) {            if ($key eq 'unknown') { next; }   		    my ($countrycode,$regioncode)=split('_',$key);            if ($countrycode ne $country) { next; }   			my $p_p; my $p_h;   			if ($TotalPages) { $p_p=int($_region_p{$key}/$TotalPages*1000)/10; }   			if ($TotalHits)  { $p_h=int($_region_h{$key}/$TotalHits*1000)/10; }   		    print "<tr><td class=\"aws\">".$region{$countrycode}{uc($regioncode)}." ($regioncode)</td>";    		if ($ShowRegions =~ /P/i) { print "<td>".($_region_p{$key}?$_region_p{$key}:"&nbsp;")."</td>"; }    		if ($ShowRegions =~ /P/i) { print "<td>".($_region_p{$key}?"$p_p %":'&nbsp;')."</td>"; }    		if ($ShowRegions =~ /H/i) { print "<td>".($_region_h{$key}?$_region_h{$key}:"&nbsp;")."</td>"; }    		if ($ShowRegions =~ /H/i) { print "<td>".($_region_h{$key}?"$p_h %":'&nbsp;')."</td>"; }    		if ($ShowRegions =~ /B/i) { print "<td>".Format_Bytes($_region_k{$key})."</td>"; }    		if ($ShowRegions =~ /L/i) { print "<td>".($_region_p{$key}?Format_Date($_region_l{$key},1):'-')."</td>"; }    		print "</tr>\n";    		$total_p += $_region_p{$key}||0;    		$total_h += $_region_h{$key};    		$total_k += $_region_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 regions	    print "<tr><td class=\"aws\">&nbsp;</td>";   		if ($ShowRegions =~ /P/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /P/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /H/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /H/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /B/i) { print "<td>&nbsp;</td>"; }   		if ($ShowRegions =~ /L/i) { print "<td>&nbsp;</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><td class=\"aws\"><span style=\"color: #$color_other\">$Message[2]/$Message[0]</span></td>";		if ($ShowRegions =~ /P/i) { print "<td>".($rest_p?$rest_p:"&nbsp;")."</td>"; }   		if ($ShowRegions =~ /P/i) { print "<td>".($rest_p?"$p_p %":'&nbsp;')."</td>"; }		if ($ShowRegions =~ /H/i) { print "<td>".($rest_h?$rest_h:"&nbsp;")."</td>"; }   		if ($ShowRegions =~ /H/i) { print "<td>".($rest_h?"$p_h %":'&nbsp;')."</td>"; }		if ($ShowRegions =~ /B/i) { print "<td>".Format_Bytes($rest_k)."</td>"; }		if ($ShowRegions =~ /L/i) { print "<td>&nbsp;</td>"; }		print "</tr>\n";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -