Site hosted by Angelfire.com: Build your free website today!
#!/usr/local/bin/perl ############################################################################## # Countdown Version 2.1 # # Copyright 1998-2000 Edward Preble scripts@datatrendsoftware.com # # Created 11/30/98 Last Modified 01/28/00 # # Datatrend Software http://www.datatrendsoftware.com/cgi.html# ############################################################################## # This script will do the following: # # 1. Is activated by a link of the following form, # # http://www.yoursite.com/yourdir/countdown.cgi?yourfile.anything # # 2. Updates a text log file and an HTML file with the counts of the # # downloads made so far, ordered greatest to least. # # 3. Creates 2 HTML tables, one with all the download counts, and another # # with just the top ten downloads. These are great to let site visitors # # see the most popular downloads available on your site. # # 3. Will auto-forward the web surfer to "file.anything" for download. # # 4. The interface is seamless, there are no user prompts. # ############################################################################## # COPYRIGHT NOTICE # # Copyright 1999-2000 Edward Preble All Rights Reserved. # # # # This script is free. You may use and modify this script as you please. # # Do not remove this header, as it is the only thing that gives me credit # # for my work in writing this code. If you wish to sell this code, you # # must obtain permission from the authors first. # # # # Scripts provided by Datatrend Software are supplied "as-is". You agree # # to indemnify the author's from any liability that may arise from the use # # of this script. # # # # Obtain permission before redistributing this software over the Internet or # # in any other medium. In all cases copyright and header must remain intact.# ############################################################################## # # # You must modify the the location of PERL in the first line above to match # # the location on your server. # # You must also modify the following variables to match your preferences. # #Location and name of the CountDown Script on your server $CountDownLocation = 'http://www.evilcommunity.com/counters/codecounter/codecounter.cgi'; # This is the directory location of the file(s) that will be downloaded $DownloadFileDir = 'http://evilcommunity.com/illcomm/texts/programing'; # This is the counter log filename $Counter = 'code_counter.log'; #This is the HTML output filename $HTMLFile = 'code_counter.txt'; #This is the HTML output filename for the Top Ten List only $TopTenFile = 'code_counter_10.txt'; ########################################################## # No changes need to be made after these lines ########################################################## $File = $ENV{'QUERY_STRING'}; # Strip off anything up to, and including, the last "/", if present if ($File =~ /\//) { ($File) = $File =~ /^.*\/([^\/]+)$/g; } $DownloadFile = "$DownloadFileDir/$File"; # Add hit to main counter open (CNT,"+<$Counter") || &endIt; flock (CNT,2); seek (CNT,0,0); @infile = ; # This will put the hits in order from max to min for each file added $record = 0; # Starting record in the log is always 0 $correctspot = 'N'; # Tells script if this record is the one that was hit # Proceeds as long as the record number is less than the total # number of records in the file and the correct record hasn't been found yet. while (($correctspot eq 'N') && ($record <= $#infile)) { ($count,$filename,$eol) = split(/\|/,$infile[$record]); if ($filename eq $File) #if this is the right record, hit it, trip correctspot {$count++; $infile[$record] = join ("\|",$count,$filename,"\n"); $correctspot = 'Y'; } $record++; } if ($correctspot eq 'N') { $count = 1; $newrecord = join ("\|",$count,$File,"\n"); push @infile, $newrecord; } @outfile = sort {($b =~ /(\d+)/)[0] <=> ($a =~ /(\d+)/)[0]} @infile; seek (CNT,0,0); print (CNT @outfile); truncate (CNT,tell(CNT)); close (CNT); #Create HTML File - Whole List open (Out,"+>$HTMLFile") || &endIt; flock (Out,2); print {Out} < Downloads - File TextOut foreach (@outfile) { ($count,$filename,$eol) = split(/\|/,$_); print {Out} < $count - $filename TextOut } print {Out} < -------------------------------------------------------------------------------- Log created with CountDown by Datatrend Software. TextOut #Create HTML File - Top Ten List open (Out,"+>$TopTenFile") || &endIt; flock (Out,2); print {Out} < TextOut if ($#outfile < 9) { for ($i = 0; $i <= $#outfile; $i++) { ($count,$filename,$eol) = split(/\|/,$outfile[$i]); print {Out} < $filename :$count TextOut } } else { for ($i = 0; $i <=9; $i++) { ($count,$filename,$eol) = split(/\|/,$outfile[$i]); print {Out} < $filename :$count TextOut } } print {Out} < TextOut print "Content-type: text/html\n"; print "Location: $DownloadFile\n\n"; sub endIt # exit on error { exit; } # end endIt