#!/usr/bin/perl ############################################################################### # # # IPFire.org - A linux based firewall # # Copyright (C) 2007 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # # # ############################################################################### use CGI qw(param); $swroot="/var/ipfire"; my %netsettings; my %filtersettings; &readhash("$swroot/ethernet/settings", \%netsettings); &readhash("$swroot/urlfilter/settings", \%filtersettings); $category=param("category"); $url=param("url"); $ip=param("ip"); if ($filtersettings{'MSG_TEXT_1'} eq '') { $msgtext1 = "A C C E S S    D E N I E D"; } else { $msgtext1 = $filtersettings{'MSG_TEXT_1'}; } if ($filtersettings{'MSG_TEXT_2'} eq '') { $msgtext2 = "Access to the requested page has been denied"; } else { $msgtext2 = $filtersettings{'MSG_TEXT_2'}; } if ($filtersettings{'MSG_TEXT_3'} eq '') { $msgtext3 = "Please contact the Network Administrator if you think there has been an error"; } else { $msgtext3 = $filtersettings{'MSG_TEXT_3'}; } if ($category eq '') { $category = ' '; } else { $category = '['.$category.']'; } print "Pragma: no-cache\n"; print "Cache-control: no-cache\n"; print "Connection: close\n"; print "Content-type: text/html\n\n"; print < ACCESS MESSAGE
$msgtext1 END ; if (!($category eq "")) { print < $category END ; } print < $msgtext2 END ; if (!($url eq "")) { print <URL: $url END ; } if (!($ip eq "")) { print <Client IP address: $ip END ; } print <

$msgtext3

Web Filtering by IPFire
END ; sub readhash { my $filename = $_[0]; my $hash = $_[1]; my ($var, $val); if (-e $filename) { open(FILE, $filename) or die "Unable to read file $filename"; while () { chop; ($var, $val) = split /=/, $_, 2; if ($var) { $val =~ s/^\'//g; $val =~ s/\'$//g; # Untaint variables read from hash $var =~ /([A-Za-z0-9_-]*)/; $var = $1; $val =~ /([\w\W]*)/; $val = $1; $hash->{$var} = $val; } } close FILE; } }