opendir.cgi

 


#!/usr/bin/perl

@pairs = split(/&/, $ENV{'QUERY_STRING'});

foreach $pair (@pairs)
{
    ($key, $value) = split (/=/, $pair);
    $key =~ tr/+/ /;
    $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~s/<!--(.|\n)*-->//g;

    if ($formdata{$key})
    {
        $formdata{$key} .= ", $value";
    }
    else
    {
        $formdata{$key} = $value;
    }
}


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

$year = $formdata{'year'};
$month = sprintf("%02d", $formdata{'month'});
$day = sprintf("%02d", $formdata{'day'});

$desired_file = "logfile" . $year . $month . $day . ".txt";

chdir ("../../logs");

if (-e $desired_file) {
	open (LOG, $desired_file) || &ErrorMessage;
	@messages = <LOG>;
	close (LOG);
	$n=1;
	foreach $message (@messages) {
		print "<LI>Message # $n is <I>$message</I>";
		$n++;
		}
} else {
	print "Log doesn't exist.";
	opendir (LOGDIR, ".") || &ErrorMessage;
	@logfiles = readdir (LOGDIR);
	closedir (LOGDIR);
	if (@logfiles) {
		print "<P>You can choose from the following logs:";
		foreach $filename (@logfiles) {
			print "<LI>$filename" unless ($filename =~ /^\.+$/);
			}
	}
}
	
sub ErrorMessage {
	print "Content-type: text/html\n\n";
	print "The server can't access the file. Aborting script. \n";
	exit;
}