$pos_referer = $pos_agent = $pos_query = $pos_gzipin = $pos_gzipout = $pos_compratio = -1;
$pos_emails = $pos_emailr = $pos_hostr = -1;
use vars qw/
-$lowerval
+$RunAsCli $lowerval
$LastLine $LastLineNumber $LastLineOffset $LastLineChecksum
$LastUpdate
$TotalUnique $TotalVisits $TotalHostsKnown $TotalHostsUnknown
$TotalKeyphrases $TotalKeywords $TotalDifferentKeyphrases $TotalDifferentKeywords
$TotalSearchEnginesPages $TotalSearchEnginesHits $TotalRefererPages $TotalRefererHits $TotalDifferentSearchEngines $TotalDifferentReferer
/;
+$RunAsCli = 0;
$lowerval = 0;
$LastLine = $LastLineNumber = $LastLineOffset = $LastLineChecksum = 0;
$LastUpdate = 0;
@BrowsersFamily=('msie','netscape');
@SessionsRange=('0s-30s','30s-2mn','2mn-5mn','5mn-15mn','15mn-30mn','30mn-1h','1h+');
%SessionsAverage=('0s-30s',15,'30s-2mn',75,'2mn-5mn',210,'5mn-15mn',600,'15mn-30mn',1350,'30mn-1h',2700,'1h+',3600);
-%LangBrowserToAwstats=('sq','al','ba','ba','cz','cz','de','de','en','en','nl','nl','bg','bg',
-'ca','es_cat','zh','cn','zh-tw','tw','ko','kr','da','dk','es','es','fi','fi','fr','fr',
-'el','gr','hu','hu','in','id','it','it','ja','jp','lv','lv','lt','lt','no','nn','pl','pl',
-'pt','pt','pt-br','br','ro','ro','ru','ru','sk','sk','sv','se','tr','tr','uk','ua','wlk','wlk');
+# Values reported by HTTP-Accept with AWStats code to use
+%LangBrowserToAwstats=('sq','al','ba','ba','bg','bg','zh-tw','tw','zh','cn','cz','cz',
+'da','dk','nl','nl','en','en','et','et','fi','fi','fr','fr',
+'de','de','el','gr','hu','hu','is','is','in','id','it','it',
+'ja','jp','ko','kr','lv','lv','no','nb','nb','nb','nn','nn','pl','pl','pt','pt','pt-br','br',
+'ro','ro','ru','ru','sr','sr','sk','sk','es','es','ca','es_cat','sv','se','tr','tr','uk','ua','wlk','wlk');
@HostAliases=();
@AllowAccessFromWebToFollowingAuthenticatedUsers=();
@DefaultFile = @SkipDNSLookupFor = ();
next;
}
if ($param =~ /^HostAliases/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @HostAliases,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @HostAliases,$elem; }
+ }
next;
}
# Special optional setup params
if ($param =~ /^SkipDNSLookupFor/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @SkipDNSLookupFor,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @SkipDNSLookupFor,$elem; }
+ }
next;
}
if ($param =~ /^AllowAccessFromWebToFollowingAuthenticatedUsers/) {
next;
}
if ($param =~ /^DefaultFile/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @DefaultFile,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @DefaultFile,$elem; }
+ }
next;
}
if ($param =~ /^SkipHosts/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @SkipHosts,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @SkipHosts,$elem; }
+ }
next;
}
if ($param =~ /^SkipUserAgents/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @SkipUserAgents,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @SkipUserAgents,$elem; }
+ }
next;
}
if ($param =~ /^SkipFiles/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @SkipFiles,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @SkipFiles,$elem; }
+ }
next;
}
if ($param =~ /^OnlyHosts/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @OnlyHosts,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @OnlyHosts,$elem; }
+ }
next;
}
if ($param =~ /^OnlyFiles/) {
- $value =~ s/\\\./\./g; $value =~ s/([^\\])\./$1\\\./g; $value =~ s/^\./\\\./; # Replace . into \.
- foreach my $elem (split(/\s+/,$value)) { push @OnlyFiles,$elem; }
+ foreach my $elem (split(/\s+/,$value)) {
+ if ($elem!~s/^REGEX://i) { $elem =~ s/\\\./\./g; $elem =~ s/([^\\])\./$1\\\./g; $elem =~ s/^\./\\\./; } # Replace . into \.
+ if ($elem) { push @OnlyFiles,$elem; }
+ }
next;
}
if ($param =~ /^NotPageList/) {
}
}
- # Show definitive values for major parameters
+ # Show definitive value for major parameters
if ($Debug) {
debug(" LogFile='$LogFile'",2);
debug(" LogFormat='$LogFormat'",2);
if ($tomorrowsec < 10) { $tomorrowsec = "0$tomorrowsec"; }
$tomorrowtime=int($tomorrowyear.$tomorrowmonth.$tomorrowday.$tomorrowhour.$tomorrowmin.$tomorrowsec);
-my @AllowedArgs=('-site','-config','-showsteps','-showdropped','-showcorrupted',
-'-showunknownorigin','-logfile','-output','-staticlinks','-staticlinksext','-lang',
-'-hostfilter','-urlfilter','-refererpagesfilter',
+my @AllowedArgs=('-migrate','-config',
+'-showsteps','-showdropped','-showcorrupted','-showunknownorigin',
+'-logfile','-output','-runascli','-staticlinks','-staticlinksext','-update',
+'-lang','-hostfilter','-urlfilter','-refererpagesfilter',
'-month','-year','-framename','-debug','-limitflush');
$QueryString='';
-if ($ENV{'GATEWAY_INTERFACE'}) { # Run from a browser
+if ($ENV{'GATEWAY_INTERFACE'}) { # Run from a browser as CGI
print "Content-type: text/html\n";
# Expires must be GMT ANSI asctime and must be after Content-type to avoid pb with some servers (SAMBAR)
#my $ExpireDelayInHTTPHeader=0;
$found=1;
}
else {
- $field[$pos_referer] =~ /^(\w+):\/\/([^\/]+)/;
+ $field[$pos_referer] =~ /^(\w+):\/\/([^\/:]+)(:\d+|)/;
my $refererprot=$1;
- my $refererserver=$2;
+ my $refererserver=$2.($3 eq ':80'?'':$3); # refererserver is www.xxx.com or www.xxx.com:81 but not www.xxx.com:80
# HTML link ?
if ($refererprot =~ /^http/i) {
+ #if ($Debug) { debug(" Analyze referer refererprot=$refererprot refererserver=$refererserver",5); }
# Kind of origin
if (!$TmpRefererServer{$refererserver}) {
if ($refererserver =~ /^(www\.|)$SiteToAnalyzeWithoutwww/i) {
# Intern (This hit came from another page of the site)
- if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '='",2); }
+ if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '='",2); }
$TmpRefererServer{$refererserver}='=';
$found=1;
}
else {
foreach my $key (@HostAliases) {
- if ($refererserver =~ /^$key/i) {
+ if ($refererserver =~ /^$key$/i) {
# Intern (This hit came from another page of the site)
- if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '='",2); }
+ if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '='",2); }
$TmpRefererServer{$refererserver}='=';
$found=1;
last;
foreach my $key (@SearchEnginesSearchIDOrder) { # Search ID in order of SearchEnginesSearchIDOrder
if ($refererserver =~ /$key/i) {
# This hit came from the search engine $key
- if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '$key'",2); }
+ if ($Debug) { debug(" Server '$refererserver' is added to TmpRefererServer with value '$key'",2); }
$TmpRefererServer{$refererserver}="$key";
$found=1;
last;