[Patch] - Ipcop1.4 filtre visu connection par proto/etat/ip

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

[Patch] - Ipcop1.4 filtre visu connection par proto/etat/ip

Messagepar elarifr » 06 Juil 2004 15:51

j'ai modifie le script home/httpd/cgi-bin/connections.cgi
# $Id: connections.cgi,v 1.6 2004/03/04 08:40:45 riddles Exp $
pour pouvoir trier les connections en cours par

- Protocole : tous/tcp/udp
- Etat de connection established/close/syn/wait
- Ip Origine : a apartir de la table arp
- Ip destination ou sur une partie seulement
- Selection Marque ASSURED / UNREPLIED

ca ajoute les menus necesaires pour selectionner ce qu'on veut voir

Voir dernieres maj du script en fin de post.

enjoy :)

il suffit de remplacer par le fichier ci joint si vous avez la même version
sinon ca doit pas être tres dur de modifier si vous avez une version plus ancienne
teste sur 1.4a1 1.4b4 1.4b5

elari

Code: Tout sélectionner
#!/usr/bin/perl
#
# (c) 2001 Jack Beglinger <jackb_guppy@yahoo.com>
#
# (c) 2003 Dave Roberts <countzerouk@hotmail.com> - colour coded netfilter/iptables rewrite for 1.3
#
# $Id: connections.cgi,v 1.6 2004/03/04 08:40:45 riddles Exp $
#

# Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once

my @network;
my @masklen;
my @colour;

use Net::IPv4Addr qw( :all );

require '/var/ipcop/header.pl';

# Read various files

my %netsettings;
&readhash("${swroot}/ethernet/settings", \%netsettings);

open (ACTIVE, "/proc/net/ip_conntrack");
my @active = <ACTIVE>;
close (ACTIVE);

open (ACTIVE, "/proc/net/ipsec_eroute");
my @vpn = <ACTIVE>;
close (ACTIVE);

my $aliasfile = "${swroot}/ethernet/aliases";
open(ALIASES, $aliasfile) or die 'Unable to open aliases file.';
my @aliases = <ALIASES>;
close(ALIASES);

# Add Green Firewall Interface
push(@network, $netsettings{'GREEN_ADDRESS'});
push(@masklen, "255.255.255.255" );
push(@colour, $colourfw );

# Add Green Network to Array
push(@network, $netsettings{'GREEN_NETADDRESS'});
push(@masklen, $netsettings{'GREEN_NETMASK'} );
push(@colour, $colourgreen );

# Add Green Routes to Array
my @routes = `/sbin/route -n | /bin/grep $netsettings{'GREEN_DEV'}`;
foreach $route (@routes) {
   chomp($route);
   my @temp = split(/[\t ]+/, $route);
   push(@network, $temp[0]);
   push(@masklen, $temp[2]);
   push(@colour, $colourgreen );
}

# Add Firewall Localhost 127.0.0.1
push(@network, '127.0.0.1');
push(@masklen, '255.255.255.255' );
push(@colour, $colourfw );

# Add Orange Network
if ($netsettings{'ORANGE_DEV'}) {
   push(@network, $netsettings{'ORANGE_NETADDRESS'});
   push(@masklen, $netsettings{'ORANGE_NETMASK'} );
   push(@colour, $colourorange );
   # Add Orange Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'ORANGE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourorange );
   }
}

# Add Blue Network
if ($netsettings{'BLUE_DEV'}) {
   push(@network, $netsettings{'BLUE_NETADDRESS'});
   push(@masklen, $netsettings{'BLUE_NETMASK'} );
   push(@colour, $colourblue );
   # Add Blue Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'BLUE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourblue );
   }
}

# Add STATIC RED aliases
if ($netsettings{'RED_DEV'}) {
   # We have a RED eth iface
   if ($netsettings{'RED_TYPE'} eq 'STATIC') {
      # We have a STATIC RED eth iface
      my $line;
      foreach $line (@aliases)
      {
         chomp($line);
         my @temp = split(/\,/,$line);
      }
      if ( $temp[0] ) {
         push(@network, $temp[0]);
         push(@masklen, $netsettings{'RED_NETMASK'} );
         push(@colour, $colourfw );
      }
   }
}

# Add VPNs
foreach $line (@vpn)
{
   @temp = split(/[\t ]+/,$line);
   @temp1 = split(/[\/:]+/,$temp[3]);
   push(@network, $temp1[0]);
        push(@masklen, ipv4_cidr2msk($temp1[1]));
        push(@colour, $colourvpn );
}

if (open(IP, "${swroot}/red/local-ipaddress")) {
   my $redip = <IP>;
   close(IP);
   chomp $redip;
   push(@network, $redip);
   push(@masklen, '255.255.255.255' );
   push(@colour, $colourfw );
}


#elari read arp values and display menu to select client
my %cgiparams;
$cgiparams{'ENABLED'} = 'off';
&getcgihash(\%cgiparams);

my ($menu_form, $menu_form_submit, $menu_form_end);
$menu_form        = "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
$menu_form_submit = "<input type='submit' name='' value='Ok' />";
$menu_form_end    = "</form>\n";

my ($menu_proto, $see_proto, $is_proto_all , $is_proto_udp , $is_proto_tcp);
$see_proto  = $cgiparams{'SEE_PROTO'};
if ($see_proto eq "***" ) {$is_proto_all="selected"} else {$is_proto_all=""};
if ($see_proto eq "tcp" ) {$is_proto_tcp="selected"} else {$is_proto_tcp=""};
if ($see_proto eq "udp" ) {$is_proto_udp="selected"} else {$is_proto_udp=""};
$menu_proto = "<select name='SEE_PROTO'><option value='***' $is_proto_all>***</option><option value='udp' $is_proto_udp>udp</option><option value='tcp' $is_proto_tcp>tcp</option></select>";

my ($menu_state, $see_state, $is_state_all, $is_state_est, $is_state_wait, $is_state_syn, $is_state_clos);
$see_state = $cgiparams{'SEE_STATE'};
if ($see_state eq "***" )        {$is_state_all ="selected"} else {$is_state_all =""};
if ($see_state eq "ESTABLISHED" ){$is_state_est ="selected"} else {$is_state_est =""};
if ($see_state eq "TIME_WAIT" )  {$is_state_wait="selected"} else {$is_state_wait=""};
if ($see_state eq "SYN_RECV" )   {$is_state_syn ="selected"} else {$is_state_syn =""};
if ($see_state eq "CLOSE" )      {$is_state_clos="selected"} else {$is_state_clos=""};
$menu_state = "<select name='SEE_STATE'><option value='***' $is_state_all>***</option><option value='ESTABLISHED' $is_state_est>ESTABLISHED</option><option value='TIME_WAIT' $is_state_wait>TIME_WAIT</option><option value='SYN_RECV' $is_state_syn>SYN_RECV</option><option value='CLOSE' $is_state_clos>CLOSE</option></select>";

