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; }