X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fhtml%2Fredirect.cgi;h=17ea641e4eec801b74410ee389ffb0f79ba97460;hp=93f1ea4a96aece6bdc9064120b614ab086f49ee6;hb=e157791fe963a98323ac88bec665624525bf809f;hpb=ed8286424f61b788a7c52084bd6e165f6cee5983 diff --git a/html/html/redirect.cgi b/html/html/redirect.cgi index 93f1ea4a9..17ea641e4 100644 --- a/html/html/redirect.cgi +++ b/html/html/redirect.cgi @@ -19,9 +19,12 @@ # # ############################################################################### -use CGI qw(param); +use CGI; +use HTML::Entities; +use HTML::Template; -$swroot="/var/ipfire"; +my $swroot="/var/ipfire"; +my $templateroot = "/srv/web/ipfire/html/redirect-templates"; my %netsettings; my %filtersettings; @@ -29,117 +32,75 @@ my %filtersettings; &readhash("$swroot/ethernet/settings", \%netsettings); &readhash("$swroot/urlfilter/settings", \%filtersettings); -$category=param("category"); -$url=param("url"); -$ip=param("ip"); +# Read the template file. +my $template = $filtersettings{'ERROR_TEMPLATE'}; +if (($template eq '') || (! -e "$templateroot/$template")) { + $template = "legacy"; +} +my $tmpl = HTML::Template->new( + filename => "$templateroot/$template/template.html", + die_on_bad_params => 0 +); + +# Address where to load more resources from. +$tmpl->param(ADDRESS => "http://$netsettings{'GREEN_ADDRESS'}:81"); -if ($filtersettings{'MSG_TEXT_1'} eq '') { +# Message text 1 +my $msgtext1 = $filtersettings{'MSG_TEXT_1'}; +if ($msgtext1 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 '') { +} +$tmpl->param(MSG_TEXT_1 => $msgtext1); + +# Message text 2 +my $msgtext2 = $filtersettings{'MSG_TEXT_2'}; +if ($msgtext2 eq '') { $msgtext2 = "Access to the requested page has been denied"; -} else { $msgtext2 = $filtersettings{'MSG_TEXT_2'}; } -if ($filtersettings{'MSG_TEXT_3'} eq '') { +} +$tmpl->param(MSG_TEXT_2 => $msgtext2); + +# Message text 3 +my $msgtext3 = $filtersettings{'MSG_TEXT_3'}; +if ($msgtext3 eq '') { $msgtext3 = "Please contact the Network Administrator if you think there has been an error"; -} else { $msgtext3 = $filtersettings{'MSG_TEXT_3'}; } +} +$tmpl->param(MSG_TEXT_3 => $msgtext3); + +# Category +my $category = CGI::param("category"); +$tmpl->param(CATEGORY => &escape($category)); + +# URL +my $url = CGI::param("url"); +$tmpl->param(URL => &escape($url)); -if ($category eq '') { $category = ' '; } else { $category = '['.$category.']'; } +# IP address +my $ip_address = CGI::param("ip"); +$tmpl->param(IP_ADDRESS => &escape($ip_address)); +# Print header print "Pragma: no-cache\n"; print "Cache-control: no-cache\n"; print "Connection: close\n"; print "Content-type: text/html\n\n"; +print $tmpl->output; -print < - - - -ACCESS MESSAGE - - - - - - -
-
- $msgtext1 - - -END -; - -if (!($category eq "")) -{ - print < - - $category - -END -; +sub escape($) { + my $s = shift; + return HTML::Entities::encode_entities($s); } -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 -{ +sub readhash { my $filename = $_[0]; my $hash = $_[1]; my ($var, $val); - if (-e $filename) - { + if (-e $filename) { open(FILE, $filename) or die "Unable to read file $filename"; - while () - { + while () { chop; ($var, $val) = split /=/, $_, 2; - if ($var) - { + if ($var) { $val =~ s/^\'//g; $val =~ s/\'$//g; @@ -149,6 +110,7 @@ sub readhash $hash->{$var} = $val; } } + close FILE; } }