my ($menu_client, $see_client, $is_select_client);
$see_client = $cgiparams{'SEE_CLIENT'};
open (ARP_ACTIVE, "/proc/net/arp") or die 'Elari: Unable to open arp file.';
$menu_client = "<select name='SEE_CLIENT'>";
while (<ARP_ACTIVE>)
{
   chomp($_);
   my @temp = split(' ');
   $is_select_client= "" ;
   if ($temp[0] eq 'IP') {
                if ($see_client eq "") {$is_select_client = "SELECTED";}
                $menu_client = $menu_client . "<option value='' $is_select_client>*.*.*.*</option>\n";
   } else {
                  if ($see_client eq $temp[0]) {$is_select_client = "SELECTED";}
      $menu_client = $menu_client . "<option value='$temp[0]' $is_select_client>$temp[0]</option>\n";
   }
}
close(ARP_ACTIVE);
$menu_client = $menu_client . "</select>";
#elari end

&showhttpheaders();
&openpage($tr{'connections'}, 1, '');
&openbigbox('100%', 'left');
&openbox('100%', 'left', $tr{'connection tracking'} . " : " . $see_client . ":" . $see_proto . " State: " . $see_state ); #elari we display select menu

print <<END
<table width='60%'>
<tr><td align='center'><b>$tr{'legend'} : </b></td>
     <td align='center' bgcolor='$colourgreen'><b><font color='#FFFFFF'>$tr{'lan'}</font></b></td>
     <td align='center' bgcolor='$colourred'><b><font color='#FFFFFF'>$tr{'internet'}</font></b></td>
     <td align='center' bgcolor='$colourorange'><b><font color='#FFFFFF'>$tr{'dmz'}</font></b></td>
     <td align='center' bgcolor='$colourblue'><b><font color='#FFFFFF'>$tr{'wireless'}</font></b></td>
     <td align='center' bgcolor='$colourfw'><b><font color='#FFFFFF'>IPCop</font></b></td>
     <td align='center' bgcolor='$colourvpn'><b><font color='#FFFFFF'>$tr{'vpn'}</font></b></td>
</tr>
</table>
<br />
<table width='60%'>
<tr><td align='center'><b>$tr{'protocol'}</b></td>
    <td align='center'><b>$tr{'expires'}($tr{'seconds'})</b></td>
    <td align='center'><b>$tr{'connection'}$tr{'status'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'marked'}</b></td>
    <td align='center'><b>$tr{'use'}</b></td>
</tr>
<tr><td align='center'>$menu_form $menu_proto</td>
    <td align='center'></td>
    <td align='center'>$menu_state</td>
    <td align='center'>$menu_client</td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'>$menu_form_submit $menu_form_end</td>
</tr>                 
END
;

my $line;
my $protocol;
my $expires;
my $connstatus;
my $orgsip;
my $orgdip;
my $orgsp;
my $orgdp;
my $exsip;
my $exdip;
my $exsp;
my $exdp;
my $marked;
my $use;
my $orgsipcolour;
my $orgdipcolour;
my $exsipcolour;
my $exdipcolour;

foreach $line (@active)
{
   chomp($line);
   my @temp = split(' ',$line);
#print "0:" . $temp[0] . " 4: " . $temp[4] . (substr $temp[4], 4);

        my ($theclient, $theproto, $thestate);
   if ($temp[0] eq 'udp') {
        $theproto = $temp[0];
        $thestate = "***";                                     
        $theclient = substr $temp[3], 4;
      }
   if ($temp[0] eq 'tcp') {
        $theproto = $temp[0];
        $thestate = $temp[3];                                     
        $theclient = substr $temp[4], 4;
      }          
   if ($temp[0] eq 'unknown') {
        $theproto = "***";
        $thestate = "***";                                     
        $theclient = substr $temp[3], 4;
      }          
        
   if( (($see_proto  eq "***") || ($theproto  eq $see_proto) ) &&   
            (($see_state  eq "***") || ($thestate  eq $see_state) ) &&   
            (($see_client eq "")    || ($theclient eq $see_client) ) ) {
   
   print "<tr bgcolor='$table1colour'>\n";
   if ($temp[0] eq 'udp') {
      my $offset = 0;
      $marked = '';
      $protocol = $temp[0] . " (" . $temp[1] . ")";
      $expires = $temp[2];
      $connstatus = ' ';
      $orgsip = substr $temp[3], 4;
      $orgdip = substr $temp[4], 4;
      $orgsp = substr $temp[5], 6;
      $orgdp = substr $temp[6], 6;
      if ($temp[7] eq '[UNREPLIED]') {
                        $marked = $temp[7];
                        $offset = 1;
                }
                else {
                        $connstatus = ' ';
                }

      $exsip = substr $temp[7 + $offset], 4;
      $exdip = substr $temp[8 + $offset], 4;
      $exsp = substr $temp[9 + $offset], 6;
      $exdp = substr $temp[10 + $offset], 6;
      if ($marked eq '[UNREPLIED]') {
         $use = substr $temp[11 + $offset], 4;
                }
                else {
                        $marked = $temp[11 + $offset];
         $use = substr $marked, 0, 3;
         if ($use eq 'use' ) {
            $marked = '';
            $use = substr $temp[11 + $offset], 4;
         }
         else {
            $use = substr $temp[12 + $offset], 4;
         }
      }
   }
   if ($temp[0] eq 'tcp') {
      my $offset = 0;
                $protocol = $temp[0] . " (" . $temp[1] . ")";
                $expires = $temp[2];
                $connstatus = $temp[3];
                $orgsip = substr $temp[4], 4;
                $orgdip = substr $temp[5], 4;
                $orgsp = substr $temp[6], 6;
      $orgdp = substr $temp[7], 6;
      if ($temp[8] eq '[UNREPLIED]') {
                        $marked = $temp[8];
                        $offset = 1;
         $use = substr $temp[13], 4;
                }
                else {
                        $marked = $temp[12];
         $use = substr $temp[13], 4;
                }
      
      $exsip = substr $temp[8 + $offset], 4;
                $exdip = substr $temp[9 + $offset], 4;
                $exsp = substr $temp[10 + $offset], 6;
                $exdp = substr $temp[11 + $offset], 6;
        }
   if ($temp[0] eq 'unknown') {
                 my $offset = 0;
                $protocol = "??? (" . $temp[1] . ")";
                $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50);
                $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51);
                $expires = $temp[2];
                $connstatus = ' ';
                $orgsip = substr $temp[3], 4;
                $orgdip = substr $temp[4], 4;
                $orgsp = ' ';
                $orgdp = ' ';
                $exsip = substr $temp[5], 4;
                $exdip = substr $temp[6], 4;
                $exsp = ' ';
                $exdp = ' ';
                $marked = ' ';
                $use = ' ';
        }
   $orgsipcolour = ipcolour($orgsip);
   $orgdipcolour = ipcolour($orgdip);
   $exsipcolour = ipcolour($exsip);
   $exdipcolour = ipcolour($exdip);
   print <<END
   <td align='center'>$protocol</td>
   <td align='center'>$expires</td>
   <td align='center'>$connstatus</td>
   <td align='center' bgcolor='$orgsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgsip'><font color='#FFFFFF'>$orgsip</font></a><font color='#FFFFFF'>:$orgsp</font></td>
   <td align='center' bgcolor='$orgdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgdip'><font color='#FFFFFF'>$orgdip</font></a><font color='#FFFFFF'>:$orgdp</font></td>
   <td align='center' bgcolor='$exsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exsip'><font color='#FFFFFF'>$exsip</font></a><font color='#FFFFFF'>:$exsp</font></td>
   <td align='center' bgcolor='$exdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exdip'><font color='#FFFFFF'>$exdip</font></a><font color='#FFFFFF'>:$exdp</font></td>
   <td align='center'>$marked</td><td align='center'>$use</td>
   </tr>
