Changeset 4 for www/is/topologie-img.php


Ignore:
Timestamp:
Jan 14, 2008, 9:48:39 PM (17 years ago)
Author:
george
Message:

Upraveno: Změna přístupu k databázi na třídu rozšířenou mysqli.
Upraveno: Sjednocení
Upraveno: Změna kódování všech stránek na UTF-8.
Odstraňeno: Staré nepotřebné soubory.

Location:
www
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • www

    • Property svn:ignore set to
      config.php
      php_script_error.log
  • www/is/topologie-img.php

    r1 r4  
    1 <? // Skript pro generování grafu stromové struktury sítì do PNG obrázku
    2 include('../db.php');
    3 DB_Init('localhost','root','','is');
    4 
     1<?php
     2 // Skript pro generování grafu stromové struktury sítě do PNG obrázku
     3include('../global.php');
    54
    65if(array_key_exists('debug', $_GET)) $debug = $_GET['debug'];
     
    98// $debug = 0;
    109
    11 // === Zpìtné vyvá¾ení stromu do hloubky =======================================
    12 function balance($id, $level, &$vlast, &$vleft, &$vpred, &$vfirst, &$vnext, &$tbound, &$width, $limit) {
     10// === Zpětné vyvážení stromu do hloubky =======================================
     11function balance($id, $level, &$vlast, &$vleft, &$vpred, &$vfirst, &$vnext, &$tbound, &$width, $limit)
     12{
    1313  global $debug, $bbound;
    14   if ($i=@$vfirst[$id]) {
     14 
     15  if ($i=@$vfirst[$id])
     16  {
    1517    if ($debug==2) echo @$id.':'.@$i.','.@$vpred[$i].'-'.@$vleft[@$vpred[$i]]."\n";
    16     if ((@$vlast[$id]>0)&&(@$vleft[$id]>@$vleft[$vlast[$id]])) {
     18    if ((@$vlast[$id]>0)&&(@$vleft[$id]>@$vleft[$vlast[$id]]))
     19    {
    1720      $diff=$vleft[$id]-$vleft[$vlast[$id]];
    1821      $i=$vfirst[$id];
    19       if ($vleft[$id]>=@$tbound[$level]) {
     22      if ($vleft[$id]>=@$tbound[$level])
     23      {
    2024        $tbound[$level]=$vleft[$id]+2;
    2125        if ($vleft[$id]>$width) $width=$vleft[$id];
     
    2327    } else {
    2428      $diff=0;
    25       if ($vpred[$i]&&($vleft[$i]<=$vleft[$vpred[$i]])) {
     29      if ($vpred[$i]&&($vleft[$i]<=$vleft[$vpred[$i]]))
     30      {
    2631        $diff=$vleft[$i]-$vleft[$vpred[$i]]+2;
    2732      } else $i = 0;
    2833    }
    29     while ($i>0) {
     34    while ($i>0)
     35    {
    3036      $vleft[$i]+=$diff;
    3137      $limit = balance($i,$level+1, $vlast,$vleft,$vpred, $vfirst,$vnext,$tbound, $width, $limit) + 2;
     
    3642
    3743// === Generování rovinné stromové struktury ===================================
    38 function gentree($mode) {                        // depth-first algorithm
    39 global $debug, $TopHostName;
     44function gentree($mode)                         // depth-first algorithm
     45{                       
     46  global $debug, $TopHostName, $Database;
     47 
    4048  // --- Inicializace ----------------------------------------------------------
    41   $tbound=array();                               // Hranice pozic jednotlivých úrovní
    42   $tranger=array();                              // Hranicni prvek
    43   $position=array();                             // Pozice aktuálního prvku na dané úrovni
    44   $vfirst=array();                               // První potomek prvku
    45   $vlast=array();                                // Poslední potomek prvku
    46   $vnext=array();                                // Následující sourozenec
    47   $vleft=array();                                // Pozice prvku zleva
    48   $vtop=array();                                 // Pozice prvku shora
    49   $vpred=array();                                // Vedlejsi prvek na øádku
     49  $tbound = array();                               // Hranice pozic jednotlivých úrovní
     50  $tranger = array();                              // Hranicni prvek
     51  $position = array();                             // Pozice aktuálního prvku na dané úrovni
     52  $vfirst = array();                               // První potomek prvku
     53  $vlast = array();                                // Poslední potomek prvku
     54  $vnext = array();                                // Následující sourozenec
     55  $vleft = array();                                // Pozice prvku zleva
     56  $vtop = array();                                 // Pozice prvku shora
     57  $vpred = array();                                // Vedlejsi prvek na řádku
    5058 
    5159  $index = 0;                                    // Index aktuálního prvku
    5260  $curr = 0;                                     // Aktuální prvek
    53   $level = 0;                                    // Aktuální úroveò hloubky ve stromu
    54   $width = 0;                                    // ©íøka stromu
     61  $level = 0;                                    // Aktuální úroveň hloubky ve stromu
     62  $width = 0;                                    // Šířka stromu
    5563  $height = 0;                                   // Hloubka stromu
    5664
    57   $parent[$level]=0;                             // Rodiè dané úrovnì
     65  $parent[$level]=0;                             // Rodič dané úrovně
    5866  $position[$level]=0;                           // Aktuální pozice prvku na dané úrovni
    59   $count[$level]=0;                              // Poèet prvkù na dané úrovni
     67  $count[$level]=0;                              // Počet prvků na dané úrovni
    6068 
    6169  // --- Hlavní cyklus ---------------------------------------------------------
    62   do {
    63   // --- Proveï databázový dotaz -----------------------------------------------
     70  do
     71  {
     72  // --- Proveď databázový dotaz -----------------------------------------------
    6473    $query = 'SELECT * FROM hosts WHERE used=1 AND ';
    65     if ($level==0) { $query .= 'name = "'.$TopHostName.'" ORDER BY id'; } else {
     74    if ($level==0)
     75    {
     76      $query .= 'name = "'.$TopHostName.'" ORDER BY id';
     77    } else
     78    {
    6679      $query .= ' parent = '.$parent[$level].' ORDER BY id';
    6780    }
    6881    if ($mode) $query.=' DESC';
    6982    $query .= ' LIMIT '.$position[$level].',1';
    70     DB_Query($query);
    71     $item = DB_Row();
     83    $DbResult = $Database->query($query);
     84    $item = $DbResult->fetch_array();
    7285    if ($item) {
    73   // --- Zpracování polo¾ky z DB -----------------------------------------------
    74       if ($position[$level]>0) {
    75         $vnext[$curr]=$item['id']; // Neprvní polo¾ka, nastav pøedchozí
     86  // --- Zpracování položky z DB -----------------------------------------------
     87      if($position[$level] > 0)
     88      {
     89        $vnext[$curr]=$item['id']; // Neprvní položka, nastav předchozí
    7690      }
    7791      $curr = $item['id'];
    78       if ($curr>@$maxindex) $maxindex=$curr;
    79       if ($position[$level]==0) $vfirst[$parent[$level]]=$curr; // První polo¾ka, nastav první
     92      if ($curr > @$maxindex) $maxindex=$curr;
     93      if ($position[$level] == 0) $vfirst[$parent[$level]]=$curr; // První položka, nastav první
    8094      $vlast[$parent[$level]]=$curr;
    8195      $vtop[$curr] = $level;
     
    8397      $vpred[$curr] = @$tranger[$level];
    8498      $tranger[$level] = $curr;
    85       if (($debug==3)&&($level==8)) echo $curr.',';
     99      if (($debug == 3) && ($level == 8)) echo $curr.',';
    86100      $position[$level]++;
    87101      $count[$level]++;
    88   // --- Zjisti existenci potomkù ----------------------------------------------
    89       DB_Query("SELECT COUNT(*) FROM hosts WHERE used=1 AND parent = ".$curr);
    90       $childcnt = DB_Row();
    91       if ($childcnt[0]>0) {                      // Uzelový vrchol
    92         if (@$tbound[$level+1]>$vleft[$curr]) $vleft[$curr]=@$tbound[$level+1];
    93       }
    94       $tbound[$level]=$vleft[$curr]+2;
    95       if ($vleft[$curr]>$width) $width=$vleft[$curr];
    96       if ($childcnt[0]>0) {
     102  // --- Zjisti existenci potomků ----------------------------------------------
     103      $DbResult = $Database->query("SELECT COUNT(*) FROM hosts WHERE used=1 AND parent = ".$curr);
     104      $childcnt = $DbResult->fetch_array();
     105      if ($childcnt[0] > 0)
     106      {                      // Uzelový vrchol
     107        if(@$tbound[$level + 1] > $vleft[$curr]) $vleft[$curr] = @$tbound[$level + 1];
     108      }
     109      $tbound[$level] = $vleft[$curr] + 2;
     110      if ($vleft[$curr] > $width) $width = $vleft[$curr];
     111      if ($childcnt[0] > 0)
     112      {
    97113        $level++;
    98         if ($level>$height) $height = $level;
    99         $parent[$level]=$curr;
     114        if ($level > $height) $height = $level;
     115        $parent[$level] = $curr;
    100116        $position[$level]=0;
    101117        $count[$level] = 0;
    102118      } else $index++;                            // Listový vrchol
    103119    } else {
    104   // --- Zarovnávání prvkù kvùli vzhledu
     120  // --- Zarovnávání prvků kvůli vzhledu
    105121      if (@$vleft[$vfirst[$parent[$level]]]>@$vleft[$parent[$level]]) {
    106122        $vleft[$parent[$level]] = $vleft[$vfirst[$parent[$level]]];
     
    115131      if (@$tbound[$level]>@$tbound[$level+1]) $tbound[$level+1]=$tbound[$level];
    116132    }
    117   } while ($level>=0);
     133  } while($level >= 0);
    118134  $data = compact('tbound','count','tbound','vfirst','vlast','vtop','vleft','height','width','index','maxindex');
    119135  return $data;
    120136};
    121137
    122 // === Vytvoø stromy a spoj je =================================================
     138// === Vytvoř stromy a spoj je =================================================
    123139extract(gentree(0));
    124140// exit();
     
    131147$halfx=$spacex/2;
    132148$halfy=$spacey/2;
    133 // === Naètení pomocných obrázkù ===============================================
     149// === Načtení pomocných obrázků ===============================================
    134150$im_comp = @imagecreatefrompng('images/comp.png');
    135151$im_dev = @imagecreatefrompng('images/device.png');
     
    148164}
    149165
    150 DB_Query("SELECT * FROM hosts WHERE used=1");
    151 while ($item = DB_Row()) {
     166$DbResult = $Database->query("SELECT * FROM hosts WHERE used=1");
     167while ($item = $DbResult->fetch_array())
     168{
    152169  $id = $item['id'];
    153   if ((@$vtop[$id]>0)||($item['name']==$TopHostName)) {
     170  if ((@$vtop[$id]>0)||($item['name']==$TopHostName))
     171  {
    154172    if ($vtop[$id]>0) imageline($im,xpos($id)+$halfx,@$vtop[$id]*$spacey,xpos($id)+$halfx,@$vtop[$id]*$spacey+8,$black);
    155173    if (@$vfirst[$id]>0) {
     
    159177    $ip=explode('.',$item['IP']);
    160178    if (@$ip[3]<100) { $image=$im_comp; } else $image=$im_dev; 
    161     if(($ip[0] != 192) and ($ip[0] != 168)) {
     179    if(($ip[0] != 192) and ($ip[0] != 168))
     180    {
    162181      $image = $im_dev;
    163182    }
    164     if($item['IP'] == '') {
     183    if($item['IP'] == '')
     184    {
    165185      $color = $gray;
    166186      $image = $im_dev;
    167187    } else {
    168       if ((($ip[0] != 192) and ($ip[0] != 168)) or ($ip[3]>=100) or ($ip[3]==1)) {
     188      if ((($ip[0] != 192) and ($ip[0] != 168)) or ($ip[3]>=100) or ($ip[3]==1))
     189      {
    169190        if($item['online'] == 1) { $color = $green; } else $color = $red;
    170191      } else {
     
    186207{
    187208  header("Content-type: image/png");
    188   header("Cache-Control: no-cache");    // Dynamický graf, neke¹ovat
     209  header("Cache-Control: no-cache");    // Dynamický graf, nekešovat
    189210  imagepng($im);
    190211  imagedestroy($im);
Note: See TracChangeset for help on using the changeset viewer.