Changeset 358 for trunk/Modules/NetworkTopology/NetworkTopology.php
- Timestamp:
- Jan 18, 2012, 10:58:27 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Modules/NetworkTopology/NetworkTopology.php
r357 r358 1 1 <?php 2 3 function xpos() 4 { 5 global $vleft, $spacex; 6 return($vleft * $spacex); 7 } 8 9 class NetworkTopologyPage extends Page 10 { 11 var $FullTitle = 'Grafické zobrazení topologie sítě'; 12 var $ShortTitle = 'Topologie sítě'; 13 var $TopHostName = 'NIX-ROUTER'; 14 15 function Show() 16 { 17 if(count($this->System->PathItems) > 1) 18 { 19 if($this->System->PathItems[1] == 'topologie.png') return($this->ShowImage()); 20 else return(PAGE_NOT_FOUND); 21 22 } else return($this->ShowOverview()); 23 } 24 25 function ShowImage() 26 { 27 $this->SimplePage = true; 28 $this->FormatHTML = false; 29 30 if(array_key_exists('debug', $_GET)) $debug = $_GET['debug']; 31 else $debug = 0; 32 // $debug = 0; 33 34 // === Vytvoř stromy a ulož výsledek do databáze =============================== 35 $DbResult = $this->Database->query("SELECT MAX(pos), MAX(depth) FROM hosts_topology"); 36 $item = $DbResult->fetch_array(); 37 $width = $item[0]; 38 $height = $item[1]; 39 40 $spacex = 32; 41 $spacey = 68; 42 $halfx = $spacex / 2; 43 $halfy = $spacey / 2; 44 // === Načtení pomocných obrázků =============================================== 45 $im_comp = imagecreatefrompng(dirname(__FILE__).'/images/comp.png'); 46 $im_dev = imagecreatefrompng(dirname(__FILE__).'/images/device.png'); 47 // === Generování obrázku ====================================================== 48 $im = imagecreate(($width + 1.6) * $spacex, ($height + 1) * $spacey); 49 $background_color = imagecolorallocate($im, 255, 255, 255); 50 $black = imagecolorallocate($im, 0, 0, 0); 51 $red = imagecolorallocate($im, 255, 0, 0); 52 $green = imagecolorallocate($im, 0, 128, 0); 53 $blue = imagecolorallocate($im, 100, 100, 255); 54 $gray = imagecolorallocate($im, 160, 160, 160); 55 56 //$DbResult = $Database->query("SELECT * FROM hosts, hosts_topology WHERE host = id AND used=1"); 57 $DbResult = $this->Database->query("SELECT tpl.*, tpl.host AS id, dev.name AS name, dev.online AS online, dtp.iconname AS iconname, 1 AS showonline 58 FROM hosts_topology tpl LEFT JOIN NetworkDevice dev ON dev.id = tpl.host LEFT JOIN NetworkDeviceType dtp ON dev.type = dtp.id"); 59 while($item = $DbResult->fetch_array()) 60 { 61 $id = $item['id']; 62 $vleft = $item['pos']; 63 $vtop = $item['depth']; 64 $vfirst = $item['first']; 65 $vlast = $item['last']; 66 if(($vtop > 0) || ($item['name'] == $this->TopHostName)) 67 { 68 if($vtop > 0) imageline($im, xpos() + $halfx, $vtop * $spacey, xpos() + $halfx, $vtop * $spacey + 8, $black); 69 if($vfirst >= 0) 70 { 71 imageline($im, $vfirst*$spacex + $halfx, $vtop * $spacey + $spacey, $vlast*$spacex + $halfx, $vtop * $spacey + $spacey, $black); 72 imageline($im, xpos() + $halfx, ($vtop + 1) * $spacey - 10, xpos() + $halfx, ($vtop + 1) * $spacey, $black); 73 } 74 // $ip = explode('.',$item['IP']); 75 // if(!array_key_exists(3, $ip)) $ip[3] = ''; 76 if ($item['iconname']=='comp') 77 { 78 if($item['online'] == 1) { $color = $green; } else $color = $black; 79 $image = $im_comp; 80 } else $image = $im_dev; 81 if ($item['iconname']=='device') 82 { 83 if($item['online'] == 1) { $color = $green; } else $color = $red; 84 $image = $im_dev; 85 } 86 if($item['showonline']==0) 87 { 88 $color = $gray; 89 $image = $im_dev; 90 } 91 // $text='IP: '.$ip[0]; 92 // imagestring($im,2,xpos($id)+($spacex-strlen($text)*imagefontwidth(2))/2,$vtop[$id]*$spacey+24+imagefontheight(2),$text,$black); 93 imagecopy($im, $image, xpos()+$halfx-15,$vtop*$spacey+12, 0, 0, 30, 30); 94 // imagerectangle($im,xpos($id)+$halfx-6,$vtop[$id]*$spacey+16,xpos($id)+$halfx+6,$vtop[$id]*$spacey+28,$color); 95 if ($debug) { 96 imagestring($im,2,xpos()+($spacex-strlen($item['id'])*imagefontwidth(2))/2,$vtop*$spacey+31+imagefontheight(2),$item['id'],$color); 97 } else imagestring($im,2,xpos()+($spacex-strlen($item['name'])*imagefontwidth(2))/2,$vtop*$spacey+31+imagefontheight(2),$item['name'],$color); 98 } 99 } 100 101 // === Sestavení výsledného souboru ============================================ 102 if(!($debug > 1)) 103 { 104 Header("Content-type: image/png"); 105 Header("Cache-Control: no-cache"); // Dynamický graf, nekešovat 106 imagepng($im); 107 imagedestroy($im); 108 imagedestroy($im_comp); 109 imagedestroy($im_dev); 110 } 111 return(''); 112 } 113 114 function ShowOverview() 115 { 116 $Output = '<img src="topologie.png"><br/> 117 <p>Vysvětlivky: Obrázek znázorňuje připojení prvků sítě do internetu.<br/> 118 <img src="Modules/NetworkTopology/images/comp.png"> Je počítač zapojený v síti a pod ním je uvedeno jeho jméno. 119 <span style="color:green">Zelená barva</span> znamená, že počitač je zapnutý a 120 online. Černá barva znamená, že počítač je vypnutý, nebo není online.<br/> 121 <img src="Modules/NetworkTopology/images/device.png"> Představuje komunikační zařízení připojené do sítě, které 122 mají běžet nepřetržitě. Pokud je zařízení online, je text pod ním zobrazen 123 <span style="color:green">zelenou barvou</span>, pokud není online, je zobrazen 124 <span style="color:red">červenou barvou</span>. Dostupnost prvků je kontrolována 125 z počítače Centrála, takže při výpadku zařízení nebude možné zjistit stav 126 zařízení, které jsou přes něj připojeny. U zařízení, kde není stav možné 127 zjišťovat je použita <span style="color:gray">šedá barvou</span>.</p>'; 128 return($Output); 129 } 130 } 2 131 3 132 class ModuleNetworkTopology extends Module … … 27 156 function Init() 28 157 { 29 $this->System->Pages['topologie'] = ' SharePage';158 $this->System->Pages['topologie'] = 'NetworkTopologyPage'; 30 159 } 31 160 }
Note:
See TracChangeset
for help on using the changeset viewer.