#!/usr/bin/perl
#AUTHOR: Tekno Inform AS
#Creation date: 28.02.03
# File: ip-donot.log keeps ipnumbers NOT to log.
$fpath = $0;
while (chop($fpath) ne '\\') {}
require "$fpath/cgi-lib.pl";
#require "http://www.info.no/cgi-lib.pl";
$logdir ="./log/"; # Rel. position of log directory
MAIN:
{
#&env;
#&check_url();
#print "Content-type: text/html\n\n";
# Les inn parametre
$logdir="./log/"; # Rel. position of log directory
&ReadParse(*input);
$logurl = $input{'url'};
#print "fpath=".$fpath."!
";
#print "Verdi a url=".$logurl."!
";
# Log user & resource
&date(); # Get date
# Check IP *************************************************
my $myipfile=$logdir."ip-donot.log"; # IP's to not log
if (open(FIL, "<$myipfile")) {
$avoid_ip=;
close(FIL);
}
$remote_host=$ENV{'REMOTE_HOST'}; # IP (Hostname of visitor)
#my $temp=$avoid_ip;
#$temp=~s/$remote_host//; # Remove his IP from string
my $ip_check=0;
if ($avoid_ip =~ /$remote_host/) {$ip_check=0;} # $remote_host is found in $avoid_ip
else {$ip_check=1; }
if ("$remote_host" ne "$avoid_ip") {$ip_check=1;} # Temp solution, till problem over solved
else {$ip_check=0;}
# End of ip check *******************************************
if ($ip_check == 1) {
my $userfile = $logdir.'u_'.$logurl.'.log'; # File, logg user activities
my $countfile= $logdir.'c_'.$logurl.'.log'; # Logfile, ie. go_r102.log
#print "Verdi userfile=".$userfile."!
";
#print "Verdi countfile=".$countfile."!
";
&log_user($userfile,0); #
&log_count($countfile,$logurl);
}
exit;
}
##############################
sub log_count{
##############################
my $string="";
my $teller=0;
# my $resource=$_[0]; #Ressursnr.
my $filnavn=shift; #Ressursnr.
my $url=shift; #Url
$url=~s/\./_/gi; # Subs . with _
#if ($resource eq "") {$resource="000";}; # No rsource
if (open(FIL, "<$filnavn")) {
$string=;
close(FIL);
}
if ($string ne "") {
#$cmd=~s/\+$//gi; # Remove + in the end
$teller=$string;
$teller=~s/(\$.*=)([0-9]*)(;)/$2/; # Pick out only digits behind (can be removed soon)
#print ("String=".$teller);
#print "Content-type: text/html\n\n";
#print ("Teller=".$teller.'!');
#exit;
$teller++; # Increment
#print ("Teller=".$teller.'!');
#&skrivmsg("Teller2=".$teller.'!');
#exit;
}
$remote_host=$ENV{'REMOTE_HOST'}; # Hostname of visitor.
if ("$remote_host" ne "x80.202.86.146") { # Do not log my own searches from this IP
open(FIL, ">$filnavn") || warn (" "); # >Writ >> Add || die or warn
#$string='$'.$url.'='.$teller.';$temp=1;'; # Obs, the last 1, to have a positie value
$string=$teller;
print FIL "$string\n"; # With newline
close(FIL);
}
return;
}
##############################
sub log_user{
##############################
my $filnavn=$_[0];
my $teller=$_[1]; #startverdi hvis ny fil
#if (open(FIL, "<$filnavn")) {
# $teller=;
# close(FIL);
#}
#$teller++;
#print "Verdi i userfile, filnavn=".$filnavn."!
";
# Read "alle" the environment variables
$document_root=$ENV{'DOCUMENT_ROOT'}; # Root directory of your server.
$http_cookie=$ENV{'HTTP_COOKIE'}; # Visitor's cookie (if set).
$http_host=$ENV{'HTTP_HOST'}; # Hostname of your server.
$https=$ENV{'HTTPS'}; # ON if called through a secure server.
$path=$ENV{'PATH'}; # Systems path your server runs under.
$query_string=$ENV{'QUERY_STRING'}; # The query data (used with GET).
$http_referer=$ENV{'HTTP_REFERER'}; # Ref. path
$remote_host=$ENV{'REMOTE_HOST'}; # Hostname of visitor.
$remote_port=$ENV{'REMOTE_PORT'}; # Port the visitor is connected to on web server.
$remote_user=$ENV{'REMOTE_USER'}; # Visitor's username.
$request_method=$ENV{'REQUEST_METHOD'}; # GET or POST
$request_uri=$ENV{'REQUEST_URI'}; # Interpreted pathname of requested document.
$script_filename=$ENV{'SCRIPT_FILENAME'}; # Full pathname of current CGI page.
$script_name=$ENV{'SCRIPT_NAME'}; # Interpreted pathname of current CGI (relative to root).
$server_admin=$ENV{'SERVER_ADMIN'}; # Email address for your server's webmaster.
$server_name=$ENV{'SERVER_NAME'}; # Your server's domain name.
$server_port=$ENV{'SERVER_PORT'}; # Port number your server is listening on.
$server_software=$ENV{'SERVER_SOFTWARE'}; # Server software being used (ex. Apache 1.3)
#Language codes
my $http_lang=$ENV{'HTTP_ACCEPT_LANGUAGE'}; # Language code
# = no,en-us;q=0.8,en-gb;q=0.6,sv;q=0.4,de;q=0.2
my $lang=substr($http_lang,0,2);
#if (substr($http_lang,0,2) eq "no" ) {$lang="no";}
#elsif (substr($http_lang,0,2) eq "se" ) {$lang="no";}
#elsif (substr($http_lang,0,2) eq "dk" ) {$lang="no";}
#else {$lang="en";}
#;
if ("$remote_host" ne "x80.202.86.146") { # Do not log my own searches from this IP
my $string="D:$date T:$time IP:$remote_addr";
if ($remote_host ne $remote_addr) {$string.=' Host:'.$remote_host;};
if ($remote_user ne "") {$string.=' User:'.$remote_user;};
$string.=' L:'.$lang; # Language
if ($remote_port ne "") {$string.=' Rport:'.$remote_port;};
if ($server_port ne "80") {$string.=' Sport:'.$server_port;};
if ($server_admin_user ne "") {$string.=' Sadm:'.$server_admin;};
if (($http_referer ne "http://info.no/") && ($http_referer ne "http://www.info.no")&& ($http_referer ne "http://www.info.no/") && (($http_referer ne "") && ($remote_addr ne "80.202.86.146"))) {$string.=' Ref:'.$http_referer;};
if (($server_name ne "www.info.no") && ($server_name ne "info.no")) {$string.=' Snam:'.$server_name;};
if ($request_uri ne "") {$string.=' uri:'.$request_uri;};
if ($script_filename ne "") {$string.=' scrfilname:'.$script_filename;};
if ($script_name ne "/go.pl") {$string.=' scrname:'.$script_name;};
if ($server_software ne "") {$string.=' ssw:'.$server_software;};
$string.=' q:'.$query_string;
#$string.=" /n"; # End-of-record string
print "Verdi i userfile, string ut=".$string."!
";
my $open="true";
open(FIL, ">>$filnavn") || warn "error fileaccess"; # >Writ >> Add || die or warn
if ($open eq "true") {
print FIL "$string\n"; # With newline
close(FIL) || warn ""; # Warn or Die
}
}
#return $teller;
return;
} # sub juster_teller
sub date {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+$addsecs);
@months = ("01","02","03","04","05","06","07","08","09","10","11","12");
@days = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
if ($sec < 10) {$sec = "0$sec";}
if ($min < 10) {$min = "0$min";}
if ($hour < 10) {$hour = "0$hour";}
if ($hour > 11) {$ap = "PM";}
if ($hour < 12) {$ap = "AM";}
if ($mday < 10) {$mday = "0$mday";}
$year+=1900;
#$date = "@days[$wday] @months[$mon]/$mday/$year";
#$time = "$hour:$min:$sec $ap";
$date = "$year-@months[$mon]-$mday @days[$wday] ";
$time = "$hour:$min:$sec";
return;
}