148 lines
3.8 KiB
Perl
Executable File
148 lines
3.8 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
#######################################################################
|
|
# Audric's Counter v1.0 FREEWARE
|
|
# Full copyright and legal speak at:
|
|
# http://www.aimsweb.com/goodies/counter2.htm
|
|
#
|
|
# Inspired on Matt's Wright Counter program
|
|
# Matt's Script Archive http://www.worldwidemart.com/scripts/
|
|
#######################################################################
|
|
|
|
# Define Variables
|
|
|
|
### FILE AND DIRECTORY LOCATIONS, REFERERS ###
|
|
$count_file = "/users/cao7/czo/public_html/cgi-bin/count.txt"; # must be chmod 777
|
|
$digit_dir = "/ssi/";
|
|
$access_log = "/users/cao7/czo/public_html/cgi-bin/access_log"; # must be chmod 777
|
|
$error_log = "/users/cao7/czo/public_html/cgi-bin/error_log"; # must be chmod 777
|
|
|
|
# If someone wants to use your counter from theri pages and their domain
|
|
# is not contained into @refers show them this gif.
|
|
$bad_referer_img = "http://www.aimsweb.com/images/bad_referer.gif";
|
|
|
|
# Domains you want to allow to use this script
|
|
@referers=(
|
|
"lip6.fr",
|
|
"127.0.0.1"
|
|
);
|
|
|
|
### IMAGE SETTINGS ###
|
|
# If you change the 0-9.gif set make sure you chage those accordingly
|
|
$width = "9";
|
|
$height = "20";
|
|
|
|
### OPTIONS ###
|
|
$uselog = "1"; # 1 = YES; 0 = NO
|
|
|
|
# Done - You shouldn't need to change anything below this line..
|
|
#######################################################################
|
|
|
|
#################
|
|
# Get the Date For Logging Purposes
|
|
if ($uselog == 1) {
|
|
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
|
$mon++; # fixes Matt's Counter bug
|
|
if ($sec < 10) { $sec = "0$sec"; }
|
|
if ($min < 10) { $min = "0$min"; }
|
|
if ($hour < 10) { $hour = "0$hour"; }
|
|
if ($mday < 10) { $mday = "0$mday"; }
|
|
if ($mon < 10) { $monc = "0$mon"; }
|
|
$date = "$hour\:$min\:$sec $mon/$mday/$year";
|
|
}
|
|
|
|
#################
|
|
# Make Sure People Aren't Messing With the Counter From Other Web Pages
|
|
#&check_referer;
|
|
|
|
#################
|
|
# Get the Counter Number And Write New One to File
|
|
&get_num;
|
|
|
|
#################
|
|
# Determine Length of Counter Number
|
|
# Set Individual Counter Numbers Into Associative Array
|
|
$savedcount=$count;
|
|
$num = $length = length($count);
|
|
while ($num > 0) {
|
|
$CHAR{$num} = chop($count);
|
|
$num--;
|
|
}
|
|
|
|
#################
|
|
# Generates HTML to use pre-generated GIFs
|
|
$j = 1;
|
|
$myNumber="";
|
|
while ($j <= $length) {
|
|
$myNumber .= "<img src=\"$digit_dir$CHAR{$j}\.gif\" border=0 width=$width height=$height>";
|
|
$j++;
|
|
}
|
|
|
|
#################
|
|
# Write the generated HTML to STDOUT
|
|
print "Content-Type: text/html\n\n";
|
|
print "<table border=0 cellspacing=0 cellpadding=0><tr><td>$myNumber</td></tr></table>\n";
|
|
|
|
|
|
#################
|
|
# Log the Counter Access
|
|
if ($uselog == 1) {
|
|
&log_access;
|
|
}
|
|
|
|
exit;
|
|
|
|
|
|
######################################################
|
|
# SUBROUTINES
|
|
######################################################
|
|
|
|
|
|
#################
|
|
sub check_referer {
|
|
if (@referers && $ENV{'HTTP_REFERER'}) {
|
|
foreach $referer (@referers) {
|
|
if ($ENV{'HTTP_REFERER'} =~ /$referer/) {
|
|
$ref = 1;
|
|
last;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$ref = 1;
|
|
}
|
|
|
|
if ($ref != 1) {
|
|
print "Content-Type: text/html\n\n $bad_referer_img\n\n";
|
|
|
|
if ($uselog == 1) {
|
|
open(LOG,">>$error_log") || die "Can't Open User Error Log: $!\n";
|
|
print LOG "$error: $ENV{'REMOTE_HOST'} [$date] $ENV{'HTTP_REFERER'} - $ENV{'HTTP_USER_AGENT'}\n";
|
|
close(LOG);
|
|
}
|
|
exit;
|
|
}
|
|
}
|
|
|
|
#################
|
|
sub get_num {
|
|
open(COUNT,"$count_file") || die "Can't Open Count Data File: $!\n";
|
|
$count = <COUNT>;
|
|
close(COUNT);
|
|
if ($count =~ /\n$/) {
|
|
chop($count);
|
|
}
|
|
|
|
$count++;
|
|
|
|
open(COUNT,">$count_file") || die "Can't Open Count Data File For Writing: $!\n";
|
|
print COUNT "$count";
|
|
close(COUNT);
|
|
}
|
|
|
|
#################
|
|
sub log_access {
|
|
open(LOG,">>$access_log") || die "Can't Open User Access Log: $!\n";
|
|
print LOG "[$date] $ENV{'HTTP_REFERER'} - $ENV{'REMOTE_HOST'} - $ENV{'HTTP_USER_AGENT'}\n";
|
|
close(LOG);
|
|
}
|