END
   ;
}
}
print "</table>\n";

&closebox();
&closebigbox();
&closepage();

sub ipcolour($) {
   my $id = 0;
   my $line;
   my $colour = $colourred;
   my ($ip) = $_[0];
   my $found = 0;
   foreach $line (@network)
   {
      if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
         $found = 1;
         $colour = $colour[$id];
      }
      $id++;
   }
   return $colour
}
Dernière édition par elarifr le 13 Juil 2004 15:03, édité 2 fois au total.
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar elarifr » 06 Juil 2004 16:14

une petite photo....

Image

et le fichier a charger

http://elari.free.fr/ipcop/connections.cgi.txt
a renomer en .cgi seulement et placer dans home/httpd/cgi-bin
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar erreipnaej » 07 Juil 2004 23:12

Bonsoir Elarifr,

Je viens d'installer to script sur mon IpCop V1.30-9 et ça a l'air de marcher sans probléme.
Etant donné que j'avais installé l'addon Connection sur la version d'origine d'IpCop, je vais tenter de le réinstaller avec ton script pour voir s'ils sont compatibles. [-o<
Je mettrais un nouveau post quand je l'aurais fait. Je vais pour l'instant utiliser to script sans modification pour vérifier sa totale compatibilité.
Les menus sont sympas pour trier les connections selon divers critéres. =D>
@+
Avatar de l’utilisateur
erreipnaej
Vice-Amiral
Vice-Amiral
 
Messages: 614
Inscrit le: 14 Déc 2003 01:00
Localisation: Val d'Oise

Messagepar elarifr » 08 Juil 2004 16:52

merci

j'ai verifie avec la 1.4b5 c'est egalement ok puisque c la même version 1.6 du script qui est encore utilisée

je me suis rendu compte d'un petit probleme a la premiere connection rien n'est selectionné et donc on ne voit rien. je vais le modifier pour avoir au depart de visible les connection established seulement
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

ajout choix ip destination pour filtrage visu

Messagepar elarifr » 09 Juil 2004 16:12

modif script pour visu par defaut des connections de type : all et etat : ESTABLISHED
ajout de la possibilite de choisir les destination à voir en saisissant l'ip complete ou une partie seulement

elari

Code: Tout sélectionner
#!/usr/bin/perl
#
# (c) 2001 Jack Beglinger <jackb_guppy@yahoo.com>
#
# (c) 2003 Dave Roberts <countzerouk@hotmail.com> - colour coded netfilter/iptables rewrite for 1.3
#
# $Id: connections.cgi,v 1.6 2004/03/04 08:40:45 riddles Exp $
#

# Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once

my @network;
my @masklen;
my @colour;

use Net::IPv4Addr qw( :all );

require '/var/ipcop/header.pl';

# Read various files

my %netsettings;
&readhash("${swroot}/ethernet/settings", \%netsettings);

open (ACTIVE, "/proc/net/ip_conntrack");
my @active = <ACTIVE>;
close (ACTIVE);

open (ACTIVE, "/proc/net/ipsec_eroute");
my @vpn = <ACTIVE>;
close (ACTIVE);

my $aliasfile = "${swroot}/ethernet/aliases";
open(ALIASES, $aliasfile) or die 'Unable to open aliases file.';
my @aliases = <ALIASES>;
close(ALIASES);

# Add Green Firewall Interface
push(@network, $netsettings{'GREEN_ADDRESS'});
push(@masklen, "255.255.255.255" );
push(@colour, $colourfw );

# Add Green Network to Array
push(@network, $netsettings{'GREEN_NETADDRESS'});
push(@masklen, $netsettings{'GREEN_NETMASK'} );
push(@colour, $colourgreen );

# Add Green Routes to Array
my @routes = `/sbin/route -n | /bin/grep $netsettings{'GREEN_DEV'}`;
foreach $route (@routes) {
   chomp($route);
   my @temp = split(/[\t ]+/, $route);
   push(@network, $temp[0]);
   push(@masklen, $temp[2]);
   push(@colour, $colourgreen );
}

# Add Firewall Localhost 127.0.0.1
push(@network, '127.0.0.1');
push(@masklen, '255.255.255.255' );
push(@colour, $colourfw );

# Add Orange Network
if ($netsettings{'ORANGE_DEV'}) {
   push(@network, $netsettings{'ORANGE_NETADDRESS'});
   push(@masklen, $netsettings{'ORANGE_NETMASK'} );
   push(@colour, $colourorange );
   # Add Orange Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'ORANGE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourorange );
   }
}

# Add Blue Network
if ($netsettings{'BLUE_DEV'}) {
   push(@network, $netsettings{'BLUE_NETADDRESS'});
   push(@masklen, $netsettings{'BLUE_NETMASK'} );
   push(@colour, $colourblue );
   # Add Blue Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'BLUE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourblue );
   }
}

# Add STATIC RED aliases
if ($netsettings{'RED_DEV'}) {
   # We have a RED eth iface
   if ($netsettings{'RED_TYPE'} eq 'STATIC') {
      # We have a STATIC RED eth iface
      my $line;
      foreach $line (@aliases)
      {
         chomp($line);
         my @temp = split(/\,/,$line);
      }
      if ( $temp[0] ) {
         push(@network, $temp[0]);
         push(@masklen, $netsettings{'RED_NETMASK'} );
         push(@colour, $colourfw );
      }
   }
}

# Add VPNs
foreach $line (@vpn)
{
   @temp = split(/[\t ]+/,$line);
   @temp1 = split(/[\/:]+/,$temp[3]);
   push(@network, $temp1[0]);
        push(@masklen, ipv4_cidr2msk($temp1[1]));
        push(@colour, $colourvpn );
}

