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

📄 geoip.pm

📁 awstats-6.6.zip tomcat日志分析包linux
💻 PM
字号:
#!/usr/bin/perl#-----------------------------------------------------------------------------# GeoIp Maxmind AWStats plugin# This plugin allow you to get country report with countries detected# from a Geographical database (GeoIP internal database) instead of domain# hostname suffix.# Need the country database from Maxmind (free).#-----------------------------------------------------------------------------# Perl Required Modules: Geo::IP or Geo::IP::PurePerl#-----------------------------------------------------------------------------# $Revision: 1.24 $ - $Author: eldy $ - $Date: 2006/05/06 02:51:34 $# <-----# 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="5.4";my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName ShowInfoHost";# -----># <-----# IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE.use vars qw/%TmpDomainLookup$gi/;# ----->#-----------------------------------------------------------------------------# PLUGIN FUNCTION: Init_pluginname#-----------------------------------------------------------------------------sub Init_geoip {	my $InitParams=shift;	my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion);	# <-----	# ENTER HERE CODE TO DO INIT PLUGIN ACTIONS	debug(" Plugin geoip: InitParams=$InitParams",1);   	my ($mode,$datafile)=split(/\s+/,$InitParams,2);   	if (! $datafile) { $datafile="GeoIP.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: GeoIP initialized type=$type mode=$mode",1);	if ($type eq 'geoippureperl') {		$gi = Geo::IP::PurePerl->open($datafile, $mode);	} else {		$gi = Geo::IP->open($datafile, $mode);	}# Fails on some GeoIP version# 	debug(" Plugin geoip: GeoIP initialized database_info=".$gi->database_info());	# ----->	return ($checkversion?$checkversion:"$PluginHooksFunctions");}#-----------------------------------------------------------------------------# 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 code in lower case.#-----------------------------------------------------------------------------sub GetCountryCodeByAddr_geoip {    my $param="$_[0]";	# <-----	my $res=$TmpDomainLookup{$param}||'';	if (! $res) {		$res=lc($gi->country_code_by_addr($param)) || 'unknown';		$TmpDomainLookup{$param}=$res;		if ($Debug) { debug("  Plugin geoip: GetCountryCodeByAddr for $param: [$res]",5); }	}	elsif ($Debug) { debug("  Plugin geoip: GetCountryCodeByAddr for $param: Already resolved to [$res]",5); }	# ----->	return $res;}#-----------------------------------------------------------------------------# 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 code in lower case.#-----------------------------------------------------------------------------sub GetCountryCodeByName_geoip {    my $param="$_[0]";	# <-----	my $res=$TmpDomainLookup{$param}||'';	if (! $res) {		$res=lc($gi->country_code_by_name($param)) || 'unknown';		$TmpDomainLookup{$param}=$res;		if ($Debug) { debug("  Plugin geoip: GetCountryCodeByName for $param: [$res]",5); }	}	elsif ($Debug) { debug("  Plugin geoip: GetCountryCodeByName for $param: Already resolved to [$res]",5); }	# ----->	return $res;}#-----------------------------------------------------------------------------# 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 {    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 =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//;    	if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; }		print "<th width=\"80\">";        print "<a href=\"#countries\">GeoIP<br />Country</a>";        print "</th>";	}	elsif ($param) {        my $ip=0;		my $key;		if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {	# IPv4 address		    $ip=4;			$key=$param;		}		elsif ($param =~ /^[0-9A-F]*:/i) {						# IPv6 address		    $ip=6;			$key=$param;		}		print "<td>";		if ($key && $ip==4) {        	my $res=lc($gi->country_code_by_addr($param)) if $gi;        	if ($Debug) { debug("  Plugin geoip: GetCountryByIp for $param: [$res]",5); }		    if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"<span style=\"color: #$color_other\">$Message[0]</span>"; }		    else { print "<span style=\"color: #$color_other\">$Message[0]</span>"; }		}		if ($key && $ip==6) {		    print "<span style=\"color: #$color_other\">$Message[0]</span>";		}		if (! $key) {        	my $res=lc($gi->country_code_by_name($param)) if $gi;        	if ($Debug) { debug("  Plugin geoip: GetCountryByHostname for $param: [$res]",5); }		    if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"<span style=\"color: #$color_other\">$Message[0]</span>"; }		    else { print "<span style=\"color: #$color_other\">$Message[0]</span>"; }		}		print "</td>";	}	else {		print "<td>&nbsp;</td>";	}	return 1;	# ----->}1;	# Do not remove this line

⌨️ 快捷键说明

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