###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2012 #
+# Copyright (C) 2013 #
# #
# 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 #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
-
+# Author: Alexander Marx (amarx@ipfire.org) #
+###############################################################################
use strict;
use Sort::Naturally;
my %optionsfw=();
my %ifaces=();
-my $VERSION='0.9.9.12';
+my $VERSION='0.9.9.13';
my $color;
my $confignet = "${General::swroot}/fwhosts/customnetworks";
my $confighost = "${General::swroot}/fwhosts/customhosts";
$fwdfwsettings{'copyfwrule'}='on';
&newrule;
}
-if ($fwdfwsettings{'ACTION'} eq '')
+if ($fwdfwsettings{'ACTION'} eq '' or $fwdfwsettings{'ACTION'} eq 'reset')
{
&base;
}
}
if ($fwdfwsettings{'isip'} ne 'on'){
- if (&General::validmac($fwdfwsettings{'src_addr'})){$fwdfwsettings{'ismac'}='on';}
+ if (&General::validmac($fwdfwsettings{'src_addr'})){
+ $fwdfwsettings{'ismac'}='on';
+ }
}
if ($fwdfwsettings{'isip'} eq 'on'){
##check if ip is valid
$ip=&General::ip2dec($ip);
$ip=&General::dec2ip($ip);
#check if net or broadcast
- my @tmp= split (/\./,$ip);
- if (($tmp[3] eq "0") || ($tmp[3] eq "255"))
- {
- $errormessage=$Lang::tr{'fwhost err hostip'}."<br>";
- return $errormessage;
- }
$fwdfwsettings{'src_addr'}="$ip/$subnet";
if(!&General::validipandmask($fwdfwsettings{'src_addr'})){
$errormessage.=$Lang::tr{'fwdfw err src_addr'}."<br>";
if($optionsfw{'SHOWCOLORS'} eq 'on'){
#standard networks
if ($val eq 'GREEN'){
- $tdcolor="style='border: 1px solid $Header::colourgreen;'";
+ $tdcolor="style='background-color: $Header::colourgreen;color:white;'";
return;
}elsif ($val eq 'ORANGE'){
- $tdcolor="style='border: 1px solid $Header::colourorange;'";
+ $tdcolor="style='background-color: $Header::colourorange;color:white;'";
return;
}elsif ($val eq 'BLUE'){
- $tdcolor="style='border: 1px solid $Header::colourblue;'";
+ $tdcolor="style='background-color: $Header::colourblue;color:white;'";
return;
}elsif ($val eq 'RED' ||$val eq 'RED1' ){
- $tdcolor="style='border: 1px solid $Header::colourred;'";
+ $tdcolor="style='background-color: $Header::colourred;color:white;'";
return;
}elsif ($val eq 'IPFire' ){
- $tdcolor="style='border: 1px solid $Header::colourred;'";
+ $tdcolor="style='background-color: $Header::colourred;color:white;'";
return;
}elsif($val =~ /^(.*?)\/(.*?)$/){
my ($sip,$scidr) = split ("/",$val);
if ( &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
- $tdcolor="style='border: 1px solid $Header::colourorange;'";
+ $tdcolor="style='background-color: $Header::colourorange;color:white;'";
return;
}
if ( &General::IpInSubnet($sip,$netsettings{'GREEN_ADDRESS'},$netsettings{'GREEN_NETMASK'})){
- $tdcolor="style='border: 1px solid $Header::colourgreen;'";
+ $tdcolor="style='background-color: $Header::colourgreen;color:white;'";
return;
}
if ( &General::IpInSubnet($sip,$netsettings{'BLUE_ADDRESS'},$netsettings{'BLUE_NETMASK'})){
- $tdcolor="style='border: 1px solid $Header::colourblue;'";
+ $tdcolor="style='background-color: $Header::colourblue;color:white;'";
return;
}
}elsif ($val eq 'Default IP'){
- $tdcolor="style='border: 1px solid $Header::colourred;'";
+ $tdcolor="style='background-color: $Header::colourred;color:white;'";
return;
}
#Check if a manual IP is part of a VPN
my ($a,$b) = split("/",$ovpnsettings{'DOVPN_SUBNET'});
my ($c,$d) = split("/",$val);
if (&General::IpInSubnet($c,$a,$b)){
- $tdcolor="style='border: 1px solid $Header::colourovpn;'";
+ $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
return;
}
#Check if IP is part of OpenVPN static subnet
my ($a,$b) = split("/",$ccdnet{$key}[1]);
$b =&General::iporsubtodec($b);
if (&General::IpInSubnet($c,$a,$b)){
- $tdcolor="style='border: 1px solid $Header::colourovpn;'";
+ $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
return;
}
}
if ($ccdhost{$key}[3] eq 'net'){
my ($a,$b) = split("/",$ccdhost{$key}[11]);
if (&General::IpInSubnet($c,$a,$b)){
- $tdcolor="style='border: 1px solid $Header::colourovpn;'";
+ $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
return;
}
}
my ($a,$b) = split("/",$ipsecsettings{'RW_NET'});
$b=&General::iporsubtodec($b);
if (&General::IpInSubnet($c,$a,$b)){
- $tdcolor="style='border: 1px solid $Header::colourvpn;'";
+ $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
return;
}
}
foreach my $key (sort keys %ipsecconf){
my ($a,$b) = split("/",$ipsecconf{$key}[11]);
if (&General::IpInSubnet($c,$a,$b)){
- $tdcolor="style='border: 1px solid $Header::colourvpn;'";
+ $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
return;
}
}
}
#VPN networks
if ($nettype eq 'ovpn_n2n_src' || $nettype eq 'ovpn_n2n_tgt' || $nettype eq 'ovpn_net_src' || $nettype eq 'ovpn_net_tgt'|| $nettype eq 'ovpn_host_src' || $nettype eq 'ovpn_host_tgt'){
- $tdcolor="style='border: 1px solid $Header::colourovpn;'";
+ $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
return;
}
if ($nettype eq 'ipsec_net_src' || $nettype eq 'ipsec_net_tgt'){
- $tdcolor="style='border: 1px solid $Header::colourvpn;'";
+ $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
return;
}
#custom Hosts
foreach my $alias (sort keys %aliases)
{
if ($val eq $alias){
- $tdcolor="style='border: 1px solid $Header::colourred;'";
+ $tdcolor="style='background-color:$Header::colourred;color:white;'";
return;
}
}
#------SOURCE-------------------------------------------------------
print<<END;
<table width='100%' border='0'>
- <tr><td width='1%'><input type='radio' name='grp1' value='src_addr' checked></td><td width='60%'>$Lang::tr{'fwdfw sourceip'}<input type='TEXT' name='src_addr' value='$fwdfwsettings{'src_addr'}' size='16' maxlength='17' ></td><td width='1%'><input type='radio' name='grp1' id='ipfire_src' value='ipfire_src' $checked{'grp1'}{'ipfire_src'}></td><td><b>Firewall</b></td>
+ <tr><td width='1%'><input type='radio' name='grp1' value='src_addr' checked></td><td width='60%'>$Lang::tr{'fwdfw sourceip'}<input type='TEXT' name='src_addr' value='$fwdfwsettings{'src_addr'}' size='16' maxlength='18' ></td><td width='1%'><input type='radio' name='grp1' id='ipfire_src' value='ipfire_src' $checked{'grp1'}{'ipfire_src'}></td><td><b>Firewall</b></td>
END
print"<td align='right'><select name='ipfire_src' style='width:200px;'>";
print "<option value='ALL' $selected{'ipfire_src'}{'ALL'}>$Lang::tr{'all'}</option>";
&Header::openbox('100%', 'left', $Lang::tr{'fwdfw target'});
print<<END;
<table width='100%' border='0'>
- <tr><td width='1%'><input type='radio' name='grp2' value='tgt_addr' checked></td><td width='60%' nowrap='nowrap'>$Lang::tr{'fwdfw targetip'}<input type='TEXT' name='tgt_addr' value='$fwdfwsettings{'tgt_addr'}' size='16' maxlength='17'><td width='1%'><input type='radio' name='grp2' id='ipfire' value='ipfire' $checked{'grp2'}{'ipfire'}></td><td><b>Firewall</b></td>
+ <tr><td width='1%'><input type='radio' name='grp2' value='tgt_addr' checked></td><td width='60%' nowrap='nowrap'>$Lang::tr{'fwdfw targetip'}<input type='TEXT' name='tgt_addr' value='$fwdfwsettings{'tgt_addr'}' size='16' maxlength='18'><td width='1%'><input type='radio' name='grp2' id='ipfire' value='ipfire' $checked{'grp2'}{'ipfire'}></td><td><b>Firewall</b></td>
END
print"<td align='right'><select name='ipfire' style='width:200px;'>";
print "<option value='ALL' $selected{'ipfire'}{'ALL'}>$Lang::tr{'all'}</option>";
}
&show_defaultrules($col,$pol);
}elsif ($config eq '/var/ipfire/forward/outgoing'){
- my $pol='fwdfw '.$fwdfwsettings{'POLICY1'};
if ($fwdfwsettings{'POLICY1'} eq 'MODE1'){
$col="bgcolor='darkred'";
- print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col><font color='#FFFFFF' align='center'>$Lang::tr{'fwdfw pol allow'}</font></td></tr>";
+ print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF' >$Lang::tr{'fwdfw pol block'}</font></td></tr>";
}else{
$col="bgcolor='green'";
- print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col><font color='#FFFFFF' align='center'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";
+ print"<tr><td $col width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td $col align='center'><font color='#FFFFFF' >$Lang::tr{'fwdfw pol allow'}</font></td></tr>";
}
}else{
print"<tr><td bgcolor='darkred' width='20%' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw final_rule'}</td><td bgcolor='darkred' align='center'><font color='#FFFFFF'>$Lang::tr{'fwdfw pol block'}</font></td></tr>";