1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
   | $requete1="
 SELECT subnet.network,
            subnet.net_mask
 FROM    subnet
 ORDER BY subnet.network desc";
$sth=$dbh->prepare($requete1);
$sth->execute();
my $nb=0;
my @list;
my $currad="";
my $curcol=1;
 
my @color=("green","lred","lorange","lred","lorange");
 
while ($pointer=$sth->fetchrow_hashref)
{
  $long=$pointer->{'net_mask'};
  $long=~/(\d+\.\d+\.\d+)\.(\d+)/;
  $long=(256-$2)/4;
 
  $radical=$pointer->{'network'};;
  $radical=~/(\d+\.\d+\.\d+)\.(\d+)/;
  $radical=$1;
  $start=$2/4;
 
  if(!$data{$radical})
   {
    for($i=0;$i<64;$i++)
     {
      $data{$radical}[$i]=0;
     }
    push(@list,$radical);
   }
  if($radical eq $currad)
   {
    $curcol++;
   }
  else
   {
    $curcol=1;
    $currad=$radical;
   }
  for($i=$start;$i<$start+$long;$i++)
   {
    $data{$radical}[$i]=$curcol;
   }
 
}
$sth->finish();
db_disconnect($dbh);
 
print<<EOF;
<table class='table1'>
 <col width=10>
 <col width=120>
 <col width=15 span 64>
 <tr height=50>
  <td></td>
  <td class='c_grey_m'>IP radical name</td>
EOF
for($i=0;$i<256;$i+=4)
 {
  $i=~/(\d)(\d?)(\d?)/;
  if($3 ne '')
   {
    print "   <td class='c_grey_m'>$1<br>$2<br>$3</td>\n";
   }
  elsif($2 ne '')
   {
    print "   <td class='c_grey_m'>$1<br>$2</td>\n";
   }
  else
   {
    print "   <td class='c_grey_m'>$1</td>\n";
   }
 }
 
while(@list)
  {
   $radical=pop(@list);
print<<EOF;
 <tr>
  <td></td>
  <td class='c_white_m'>$radical.0 / 24</td>
EOF
   $i=0;
   $cptcolor=1;
 
   while($i<64)
    {
     $cpt=0;
     $curcol=$data{$radical}[$i];
     while($data{$radical}[$i+$cpt]==$curcol && ($i+$cpt)<64)
      {
       $cpt++;
      }
     if($curcol==0)
      {
       print "  <td class='c_".$color[0]."' colspan=$cpt> </td>\n";
      }
     else
      {
       print "  <td class='c_".$color[$cptcolor]."' colspan=$cpt> </td>\n";
       $cptcolor++;
       if($cptcolor>4)
        {
         $cptcolor=1;
        }
      }
     $i+=$cpt;
    } | 
Partager