1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
#! /usr/bin/perl
#
# Sample CGI to explain to the user that the URL is blocked and by which rule set
#
# By Pl Baltzersen 1998
#
$QUERY_STRING = $ENV{'QUERY_STRING'};
$DOCUMENT_ROOT = $ENV{'DOCUMENT_ROOT'};
$clientaddr = "";
$clientname = "";
$clientident = "";
$srcclass = "";
$targetclass = "";
$url = "";
$time = time;
@day = ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
@month = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
while ($QUERY_STRING =~ /^\&?([^&=]+)=([^&=]*)(.*)/) {
$key = $1;
$value = $2;
$QUERY_STRING = $3;
if ($key =~ /^(clientaddr|clientname|clientident|srcclass|targetclass|url)$/) {
eval "\$$key = \$value";
}
if ($QUERY_STRING =~ /^url=(.*)/) {
$url = $1;
$QUERY_STRING = "";
}
}
if ($url =~ /\.(gif|jpg|jpeg|mpg|mpeg|avi|mov)$/i) {
print "Content-Type: image/gif\n";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
printf "Expires: %s, %02d-%s-%02d %02d:%02d:%02d GMT\n\n", $day[$wday],$mday,$month[$mon],$year,$hour,$min,$sec;
open(GIF, "$DOCUMENT_ROOT/images/blocked.gif");
while (<GIF>) {
print;
}
close(GIF)
} else {
print "Content-type: text/html\n";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
printf "Expires: %s, %02d-%s-%02d %02d:%02d:%02d GMT\n\n", $day[$wday],$mday,$month[$mon],$year,$hour,$min,$sec;
print "<HTML>\n\n <HEAD>\n <TITLE>302 Access denied</TITLE>\n </HEAD>\n\n";
print " <BODY BGCOLOR=\"#FFFFFF\">\n";
if ($srcclass eq "unknown") {
print " <P ALIGN=RIGHT>\n";
print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"/images/your-logo.gif\"\n";
print " BORDER=0></A>\n </P>\n\n";
print " <H1 ALIGN=CENTER>Access denied because<BR>this client is not<BR>defined on the proxy</H1>\n\n";
print " <TABLE BORDER=0 ALIGN=CENTER>\n";
print " <TR><TH ALIGN=RIGHT>Supplementary info<TH ALIGN=CENTER>:<TH ALIGN=LEFT>\n";
print " <TR><TH ALIGN=RIGHT>Client address<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientaddr\n";
print " <TR><TH ALIGN=RIGHT>Client name<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientname\n";
print " <TR><TH ALIGN=RIGHT>User ident<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientident\n";
print " <TR><TH ALIGN=RIGHT>Client group<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$srcclass\n";
print " </TABLE>\n\n";
print " <P ALIGN=CENTER>If this is wrong, contact<BR>\n";
print " <A HREF=mailto:proxymaster\@foo.bar>proxymaster\@foo.bar</A>\n";
print " </P>\n\n";
} elsif ($targetclass eq "in-addr") {
print " <P ALIGN=RIGHT>\n";
print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"/images/your-logo.gif\"\n";
print " BORDER=0></A>\n </P>\n\n";
print " <H1 ALIGN=CENTER>IP address URLs<BR>are not allowed<BR>from this client</H1>\n\n";
print " <TABLE BORDER=0 ALIGN=CENTER>\n";
print " <TR><TH ALIGN=RIGHT>Supplementary info<TH ALIGN=CENTER>:<TH ALIGN=LEFT>\n";
print " <TR><TH ALIGN=RIGHT>Client address<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientaddr\n";
print " <TR><TH ALIGN=RIGHT>Client name<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientname\n";
print " <TR><TH ALIGN=RIGHT>User ident<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientident\n";
print " <TR><TH ALIGN=RIGHT>Client group<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$srcclass\n";
print " <TR><TH ALIGN=RIGHT>URL<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$url\n";
print " <TR><TH ALIGN=RIGHT>Target class<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$targetclass\n";
print " </TABLE>\n\n";
print " <P ALIGN=CENTER>Contact the <B>webmaster</B> of <B>$url</B><BR>\n";
print " and ask him to give the webserver a proper <U>domain name</U>\n";
print " </P>\n\n";
} else {
print " <P ALIGN=RIGHT>\n";
print " <A HREF=\"http://www.squidguard.org/\"><IMG SRC=\"/images/your-logo.gif\"\n";
print " BORDER=0></A>\n </P>\n\n";
print " <H1 ALIGN=CENTER>Access denied</H1>\n\n";
print " <TABLE BORDER=0 ALIGN=CENTER>\n";
print " <TR><TH ALIGN=RIGHT>Supplementary info<TH ALIGN=CENTER>:<TH ALIGN=LEFT>\n";
print " <TR><TH ALIGN=RIGHT>Client address<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientaddr\n";
print " <TR><TH ALIGN=RIGHT>Client name<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientname\n";
print " <TR><TH ALIGN=RIGHT>User ident<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$clientident\n";
print " <TR><TH ALIGN=RIGHT>Client group<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$srcclass\n";
print " <TR><TH ALIGN=RIGHT>URL<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$url\n";
print " <TR><TH ALIGN=RIGHT>Target class<TH ALIGN=CENTER>=<TH ALIGN=LEFT>$targetclass\n";
print " </TABLE>\n\n";
print " <P ALIGN=CENTER>If this is wrong, contact<BR>\n";
print " <A HREF=mailto:proxymaster\@foo.bar>proxymaster\@foo.bar</A>\n";
print " </P>\n\n";
}
print " </BODY>\n\n</HTML>\n";
}
exit 0;
|