Приглашаем посетить
"Book 'em, Dan-O" Logger Script by Spider
#!/usr/local/bin/perl
#
# "Book 'em, Dan-O" Logger Script by Spider
# Created 9 July 1996
# Email me at spider@servtech.com
# http://www.servtech.com/public/spider
#
# Secret Decoder Ring - aka Organization of Log File
# Time Stamp / Person\Machine / Referring URL / Browser Used
#
# This script can be run as a SSI or used
# in a "redirect" fashion via *normal* CGI calls.
########## Set Variables ############
$SSI = 0;
# 0 if not used as a SSI - 1 if used as a SSI
$logfile = "/absolute/path/to/dan_o.dat";
# change the directory path, silly!
$exclude = 0;
# 1 if you want to exclude YOUR IP/Domain/Machine Name - 0 otherwise
$my_addr = "your.machine.name";
# used with the "exclude" portion
$HomeDirURL = "http://yourdomain.com/your/path/";
# change this if you're not using SSI's
$nextfile = "file.html";
# again, change if you're not using SSI's
########## So much for that.. On with the show! #######
# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
$value =~ s/~!/ ~!/g;
# Uncomment for debugging purpose
# print "Setting $name to $value<P>";
$FORM{$name} = $value;
}
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
if ($sec < 10) {
$sec = "0$sec";
}
if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}
if ($mon < 10) {
$mon = "0$mon";
}
if ($mday < 10) {
$mday = "0$mday";
}
$month = ($mon + 1);
@months = ("January","February","March","April","May","June","July","August","September","October","November","December");
$date = "$hour\:$min\:$sec $month/$mday/$year";
# Now that we know what the time/date is.. let's have fun
if ($SSI == 1) {
if ($exclude == 1) {
&log unless ($ENV{'REMOTE_HOST'} eq $my_addr);
} else {
&log;
}
exit;
}
if ($SSI == 0) {
if ($exclude == 1) {
&log unless ($ENV{'REMOTE_HOST'} eq $my_addr);
} else {
&log;
}
&redir;
exit;
}
sub log {
if (! open(LOG,">>$logfile")) {
print "Content-type: text/html\n\n";
print "Couldn't open $logfile so I'm bugging out..\n";
exit;
}
print LOG "At $date, $ENV{'REMOTE_HOST'} came here from $ENV{'HTTP_REFERER'} using $ENV{'HTTP_USER_AGENT'}.\n";
close (LOG);
}
sub redir {
print "Location: $HomeDirURL$nextfile\n\n";
}