#!/usr/bin/perl
use strict;
use CGI;
$| = 1;
my($key) = q[YOUR PASSWORD HERE]; # EDIT THIS LINE!
my($cgi) = CGI->new();
my($limit) = $cgi->param('limit') || 300;
my(@log) = ();
my($logfile) = '/path/to/your/error.log'; # EDIT THIS LINE!
my($pswd) = $cgi->param('pw') || '';
my($pattern) = $cgi->param('pattern');
if ($pswd ne $key) {
&authenticate();
}
elsif ($pswd eq $key) {
&admit();
}
exit;
sub authenticate {
print( $cgi->header(), qq[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Error Log</title>
</head>
<body>
<br>
<h2>Error Log for $ENV{'SERVER_NAME'}</h2><br>
<blockquote><form action="access_log.cgi" method="post">
<input type="password" name="pw" size="30"> Password<br><br>
<input type="text" name="pattern" size="30"> Pattern<br><br>
<select name="limit">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="600">600</option>
<option value="700">700</option>
<option value="800">800</option>
<option value="900">900</option>
<option value="1000">1000</option>
</select> Maximum Lines displayed<br><br>
<input type="submit" value="view log">
</form></blockquote>
<p> </p>
</body></html>] );
}
sub admit {
print( $cgi->header(), qq[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Error Log</title>
</head>
<body><a name="top"></a><br>
<h2>Error Log for $ENV{'SERVER_NAME'}</h2><br><br>
<div align="center"><a href="#eof">skip to bottom</a></div>
<br><br><pre>] );
open(LOG,"<$logfile") or print "can't open $logfile for reading: $!";
@log = <LOG>;
close LOG;
my $i = ($#log + 1);
my $saved = $i;
LOGSCAN: foreach my $line (reverse @log) {
my $re = (length($pattern) > 0) ? $pattern : 0;
my $criterion = ($limit) ? ($saved - $limit) : 0;
if (
(length($line) > 2) and
($i > $criterion )
) {
if ($re) {
if ($line =~ /$re/) {
print qq|<strong>$i\.) </strong>$line<br><br>| and --$i;
}
}
else {
print qq|<strong>$i\.) </strong>$line<br><br>| and --$i;
}
}
}
print( qq[
</pre><div align="center"><a href="#top">top</a></div>
<a name="eof"></a><p> </p></body></html>] );
}