]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/connections.cgi
Hinzugefuegt:
[ipfire-2.x.git] / html / cgi-bin / connections.cgi
index 8384253505690daf2f3d9f453a621bca5a4e60e7..9c5756939b19e4cf215774b20660fa010e77666f 100644 (file)
@@ -6,10 +6,8 @@
 #
 # (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=();
@@ -20,10 +18,10 @@ use Net::IPv4Addr qw( :all );
 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";
 
@@ -106,6 +104,40 @@ if ($netsettings{'BLUE_DEV'}) {
        }
 }
 
+# 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
@@ -154,12 +186,15 @@ my @list_state = ($Lang::tr{'all'}, 'SYN_SENT', 'SYN_RECV', 'ESTABLISHED', 'FIN_
                    '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'} = '*.*.*.*' };
@@ -362,14 +397,16 @@ my $menu_sort  = &make_select ('SEE_SORT',  $cgiparams{'SEE_SORT'},  @list_sort)
 &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 />
@@ -384,28 +421,26 @@ print <<END
     <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>&nbsp;</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>
@@ -432,7 +467,7 @@ END
 ;
 }
 
-print "$unknownlines</table>";
+print "$unknownlines</table></form>";
 
 &Header::closebox();
 &Header::closebigbox();
@@ -465,7 +500,7 @@ sub make_select ($,$,$) {
 
        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;