#!/usr/bin/perl # http://www.jmbsoft.com/license.php $DDIR = './data'; require "$DDIR/variables"; ## Parse the request _ParseRequest(); my @member = (); $F{'id'} =~ s/\||;//gi; ## Give the member a hit if( -f "./data/members/$F{'id'}" ) { open(FILE, "+<./data/members/$F{'id'}") || _Error("$!", "./data/members/$F{'id'}"); flock(FILE, 2); @member = split(/\|/, , 31); $member[0]++; $member[2]++; $member[20] = 0; seek(FILE, 0, 0); print FILE join('|', @member); my $tell = tell(FILE); if( $tell != -1 ) { truncate(FILE, $tell); } flock(FILE, 8); close(FILE); } ## See if it is time for a rebuild or reset CheckTime(); print "Location: $MAIN_URL/autorank.html\n\n"; sub CheckTime { my $line = undef; my $key = undef; my $time = time; $TIMES = {}; open(TIMES, "+<$DDIR/times") || _Error("$!", "$DDIR/times"); if( flock(TIMES, 2|4) ) { my $required = 0; my $update = 0; for( ) { $line = $_; if( $line =~ /^=>\[(.*?)\]\n/ ) { $key = $1; } else { $TIMES->{$key} .= $line; } } if( $time - $TIMES->{'Rebuild'} >= $REBUILD ) { require 'common.pl'; require 'ar.pl'; $required = 1; $update = 1; $TIMES->{'Rebuild'} = "$time\n"; $TIMES->{'Rebuild_By'} = "in.cgi\n"; BuildPages(); } if( $time - $TIMES->{'Reset'} >= $RESET ) { if( !$required ) { require 'common.pl'; require 'ar.pl'; } $update = 1; $TIMES->{'Reset'} = "$time\n"; $TIMES->{'Reset_By'} = "in.cgi\n"; ResetCurrentHits(); } if( $update ) { seek(TIMES, 0, 0); for( keys %$TIMES ) { print TIMES "=>[$_]\n$TIMES->{$_}"; } my $tell = tell(TIMES); if( $tell != -1 ) { truncate(TIMES, $tell); } } flock(TIMES, 8); } close(TIMES); } sub _Error { my $error = shift; my $file = shift; print "Content-type: text/html\n\n"; print "Error: $error
"; print "File: $file
"; exit; } sub _ParseRequest { my $buffer = $ENV{'QUERY_STRING'}; my $name = undef; my $value = undef; my @pairs = split(/&/, $buffer); for (@pairs) { ($name, $value) = split(/=/, $_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $F{$name} = $value; } }