Datatrend Software - Digitizing software and CGI Scripts

DataTrend Software
CGI Scripts


AutoContact
AutoFollowUp
AutoMail
AutoMail Lite
Bookkeeper Lite
CountDown
CountDown Lite
CountLink
Script Feedback


PERL/CGI Books

 CountDown v1.1 Text
#!/usr/local/bin/perl
####################################################################
# Countdown Version 1.1
# Copyright 1998 Edward Preble info@datatrendsoftware.com
# Created 11/30/98 Last Modified 12/01/98
# Datatrend Software http://www.datatrendsoftware.com/cgi.html
####################################################################
# This script will do the following:
# 1. Is activated by a link,
# "http://www.site.com/scripts/countdown.cgi?file.anything"
# 2. Will add a count to "countdown.log", for the proper file.
# 3. Will auto-forward to "file.anything" for download.
# 4. The interface is seamless, no user prompts.
####################################################################
# COPYRIGHT NOTICE
# Copyright 1998 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. We will provide support for bugs and operation issues,
# but NOT for installation. Sorry for that, but it is just too time
# consuming and the volume of requests is truly staggering.
#
# 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. Your system admin must help you with this.
# You must also modify the following variables to match your preferences.

# This is the counter log filename
$Counter = '/usr/yourdir/docs/scripts/logs/countdown.log';

# This is the location of the file that will be downloaded
$DownloadFileDir = 'http://www.yoursite.com/scripts/downloads';

##########################################################
# 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 = <CNT>;

# 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);

print "Content-type: text/html\n";
print "Location: $DownloadFile\n\n";

sub endIt # exit on error
{ exit;
} # end endIt

AutoContact|AutoMail|Bookkeeper|CountDown|CountLink|
Script Home|Script Feedback


Send mail to info@datatrendsoftware.com with questions about this web site or our products.
Copyright © Datatrend Software.
PO Box 80471, Raleigh, NC USA 27623.
800-536-6951 toll free fax