if (open(IP, "${swroot}/red/local-ipaddress")) {
   my $redip = <IP>;
   close(IP);
   chomp $redip;
   push(@network, $redip);
   push(@masklen, '255.255.255.255' );
   push(@colour, $colourfw );
}


#elari read arp values and display menu to select client
my %cgiparams;
&getcgihash(\%cgiparams);
if ($cgiparams{'SEE_PROTO'} eq '') { $cgiparams{'SEE_PROTO'}="***"; }
if ($cgiparams{'SEE_STATE'} eq '') { $cgiparams{'SEE_STATE'}="ESTABLISHED"; }

my ($menu_form, $menu_form_submit, $menu_form_end);
$menu_form        = "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
$menu_form_submit = "<input type='submit' name='' value='Ok' />";
$menu_form_end    = "</form>\n";

my ($menu_proto, $see_proto, $is_proto_all , $is_proto_udp , $is_proto_tcp);
$see_proto  = $cgiparams{'SEE_PROTO'};
if ($see_proto eq "***" ) {$is_proto_all="selected"} else {$is_proto_all=""};
if ($see_proto eq "tcp" ) {$is_proto_tcp="selected"} else {$is_proto_tcp=""};
if ($see_proto eq "udp" ) {$is_proto_udp="selected"} else {$is_proto_udp=""};
$menu_proto = "<select name='SEE_PROTO'><option value='***' $is_proto_all>***</option><option value='udp' $is_proto_udp>udp</option><option value='tcp' $is_proto_tcp>tcp</option></select>";

my ($menu_state, $see_state, $is_state_all, $is_state_est, $is_state_wait, $is_state_syn, $is_state_clos);
$see_state = $cgiparams{'SEE_STATE'};
if ($see_state eq "***" )        {$is_state_all ="selected"} else {$is_state_all =""};
if ($see_state eq "ESTABLISHED" ){$is_state_est ="selected"} else {$is_state_est =""};
if ($see_state eq "TIME_WAIT" )  {$is_state_wait="selected"} else {$is_state_wait=""};
if ($see_state eq "SYN_RECV" )   {$is_state_syn ="selected"} else {$is_state_syn =""};
if ($see_state eq "CLOSE" )      {$is_state_clos="selected"} else {$is_state_clos=""};
$menu_state = "<select name='SEE_STATE'><option value='***' $is_state_all>***</option><option value='ESTABLISHED' $is_state_est>ESTABLISHED</option><option value='TIME_WAIT' $is_state_wait>TIME_WAIT</option><option value='SYN_RECV' $is_state_syn>SYN_RECV</option><option value='CLOSE' $is_state_clos>CLOSE</option></select>";

my ($menu_dest, $see_dest);
$see_dest = $cgiparams{'SEE_DEST'};
$menu_dest = "<input type='text' name='SEE_DEST' value='$cgiparams{'SEE_DEST'}' />";

my ($menu_client, $see_client, $is_select_client);
$see_client = $cgiparams{'SEE_CLIENT'};
open (ARP_ACTIVE, "/proc/net/arp") or die 'Elari: Unable to open arp file.';
$menu_client = "<select name='SEE_CLIENT'>";
while (<ARP_ACTIVE>)
{
   chomp($_);
   my @temp = split(' ');
   $is_select_client= "" ;
   if ($temp[0] eq 'IP') {
                if ($see_client eq "") {$is_select_client = "SELECTED";}
                $menu_client = $menu_client . "<option value='' $is_select_client>*.*.*.*</option>\n";
   } else {
                  if ($see_client eq $temp[0]) {$is_select_client = "SELECTED";}
      $menu_client = $menu_client . "<option value='$temp[0]' $is_select_client>$temp[0]</option>\n";
   }
}
close(ARP_ACTIVE);
$menu_client = $menu_client . "</select>";


#elari end

&showhttpheaders();
&openpage($tr{'connections'}, 1, '');
&openbigbox('100%', 'left');
&openbox('100%', 'left', $tr{'connection tracking'} . " : " . $see_client . ":" . $see_proto . " State: " . $see_state ); #elari we display select menu

print <<END
<table width='60%'>
<tr><td align='center'><b>$tr{'legend'} : </b></td>
     <td align='center' bgcolor='$colourgreen'><b><font color='#FFFFFF'>$tr{'lan'}</font></b></td>
     <td align='center' bgcolor='$colourred'><b><font color='#FFFFFF'>$tr{'internet'}</font></b></td>
     <td align='center' bgcolor='$colourorange'><b><font color='#FFFFFF'>$tr{'dmz'}</font></b></td>
     <td align='center' bgcolor='$colourblue'><b><font color='#FFFFFF'>$tr{'wireless'}</font></b></td>
     <td align='center' bgcolor='$colourfw'><b><font color='#FFFFFF'>IPCop</font></b></td>
     <td align='center' bgcolor='$colourvpn'><b><font color='#FFFFFF'>$tr{'vpn'}</font></b></td>
</tr>
</table>
<br />
<table width='60%'>
<tr><td align='center'><b>$tr{'protocol'}</b></td>
    <td align='center'><b>$tr{'expires'}($tr{'seconds'})</b></td>
    <td align='center'><b>$tr{'connection'}$tr{'status'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'marked'}</b></td>
    <td align='center'><b>$tr{'use'}</b></td>
</tr>
<tr><td align='center'>$menu_form $menu_proto</td>
    <td align='center'></td>
    <td align='center'>$menu_state</td>
    <td align='center'>$menu_client</td>
    <td align='center'>$menu_dest</td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'>$menu_form_submit $menu_form_end</td>
</tr>                 
END
;

my $line;
my $protocol;
my $expires;
my $connstatus;
my $orgsip;
my $orgdip;
my $orgsp;
my $orgdp;
my $exsip;
my $exdip;
my $exsp;
my $exdp;
my $marked;
my $use;
my $orgsipcolour;
my $orgdipcolour;
my $exsipcolour;
my $exdipcolour;

