#
# (c) 2006 Franck - add sorting+filtering capability
#
-# $Id: connections.cgi,v 1.6.2.12 2006/02/27 19:48:46 franck78 Exp $
-#
-# Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once
+# Setup GREEN, ORANGE, IPFIRE, VPN CIDR networks, masklengths and colours only once
my @network=();
my @masklen=();
use strict;
# enable only the following on debugging purpose
-#use warnings;
-#use CGI::Carp 'fatalsToBrowser';
+use warnings;
+use CGI::Carp 'fatalsToBrowser';
-require 'CONFIG_ROOT/general-functions.pl';
+require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
}
}
+# Add OpenVPN net and RED/BLUE/ORANGE entry (when appropriate)
+if (-e "${General::swroot}/ovpn/settings") {
+ my %ovpnsettings = ();
+ &General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings);
+ my @tempovpnsubnet = split("\/",$ovpnsettings{'DOVPN_SUBNET'});
+
+ # add OpenVPN net
+ push(@network, $tempovpnsubnet[0]);
+ push(@masklen, $tempovpnsubnet[1]);
+ push(@colour, ${Header::colourovpn} );
+
+ if ( ($ovpnsettings{'ENABLED'} eq 'on') && open(IP, "${General::swroot}/red/local-ipaddress") ) {
+ # add RED:port / proto
+ my $redip = <IP>;
+ close(IP);
+ chomp $redip;
+ push(@network, $redip );
+ push(@masklen, '255.255.255.255' );
+ push(@colour, ${Header::colourovpn} );
+ }
+ if ( ($ovpnsettings{'ENABLED_BLUE'} eq 'on') && $netsettings{'BLUE_DEV'} ) {
+ # add BLUE:port / proto
+ push(@network, $netsettings{'BLUE_ADDRESS'} );
+ push(@masklen, '255.255.255.255' );
+ push(@colour, ${Header::colourovpn} );
+ }
+ if ( ($ovpnsettings{'ENABLED_ORANGE'} eq 'on') && $netsettings{'ORANGE_DEV'} ) {
+ # add ORANGE:port / proto
+ push(@network, $netsettings{'ORANGE_ADDRESS'} );
+ push(@masklen, '255.255.255.255' );
+ push(@colour, ${Header::colourovpn} );
+ }
+}
+
# Add STATIC RED aliases
if ($netsettings{'RED_DEV'}) {
# We have a RED eth iface
'CLOSE_WAIT', 'LAST_ACK', 'TIME_WAIT', 'CLOSE', 'LISTEN');
my @list_mark = ($Lang::tr{'all'}, '[ASSURED]', '[UNREPLIED]');
my @list_sort = ('orgsip','protocol', 'expires', 'status', 'orgdip', 'orgsp',
- 'orgdp', 'exsip', 'exdip', 'exsp', 'exdp');
+ 'orgdp', 'exsip', 'exdip', 'exsp', 'exdp', 'marked');
# init or silently correct unknown value...
if ( ! grep ( /^$cgiparams{'SEE_PROTO'}$/ , @list_proto )) { $cgiparams{'SEE_PROTO'} = $list_proto[0] };
if ( ! grep ( /^$cgiparams{'SEE_STATE'}$/ , @list_state )) { $cgiparams{'SEE_STATE'} = $list_state[0] };
-if ( ! grep ( /^$cgiparams{'SEE_MARK'}$/ , @list_mark )) { $cgiparams{'SEE_MARK'} = $list_mark[0] };
+if ( ($cgiparams{'SEE_MARK'} ne $Lang::tr{'all'}) && # ok the grep should work but it doesn't because of
+ ($cgiparams{'SEE_MARK'} ne '[ASSURED]') && # the '[' & ']' interpreted as list separator.
+ ($cgiparams{'SEE_MARK'} ne '[UNREPLIED]') # So, explicitly enumerate items.
+ ) { $cgiparams{'SEE_MARK'} = $list_mark[0] };
if ( ! grep ( /^$cgiparams{'SEE_SORT'}$/ , @list_sort )) { $cgiparams{'SEE_SORT'} = $list_sort[0] };
# *.*.*.* or a valid IP
if ( $cgiparams{'SEE_SRC'} !~ /^(\*\.\*\.\*\.\*\.|\d+\.\d+\.\d+\.\d+)$/) { $cgiparams{'SEE_SRC'} = '*.*.*.*' };
&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'});
print <<END
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<table width='60%'>
<tr><td align='center'><b>$Lang::tr{'legend'} : </b></td>
<td align='center' bgcolor='${Header::colourgreen}'><b><font color='#FFFFFF'>$Lang::tr{'lan'}</font></b></td>
<td align='center' bgcolor='${Header::colourred}'><b><font color='#FFFFFF'>$Lang::tr{'internet'}</font></b></td>
<td align='center' bgcolor='${Header::colourorange}'><b><font color='#FFFFFF'>$Lang::tr{'dmz'}</font></b></td>
<td align='center' bgcolor='${Header::colourblue}'><b><font color='#FFFFFF'>$Lang::tr{'wireless'}</font></b></td>
- <td align='center' bgcolor='${Header::colourfw}'><b><font color='#FFFFFF'>IPCop</font></b></td>
+ <td align='center' bgcolor='${Header::colourfw}'><b><font color='#FFFFFF'>IPFire</font></b></td>
<td align='center' bgcolor='${Header::colourvpn}'><b><font color='#FFFFFF'>$Lang::tr{'vpn'}</font></b></td>
+ <td align='center' bgcolor='${Header::colourovpn}'><b><font color='#FFFFFF'>$Lang::tr{'OpenVPN'}</font></b></td>
</tr>
</table>
<br />
<td align='center'><b>$Lang::tr{'marked'}</b></td>
<td align='center'><b>$Lang::tr{'use'}</b></td>
</tr>
-<tr><form method='post' action='$ENV{'SCRIPT_NAME'}'>
+<tr>
<td align='center'>$menu_proto</td>
- <td></td>
+ <td> </td>
<td align='center'>$menu_state</td>
<td align='center'>$menu_src</td>
<td align='center'>$menu_dest</td>
<td align='center'colspan='2'>$Lang::tr{'sort ascending'}:$menu_sort </td>
<td align='center'>$menu_mark</td>
<td align='center'><input type='submit' value='!' /></td>
- </form>
</tr>
END
;
foreach my $entry (sort sort_entries keys %entries) {
-
- print "<tr bgcolor='${Header::table1colour}'>";
my $orgsipcolour = &ipcolour( $entries{$entry}->{orgsip} );
my $orgdipcolour = &ipcolour( $entries{$entry}->{orgdip} );
my $exsipcolour = &ipcolour( $entries{$entry}->{exsip} );
my $exdipcolour = &ipcolour( $entries{$entry}->{exdip} );
print <<END
+ <tr bgcolor='${Header::table1colour}'>
<td align='center'>$entries{$entry}->{protocol}</td>
<td align='center'>$entries{$entry}->{expires}</td>
<td align='center'>$entries{$entry}->{status}</td>
;
}
-print "$unknownlines</table>";
+print "$unknownlines</table></form>";
&Header::closebox();
&Header::closebigbox();
foreach my $value (@_) {
my $check = $selected eq $value ? "selected='selected'" : '';
- $select .= "<option $check value='$value'>$value";
+ $select .= "<option $check value='$value'>$value</option>";
}
$select .= "</select>";
return $select;