Ok,
das ist das Script von Wolfgang Wiese - hab mir schon gedacht, dass es daran liegt. Damit sind meine Möglichkeiten dann erschöpft. Meine Perl-Kenntnisse beschränkgen sich auf "Downloaden" und "Pfade anpassen"
Here it comes:
$LOCK_SH = 1;
$LOCK_EX = 2;
$LOCK_NB = 4;
$LOCK_UN = 8;
$notignore=1;
if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
if (!($buffer)) {$buffer=substr($ENV{'PATH_INFO'},1,length($ENV{'PATH_INFO'}));}
if (!($buffer)) {$buffer=@ARGV; }
$buffer =~ tr/+//;
$buffer =~ tr/ //;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$buffer =~ s/[\x00-\x20<>|;()$^+!^[]?"'`]//g;
if (!($buffer)) {&Redirect($ALTLINK);}
for ($i=0;$i<=$#ignore_host;$i++) {
if ($ignore_host[$i] eq $ENV{'REMOTE_ADDR'}) {$notignore=0;}
}
if ($notignore) {&WriteLog;}
&Redirect($buffer);
exit(0);
#################### Subroutines ########################
sub WriteLog {
my ($i)=0;
my ($oldlink)=0;
my ($name,$version);
if (-r $LOGFILE) {
open(f1,"$LOGFILE") || &Redirect($ALTLINK);
while(<f1>) {
chop($_);
$clickinfo[$i++]=$_;
if ($_ =~ /^$buffer/) {
$oldlink=1;
}
}
close f1;
}
$oldlink=0;
if ($oldlink==0) {
open(f1,">>$LOGFILE") || &Redirect($ALTLINK);
flock(f1,$LOCK_EX);
seek(f1, 0, 2);
print f1 "$buffer, 1\n";
flock(f1,$LOCK_UN);
close f1;
} else {
open(f1,">$LOGFILE") || &Redirect($ALTLINK);
flock(f1,$LOCK_EX);
seek(f1, 0, 2);
for ($i=0;$i<=$#clickinfo;$i++) {
if ($clickinfo[$i] =~ /^$buffer/) {
($page,$hit)=split(/, /,$clickinfo[$i]);
$hit++;
print f1 "$page, $hit\n";
} else {
print f1 "$clickinfo[$i]\n";
}
}
flock(f1,$LOCK_UN);
close f1;
}
}
################################################################################
sub Redirect {
my($url)=@_;
print "Status: 302 Found\n";
print "Location: $url\n";
print "URI: <$url>\n";
print "Content-type: text/html\r\n\r\n";
exit(1);
}
################################################################################