foreach $line (@active)
{
   chomp($line);
   my @temp = split(' ',$line);
#print "0:" . $temp[0] . " 4: " . $temp[4] . (substr $temp[4], 4);

        my ($thedest, $theclient, $theproto, $thestate);
   if ($temp[0] eq 'udp') {
        $theproto  = $temp[0];
        $thestate  = "***";                                     
        $theclient = substr $temp[3], 4;
             $thedest   = $temp[4]; # substr $temp[4], 4;
      }
   if ($temp[0] eq 'tcp') {
        $theproto  = $temp[0];
        $thestate  = $temp[3];                                     
        $theclient = substr $temp[4], 4;
        $thedest   = $temp[5]; # substr $temp[5], 4;
      }          
   if ($temp[0] eq 'unknown') {
        $theproto  = "***";
        $thestate  = "***";                                     
        $theclient = substr $temp[3], 4;
             $thedest   = $temp[4]; # substr $temp[4], 4;
      }          
        
   if( (($see_proto  eq "***") || ($theproto  eq $see_proto  ) ) &&   
            (($see_state  eq "***") || ($thestate  eq $see_state  ) ) &&   
            (($see_client eq "")    || ($theclient eq $see_client ) ) &&
            (($see_dest   eq "")    || ($thedest   =~ /$see_dest/ ) ) ) {
   
   print "<tr bgcolor='$table1colour'>\n";
   if ($temp[0] eq 'udp') {
      my $offset = 0;
      $marked = '';
      $protocol = $temp[0] . " (" . $temp[1] . ")";
      $expires = $temp[2];
      $connstatus = ' ';
      $orgsip = substr $temp[3], 4;
      $orgdip = substr $temp[4], 4;
      $orgsp = substr $temp[5], 6;
      $orgdp = substr $temp[6], 6;
      if ($temp[7] eq '[UNREPLIED]') {
                        $marked = $temp[7];
                        $offset = 1;
                }
                else {
                        $connstatus = ' ';
                }

      $exsip = substr $temp[7 + $offset], 4;
      $exdip = substr $temp[8 + $offset], 4;
      $exsp = substr $temp[9 + $offset], 6;
      $exdp = substr $temp[10 + $offset], 6;
      if ($marked eq '[UNREPLIED]') {
         $use = substr $temp[11 + $offset], 4;
                }
                else {
                        $marked = $temp[11 + $offset];
         $use = substr $marked, 0, 3;
         if ($use eq 'use' ) {
            $marked = '';
            $use = substr $temp[11 + $offset], 4;
         }
         else {
            $use = substr $temp[12 + $offset], 4;
         }
      }
   }
   if ($temp[0] eq 'tcp') {
      my $offset = 0;
                $protocol = $temp[0] . " (" . $temp[1] . ")";
                $expires = $temp[2];
                $connstatus = $temp[3];
                $orgsip = substr $temp[4], 4;
                $orgdip = substr $temp[5], 4;
                $orgsp = substr $temp[6], 6;
      $orgdp = substr $temp[7], 6;
      if ($temp[8] eq '[UNREPLIED]') {
                        $marked = $temp[8];
                        $offset = 1;
         $use = substr $temp[13], 4;
                }
                else {
                        $marked = $temp[12];
         $use = substr $temp[13], 4;
                }
      
      $exsip = substr $temp[8 + $offset], 4;
                $exdip = substr $temp[9 + $offset], 4;
                $exsp = substr $temp[10 + $offset], 6;
                $exdp = substr $temp[11 + $offset], 6;
        }
   if ($temp[0] eq 'unknown') {
                 my $offset = 0;
                $protocol = "??? (" . $temp[1] . ")";
                $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50);
                $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51);
                $expires = $temp[2];
                $connstatus = ' ';
                $orgsip = substr $temp[3], 4;
                $orgdip = substr $temp[4], 4;
                $orgsp = ' ';
                $orgdp = ' ';
                $exsip = substr $temp[5], 4;
                $exdip = substr $temp[6], 4;
                $exsp = ' ';
                $exdp = ' ';
                $marked = ' ';
                $use = ' ';
        }
   $orgsipcolour = ipcolour($orgsip);
   $orgdipcolour = ipcolour($orgdip);
   $exsipcolour = ipcolour($exsip);
   $exdipcolour = ipcolour($exdip);
   print <<END
   <td align='center'>$protocol</td>
   <td align='center'>$expires</td>
   <td align='center'>$connstatus</td>
   <td align='center' bgcolor='$orgsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgsip'><font color='#FFFFFF'>$orgsip</font></a><font color='#FFFFFF'>:$orgsp</font></td>
   <td align='center' bgcolor='$orgdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgdip'><font color='#FFFFFF'>$orgdip</font></a><font color='#FFFFFF'>:$orgdp</font></td>
   <td align='center' bgcolor='$exsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exsip'><font color='#FFFFFF'>$exsip</font></a><font color='#FFFFFF'>:$exsp</font></td>
   <td align='center' bgcolor='$exdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exdip'><font color='#FFFFFF'>$exdip</font></a><font color='#FFFFFF'>:$exdp</font></td>
   <td align='center'>$marked</td><td align='center'>$use</td>
   </tr>
END
   ;
}
}
print "</table>\n";

&closebox();
&closebigbox();
&closepage();

sub ipcolour($) {
   my $id = 0;
   my $line;
   my $colour = $colourred;
   my ($ip) = $_[0];
   my $found = 0;
   foreach $line (@network)
   {
      if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
         $found = 1;
         $colour = $colour[$id];
      }
      $id++;
   }
   return $colour
}
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar erreipnaej » 09 Juil 2004 16:44

Bonjour,

Est ce que je peux dl la nouvelle version en suivant le même lien (post au dessus)?
Merci.
@♠+
Avatar de l’utilisateur
erreipnaej
Vice-Amiral
Vice-Amiral
 
Messages: 614
Inscrit le: 14 Déc 2003 01:00
Localisation: Val d'Oise

Messagepar elarifr » 12 Juil 2004 22:12

non j'ai de gros soucis de ftp avec ipcop avec flashfxp (excellent !) ou filezilla (excellent bis) qui m'ouvre des port en plus du 20/21....

[R] 257 "/ipcop" is current directory.
[R] PASV
[R] 227 Entering Passive Mode (212,27,40,252,213,253).
[R] Opening data connection IP: 212.27.40.252 PORT: 54781
[R] Data Socket Error: Connection timed out
[R] List Error
[R] PASV
[R] 227 Entering Passive Mode (212,27,40,252,81,28).
[R] Opening data connection IP: 212.27.40.252 PORT: 20764
[R] LIST -al
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar Gesp » 12 Juil 2004 22:15

J'ai proposé ta modif aux autres dévelopeurs. La seule réponse que j'ai eu est d'Alan qui m'a dit "good" à la question de ce qu'il en pensait.
Avatar de l’utilisateur
Gesp
Amiral
Amiral
 
Messages: 4481
Inscrit le: 29 Déc 2002 01:00

Messagepar leso » 12 Juil 2004 23:25

c'est a intégrer alors :D
MCITP Windows Server 2008, Enterprise Administrator
MCITP Windows Server 2008, Server Administrator
MCITP Exchange 2007 Enterprise Messaging Administrator
Avatar de l’utilisateur
leso
Vice-Amiral
Vice-Amiral
 
Messages: 648
Inscrit le: 03 Avr 2003 00:00
Localisation: Paris

Messagepar elarifr » 13 Juil 2004 08:34

merci :)

je vais rajouter une combo pour le type de liaison (je suis pas devant mon ipcop c'est du type 'assured' je crois )

gesp
ecris moi en mp ton mail pour t'envoyer directement la version cet am si j'ai le temp de l'ecrire

sinon je posterais ici le source tant que j'arrive pas à regler mon pbr de ftp

@+
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar Yann31 » 13 Juil 2004 10:19

Salut elarifr,

Jolie modif du script...

J'ai testé et c'est nickel, seulement la deuxieme version que tu as publié ne fonctionne pas chez moi (1.4b3)...

A+
Y.
Avatar de l’utilisateur
Yann31
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 262
Inscrit le: 20 Août 2002 00:00
Localisation: 31 - near toulouse

Script connection.cgi sur IPCOP 1.4.0a1 ok

Messagepar dpaulet » 13 Juil 2004 12:39

Lut à tous,

Merci pour cette modification, intégré sans problème sur Ipcop 1.4.0a1

Bien a vous

David
Avatar de l’utilisateur
dpaulet
Second Maître
Second Maître
 
Messages: 37
Inscrit le: 04 Mars 2004 01:00
Localisation: Grenoble

Messagepar elarifr » 13 Juil 2004 14:59

maj du script "connections.cgi.ok.2o0713.14h43public"

ajout de choix par "marque" ASSURED / UNREPLIED
je ne sais pas si il y a d'autres type j'ai laisse une reserve au cas ou....

je ne pense pas ajouter de recherche sur les "attendu source et dest"
si besoin s'en fait sentir je rajouterai une selection sur le port destination

je ne peux toujours pas faire de ftp :(((( donc ci dessous


Code: Tout sélectionner
#!/usr/bin/perl
#
# (c) 2001 Jack Beglinger <jackb_guppy@yahoo.com>
#
# (c) 2003 Dave Roberts <countzerouk@hotmail.com> - colour coded netfilter/iptables rewrite for 1.3
#
# (c) 2004 Elari http://elari.free.fr - add optional filtering report for 1.4
#
# $Id: connections.cgi,v 1.6 2004/03/04 08:40:45 riddles Exp $
#

# Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once

my @network;
my @masklen;
my @colour;

use Net::IPv4Addr qw( :all );

require '/var/ipcop/header.pl';

# Read various files

my %netsettings;
&readhash("${swroot}/ethernet/settings", \%netsettings);

open (ACTIVE, "/proc/net/ip_conntrack");
my @active = <ACTIVE>;
close (ACTIVE);

open (ACTIVE, "/proc/net/ipsec_eroute");
my @vpn = <ACTIVE>;
close (ACTIVE);

my $aliasfile = "${swroot}/ethernet/aliases";
open(ALIASES, $aliasfile) or die 'Unable to open aliases file.';
my @aliases = <ALIASES>;
close(ALIASES);

# Add Green Firewall Interface
push(@network, $netsettings{'GREEN_ADDRESS'});
push(@masklen, "255.255.255.255" );
push(@colour, $colourfw );

# Add Green Network to Array
push(@network, $netsettings{'GREEN_NETADDRESS'});
push(@masklen, $netsettings{'GREEN_NETMASK'} );
push(@colour, $colourgreen );

# Add Green Routes to Array
my @routes = `/sbin/route -n | /bin/grep $netsettings{'GREEN_DEV'}`;
foreach $route (@routes) {
   chomp($route);
   my @temp = split(/[\t ]+/, $route);
   push(@network, $temp[0]);
   push(@masklen, $temp[2]);
   push(@colour, $colourgreen );
}

# Add Firewall Localhost 127.0.0.1
push(@network, '127.0.0.1');
push(@masklen, '255.255.255.255' );
push(@colour, $colourfw );

# Add Orange Network
if ($netsettings{'ORANGE_DEV'}) {
   push(@network, $netsettings{'ORANGE_NETADDRESS'});
   push(@masklen, $netsettings{'ORANGE_NETMASK'} );
   push(@colour, $colourorange );
   # Add Orange Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'ORANGE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourorange );
   }
}

# Add Blue Network
if ($netsettings{'BLUE_DEV'}) {
   push(@network, $netsettings{'BLUE_NETADDRESS'});
   push(@masklen, $netsettings{'BLUE_NETMASK'} );
   push(@colour, $colourblue );
   # Add Blue Routes to Array
   @routes = `/sbin/route -n | /bin/grep $netsettings{'BLUE_DEV'}`;
   foreach $route (@routes) {
        chomp($route);
      my @temp = split(/[\t ]+/, $route);
      push(@network, $temp[0]);
      push(@masklen, $temp[2]);
      push(@colour, $colourblue );
   }
}

# Add STATIC RED aliases
if ($netsettings{'RED_DEV'}) {
   # We have a RED eth iface
   if ($netsettings{'RED_TYPE'} eq 'STATIC') {
      # We have a STATIC RED eth iface
      my $line;
      foreach $line (@aliases)
      {
         chomp($line);
         my @temp = split(/\,/,$line);
      }
      if ( $temp[0] ) {
         push(@network, $temp[0]);
         push(@masklen, $netsettings{'RED_NETMASK'} );
         push(@colour, $colourfw );
      }
   }
}

# Add VPNs
foreach $line (@vpn)
{
   @temp = split(/[\t ]+/,$line);
   @temp1 = split(/[\/:]+/,$temp[3]);
   push(@network, $temp1[0]);
        push(@masklen, ipv4_cidr2msk($temp1[1]));
        push(@colour, $colourvpn );
}

if (open(IP, "${swroot}/red/local-ipaddress")) {
   my $redip = <IP>;
   close(IP);
   chomp $redip;
   push(@network, $redip);
   push(@masklen, '255.255.255.255' );
   push(@colour, $colourfw );
}


#elari read arp values and display menu to select client
#http://elari.free.fr/ipcop 13 July 2004
my %cgiparams;
#$cgiparams{'ENABLED'} = 'off';
&getcgihash(\%cgiparams);
if ($cgiparams{'SEE_PROTO'} eq '') { $cgiparams{'SEE_PROTO'}="***"; }
if ($cgiparams{'SEE_STATE'} eq '') { $cgiparams{'SEE_STATE'}="ESTABLISHED"; }
if ($cgiparams{'SEE_MARK'}  eq '') { $cgiparams{'SEE_MARK'}= "[ASSURED]"; }

my ($menu_form, $menu_form_submit, $menu_form_end);
$menu_form        = "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
$menu_form_submit = "<input type='submit' name='' value='Ok' />";
$menu_form_end    = "</form>\n";

my ($menu_proto, $see_proto, $is_proto_all , $is_proto_udp , $is_proto_tcp);
$see_proto  = $cgiparams{'SEE_PROTO'};
if ($see_proto eq "***" ) {$is_proto_all="selected"} else {$is_proto_all=""};
if ($see_proto eq "tcp" ) {$is_proto_tcp="selected"} else {$is_proto_tcp=""};
if ($see_proto eq "udp" ) {$is_proto_udp="selected"} else {$is_proto_udp=""};
$menu_proto = "<select name='SEE_PROTO'><option value='***' $is_proto_all>***</option><option value='udp' $is_proto_udp>udp</option><option value='tcp' $is_proto_tcp>tcp</option></select>";

my ($menu_state, $see_state, $is_state_all, $is_state_est, $is_state_wait, $is_state_syn, $is_state_clos);
$see_state = $cgiparams{'SEE_STATE'};
if ($see_state eq "***" )        {$is_state_all ="selected"} else {$is_state_all =""};
if ($see_state eq "ESTABLISHED" ){$is_state_est ="selected"} else {$is_state_est =""};
if ($see_state eq "TIME_WAIT" )  {$is_state_wait="selected"} else {$is_state_wait=""};
if ($see_state eq "SYN_RECV" )   {$is_state_syn ="selected"} else {$is_state_syn =""};
if ($see_state eq "CLOSE" )      {$is_state_clos="selected"} else {$is_state_clos=""};
$menu_state = "<select name='SEE_STATE'><option value='***' $is_state_all>***</option><option value='ESTABLISHED' $is_state_est>ESTABLISHED</option><option value='TIME_WAIT' $is_state_wait>TIME_WAIT</option><option value='SYN_RECV' $is_state_syn>SYN_RECV</option><option value='CLOSE' $is_state_clos>CLOSE</option></select>";

my ($menu_dest, $see_dest);
$see_dest = $cgiparams{'SEE_DEST'};
$menu_dest = "<input type='text' name='SEE_DEST' value='$cgiparams{'SEE_DEST'}' />";

my ($menu_mark, $see_mark, $is_mark_all, $is_mark_ass, $is_mark_o1, $is_mark_o2);  # elari 2o0713 i don't know which other mark state
$see_mark = $cgiparams{'SEE_MARK'};                                                # o1 & o2 are just reserved ..... 
print $see_mark;
if ($see_mark eq "***" )        {$is_mark_all ="selected"} else {$is_mark_all =""};
if ($see_mark eq "[ASSURED]" )  {$is_mark_ass ="selected"} else {$is_mark_est =""};
if ($see_mark eq "[UNREPLIED]" ){$is_mark_unr ="selected"} else {$is_mark_unr =""};
if ($see_mark eq "[other2]" )   {$is_mark_o2  ="selected"} else {$is_mark_o2 =""};
$menu_mark = "<select name='SEE_MARK'><option value='***' $is_mark_all>***</option><option value='[ASSURED]' $is_mark_ass>ASSURED</option><option value='[UNREPLIED]' $is_mark_unr>UNREPLIED</option><option value='[Other2]' $is_mark_o2>Reserve2</option></select>";

my ($menu_client, $see_client, $is_select_client);
$see_client = $cgiparams{'SEE_CLIENT'};
open (ARP_ACTIVE, "/proc/net/arp") or die 'Elari: Unable to open arp file.';
$menu_client = "<select name='SEE_CLIENT'>";
while (<ARP_ACTIVE>)
{
   chomp($_);
   my @temp = split(' ');
   $is_select_client= "" ;
   if ($temp[0] eq 'IP') {
                if ($see_client eq "") {$is_select_client = "SELECTED";}
                $menu_client = $menu_client . "<option value='' $is_select_client>*.*.*.*</option>\n";
   } else {
                  if ($see_client eq $temp[0]) {$is_select_client = "SELECTED";}
      $menu_client = $menu_client . "<option value='$temp[0]' $is_select_client>$temp[0]</option>\n";
   }
}
close(ARP_ACTIVE);
$menu_client = $menu_client . "</select>";
#elari end

&showhttpheaders();
&openpage($tr{'connections'}, 1, '');
&openbigbox('100%', 'left');
&openbox('100%', 'left', $tr{'connection tracking'} . " : " . $see_client . " : " . $see_proto . " - State: " . $see_state . " : " . $see_mark ); #elari we display select menu

print <<END
<table width='60%'>
<tr><td align='center'><b>$tr{'legend'} : </b></td>
     <td align='center' bgcolor='$colourgreen'><b><font color='#FFFFFF'>$tr{'lan'}</font></b></td>
     <td align='center' bgcolor='$colourred'><b><font color='#FFFFFF'>$tr{'internet'}</font></b></td>
     <td align='center' bgcolor='$colourorange'><b><font color='#FFFFFF'>$tr{'dmz'}</font></b></td>
     <td align='center' bgcolor='$colourblue'><b><font color='#FFFFFF'>$tr{'wireless'}</font></b></td>
     <td align='center' bgcolor='$colourfw'><b><font color='#FFFFFF'>IPCop</font></b></td>
     <td align='center' bgcolor='$colourvpn'><b><font color='#FFFFFF'>$tr{'vpn'}</font></b></td>
</tr>
</table>
<br />
<table width='60%'>
<tr><td align='center'><b>$tr{'protocol'}</b></td>
    <td align='center'><b>$tr{'expires'}($tr{'seconds'})</b></td>
    <td align='center'><b>$tr{'connection'}$tr{'status'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'original'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'source ip and port'}</b></td>
    <td align='center'><b>$tr{'expected'}$tr{'dest ip and port'}</b></td>
    <td align='center'><b>$tr{'marked'}</b></td>
    <td align='center'><b>$tr{'use'}</b></td>
</tr>
<tr><td align='center'>$menu_form $menu_proto</td>
    <td align='center'></td>
    <td align='center'>$menu_state</td>
    <td align='center'>$menu_client</td>
    <td align='center'>$menu_dest</td>
    <td align='center'></td>
    <td align='center'></td>
    <td align='center'>$menu_mark</td>
    <td align='center'>$menu_form_submit $menu_form_end</td>
</tr>                 
END
;

my $line;
my $protocol;
my $expires;
my $connstatus;
my $orgsip;
my $orgdip;
my $orgsp;
my $orgdp;
my $exsip;
my $exdip;
my $exsp;
my $exdp;
my $marked;
my $use;
my $orgsipcolour;
my $orgdipcolour;
my $exsipcolour;
my $exdipcolour;

foreach $line (@active)
{
   chomp($line);
   my @temp = split(' ',$line);
#print "11:" . $temp[11] . "12: " . $temp[12];

        my ($thedest, $theclient, $theproto, $thestate, $themark);
   if ($temp[0] eq 'udp') {
        $theproto  = $temp[0];
        $thestate  = "***";                                     
        $theclient = substr $temp[3], 4;
             $thedest   = $temp[4]; # substr $temp[4], 4;
             $themark   = $temp[11];
      }
   if ($temp[0] eq 'tcp') {
        $theproto  = $temp[0];
        $thestate  = $temp[3];                                     
        $theclient = substr $temp[4], 4;
        $thedest   = $temp[5]; # substr $temp[5], 4;
             $themark   = $temp[12];        
      }          
   if ($temp[0] eq 'unknown') {
        $theproto  = "***";
        $thestate  = "***";                                     
        $theclient = substr $temp[3], 4;
             $thedest   = $temp[4]; # substr $temp[4], 4;
             $themark   = $temp[11];
      }          
        
   if( (($see_proto  eq "***") || ($theproto  eq $see_proto  ) ) &&   
            (($see_state  eq "***") || ($thestate  eq $see_state  ) ) &&   
            (($see_mark   eq "***") || ($themark   eq $see_mark   ) ) &&
            (($see_client eq "")    || ($theclient eq $see_client ) ) &&
            (($see_dest   eq "")    || ($thedest   =~ /$see_dest/ ) ) ) {
   
   print "<tr bgcolor='$table1colour'>\n";
   if ($temp[0] eq 'udp') {
      my $offset = 0;
      $marked = '';
      $protocol = $temp[0] . " (" . $temp[1] . ")";
      $expires = $temp[2];
      $connstatus = ' ';
      $orgsip = substr $temp[3], 4;
      $orgdip = substr $temp[4], 4;
      $orgsp = substr $temp[5], 6;
      $orgdp = substr $temp[6], 6;
      if ($temp[7] eq '[UNREPLIED]') {
                        $marked = $temp[7];
                        $offset = 1;
                }
                else {
                        $connstatus = ' ';
                }

      $exsip = substr $temp[7 + $offset], 4;
      $exdip = substr $temp[8 + $offset], 4;
      $exsp = substr $temp[9 + $offset], 6;
      $exdp = substr $temp[10 + $offset], 6;
      if ($marked eq '[UNREPLIED]') {
         $use = substr $temp[11 + $offset], 4;
                }
                else {
                        $marked = $temp[11 + $offset];
         $use = substr $marked, 0, 3;
         if ($use eq 'use' ) {
            $marked = '';
            $use = substr $temp[11 + $offset], 4;
         }
         else {
            $use = substr $temp[12 + $offset], 4;
         }
      }
   }
   if ($temp[0] eq 'tcp') {
      my $offset = 0;
                $protocol = $temp[0] . " (" . $temp[1] . ")";
                $expires = $temp[2];
                $connstatus = $temp[3];
                $orgsip = substr $temp[4], 4;
                $orgdip = substr $temp[5], 4;
                $orgsp = substr $temp[6], 6;
      $orgdp = substr $temp[7], 6;
      if ($temp[8] eq '[UNREPLIED]') {
                        $marked = $temp[8];
                        $offset = 1;
         $use = substr $temp[13], 4;
                }
                else {
                        $marked = $temp[12];
         $use = substr $temp[13], 4;
                }
      
      $exsip = substr $temp[8 + $offset], 4;
                $exdip = substr $temp[9 + $offset], 4;
                $exsp = substr $temp[10 + $offset], 6;
                $exdp = substr $temp[11 + $offset], 6;
        }
   if ($temp[0] eq 'unknown') {
                 my $offset = 0;
                $protocol = "??? (" . $temp[1] . ")";
                $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50);
                $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51);
                $expires = $temp[2];
                $connstatus = ' ';
                $orgsip = substr $temp[3], 4;
                $orgdip = substr $temp[4], 4;
                $orgsp = ' ';
                $orgdp = ' ';
                $exsip = substr $temp[5], 4;
                $exdip = substr $temp[6], 4;
                $exsp = ' ';
                $exdp = ' ';
                $marked = ' ';
                $use = ' ';
        }
   $orgsipcolour = ipcolour($orgsip);
   $orgdipcolour = ipcolour($orgdip);
   $exsipcolour = ipcolour($exsip);
   $exdipcolour = ipcolour($exdip);
   print <<END
   <td align='center'>$protocol</td>
   <td align='center'>$expires</td>
   <td align='center'>$connstatus</td>
   <td align='center' bgcolor='$orgsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgsip'><font color='#FFFFFF'>$orgsip</font></a><font color='#FFFFFF'>:$orgsp</font></td>
   <td align='center' bgcolor='$orgdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$orgdip'><font color='#FFFFFF'>$orgdip</font></a><font color='#FFFFFF'>:$orgdp</font></td>
   <td align='center' bgcolor='$exsipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exsip'><font color='#FFFFFF'>$exsip</font></a><font color='#FFFFFF'>:$exsp</font></td>
   <td align='center' bgcolor='$exdipcolour'><a href='/cgi-bin/ipinfo.cgi?ip=$exdip'><font color='#FFFFFF'>$exdip</font></a><font color='#FFFFFF'>:$exdp</font></td>
   <td align='center'>$marked</td><td align='center'>$use</td>
   </tr>
END
   ;
}
}
print "</table>\n";

&closebox();
&closebigbox();
&closepage();

sub ipcolour($) {
   my $id = 0;
   my $line;
   my $colour = $colourred;
   my ($ip) = $_[0];
   my $found = 0;
   foreach $line (@network)
   {
      if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) {
         $found = 1;
         $colour = $colour[$id];
      }
      $id++;
   }
   return $colour
}
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Messagepar Gesp » 12 Août 2004 17:13

a mon retour de vacance mon ipcop etait hs (kernel panic) et j'ai reinstallé la 1.4b7

depuis impossible de refaire marcher mes modifs de scripts connections et hosttrusted

j'ai toujours une erreur 500 internal server sans plus d'infos.....


y'a t'il eu une modif de perl ?

y'a t'il moyen de configurer perl pour avoir la ligne d'erreur ?


perl est passé de 5.8.2 en 5.8.4 en v1.4.0b5 et sera en 5.8.5 en b9

Pourtant j'ai dù essayer en b6 sans problème (je ne garantie pas que ce soit avec la dernière version mais il me semble)

Les erreurs vont dans /var/log/httpd/error_log
Avatar de l’utilisateur
Gesp
Amiral
Amiral
 
Messages: 4481
Inscrit le: 29 Déc 2002 01:00

Messagepar elarifr » 12 Août 2004 18:51

merci

en fait juste avant de partir j'avais fait des modifs que je n'avais pas maj et mal identifie sur ixus...

du coup le script publie ne marche pas et il faut que je redebug le tout :(

mais bon pas grand chose normalement, juste des pbr de typo qui vont me casser les pieds


tu penses pouvoir passer les modifs proposées (une fois ok) sur la version finale 1.4 ?
IPCop 1.5 - P166 - 64Mo 2Go
Routeur Zyxell ADSL (Free Dégroupé) en Serveur DHCP -> { IPcop Red + Mac } ->
IpCop (Serveur DHCP) -> Orange + Green.
Serveur DEBIAN Sarge en DMZ
elarifr
Major
Major
 
Messages: 76
Inscrit le: 16 Fév 2004 01:00
Localisation: strasbourg alsace

Suivant

Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité