diff --git a/html/map.php b/html/map.php index ebe243a56..438f99bab 100755 --- a/html/map.php +++ b/html/map.php @@ -53,6 +53,7 @@ if (isset($_GET['format']) && preg_match("/^[a-z]*$/", $_GET['format'])) else { $loc_count = 1; + foreach (dbFetch("SELECT * from devices ".$where) as $device) { if ($device) @@ -60,94 +61,92 @@ if (isset($_GET['format']) && preg_match("/^[a-z]*$/", $_GET['format'])) $links = dbFetch("SELECT * from ports AS I, links AS L WHERE I.device_id = ? AND L.local_interface_id = I.interface_id ORDER BY L.remote_hostname", array($device['device_id'])); if (count($links)) { - if(!isset($locations[$device['location']])) { $locations[$device['location']] = $loc_count; $loc_count++; } $loc_id = $locations[$device['location']]; $map .= "\"".$device['hostname']."\" [fontsize=20, fillcolor=\"lightblue\", group=".$loc_id." URL=\"{$config['base_url']}/device/device=".$device['device_id']."/tab=map/\" shape=box3d]\n"; } - - foreach ($links as $link) { - $local_interface_id = $link['local_interface_id']; - $remote_interface_id = $link['remote_interface_id']; + $local_interface_id = $link['local_interface_id']; + $remote_interface_id = $link['remote_interface_id']; - $i = 0; $done = 0; - if ($linkdone[$remote_interface_id][$local_interface_id]) { $done = 1; } + $i = 0; $done = 0; + if ($linkdone[$remote_interface_id][$local_interface_id]) { $done = 1; } - if (!$done) - { - $linkdone[$local_interface_id][$remote_interface_id] = TRUE; - - $links++; - - if ($link['ifSpeed'] >= "10000000000") + if (!$done) { - $info = "color=red3 style=\"setlinewidth(6)\""; - } elseif ($link['ifSpeed'] >= "1000000000") { - $info = "color=lightblue style=\"setlinewidth(4)\""; - } elseif ($link['ifSpeed'] >= "100000000") { - $info = "color=lightgrey style=\"setlinewidth(2)\""; - } elseif ($link['ifSpeed'] >= "10000000") { - $info = "style=\"setlinewidth(1)\""; - } else { - $info = "style=\"setlinewidth(1)\""; - } + $linkdone[$local_interface_id][$remote_interface_id] = TRUE; - $src = $device['hostname']; - if ($remote_interface_id) - { - $dst = dbFetchCell("SELECT `hostname` FROM `devices` AS D, `ports` AS I WHERE I.interface_id = ? AND D.device_id = I.device_id", array($remote_interface_id)); - $dst_host = dbFetchCell("SELECT D.device_id FROM `devices` AS D, `ports` AS I WHERE I.interface_id = ? AND D.device_id = I.device_id", array($remote_interface_id)); - } else { - unset($dst_host); - $dst = $link['remote_hostname']; - } + $links++; - $sif = ifNameDescr(dbFetchRow("SELECT * FROM ports WHERE `interface_id` = ?", array($link['local_interface_id'])),$device); - if ($remote_interface_id) - { - $dif = ifNameDescr(dbFetchRow("SELECT * FROM ports WHERE `interface_id` = ?", array($link['remote_interface_id'])), $device); - } else { - $dif['label'] = $link['remote_port']; - $dif['interface_id'] = $link['remote_hostname'] . $link['remote_port']; - } - if($where == "") { - - $map .= "\"$src\" -> \"" . $dst . "\" [weight=500000, arrowsize=0, len=0];\n"; - $ifdone[$src][$sif['interface_id']] = 1; - - } else { - $map .= "\"" . $sif['interface_id'] . "\" [label=\"" . $sif['label'] . "\", fontsize=12, fillcolor=lightblue, URL=\"{$config['base_url']}/device/device=".$device['device_id']."/port/$local_interface_id/\"]\n"; - if (!$ifdone[$src][$sif['interface_id']]) + if ($link['ifSpeed'] >= "10000000000") { - $map .= "\"$src\" -> \"" . $sif['interface_id'] . "\" [weight=500000, arrowsize=0, len=0];\n"; - $ifdone[$src][$sif['interface_id']] = 1; - } - - if ($dst_host) { - $map .= "\"$dst\" [URL=\"{$config['base_url']}/device/device=$dst_host/tab=map/\", fontsize=20, shape=box3d]\n"; + $info = "color=red3 style=\"setlinewidth(6)\""; + } elseif ($link['ifSpeed'] >= "1000000000") { + $info = "color=lightblue style=\"setlinewidth(4)\""; + } elseif ($link['ifSpeed'] >= "100000000") { + $info = "color=lightgrey style=\"setlinewidth(2)\""; + } elseif ($link['ifSpeed'] >= "10000000") { + $info = "style=\"setlinewidth(1)\""; } else { - $map .= "\"$dst\" [ fontsize=20 shape=box3d]\n"; + $info = "style=\"setlinewidth(1)\""; } - if ($dst_host == $device['device_id'] || $where == '') + $src = $device['hostname']; + if ($remote_interface_id) { - $map .= "\"" . $dif['interface_id'] . "\" [label=\"" . $dif['label'] . "\", fontsize=12, fillcolor=lightblue, URL=\"{$config['base_url']}/device/device=$dst_host/tab=port/port=$remote_interface_id/\"]\n"; + $dst = dbFetchCell("SELECT `hostname` FROM `devices` AS D, `ports` AS I WHERE I.interface_id = ? AND D.device_id = I.device_id", array($remote_interface_id)); + $dst_host = dbFetchCell("SELECT D.device_id FROM `devices` AS D, `ports` AS I WHERE I.interface_id = ? AND D.device_id = I.device_id", array($remote_interface_id)); } else { - $map .= "\"" . $dif['interface_id'] . "\" [label=\"" . $dif['label'] . " \", fontsize=12, fillcolor=lightgray, URL=\"{$config['base_url']}/device/device=$dst_host/tab=port/port=$remote_interface_id/\"]\n"; + unset($dst_host); + $dst = $link['remote_hostname']; } - if (!$ifdone[$dst][$dif['interface_id']]) + $sif = ifNameDescr(dbFetchRow("SELECT * FROM ports WHERE `interface_id` = ?", array($link['local_interface_id'])),$device); + if ($remote_interface_id) { - $map .= "\"" . $dif['interface_id'] . "\" -> \"$dst\" [weight=500000, arrowsize=0, len=0];\n"; - $ifdone[$dst][$dif['interface_id']] = 1; + $dif = ifNameDescr(dbFetchRow("SELECT * FROM ports WHERE `interface_id` = ?", array($link['remote_interface_id']))); + } else { + $dif['label'] = $link['remote_port']; + $dif['interface_id'] = $link['remote_hostname'] . $link['remote_port']; + } + + if($where == "") + { + $map .= "\"$src\" -> \"" . $dst . "\" [weight=500000, arrowsize=0, len=0];\n"; + $ifdone[$src][$sif['interface_id']] = 1; + } else { + $map .= "\"" . $sif['interface_id'] . "\" [label=\"" . $sif['label'] . "\", fontsize=12, fillcolor=lightblue, URL=\"{$config['base_url']}/device/device=".$device['device_id']."/port/$local_interface_id/\"]\n"; + if (!$ifdone[$src][$sif['interface_id']]) + { + $map .= "\"$src\" -> \"" . $sif['interface_id'] . "\" [weight=500000, arrowsize=0, len=0];\n"; + $ifdone[$src][$sif['interface_id']] = 1; + } + + if ($dst_host) + { + $map .= "\"$dst\" [URL=\"{$config['base_url']}/device/device=$dst_host/tab=map/\", fontsize=20, shape=box3d]\n"; + } else { + $map .= "\"$dst\" [ fontsize=20 shape=box3d]\n"; + } + + if ($dst_host == $device['device_id'] || $where == '') + { + $map .= "\"" . $dif['interface_id'] . "\" [label=\"" . $dif['label'] . "\", fontsize=12, fillcolor=lightblue, URL=\"{$config['base_url']}/device/device=$dst_host/tab=port/port=$remote_interface_id/\"]\n"; + } else { + $map .= "\"" . $dif['interface_id'] . "\" [label=\"" . $dif['label'] . " \", fontsize=12, fillcolor=lightgray, URL=\"{$config['base_url']}/device/device=$dst_host/tab=port/port=$remote_interface_id/\"]\n"; + } + + if (!$ifdone[$dst][$dif['interface_id']]) + { + $map .= "\"" . $dif['interface_id'] . "\" -> \"$dst\" [weight=500000, arrowsize=0, len=0];\n"; + $ifdone[$dst][$dif['interface_id']] = 1; + } + $map .= "\"" . $sif['interface_id'] . "\" -> \"" . $dif['interface_id'] . "\" [weight=1, arrowhead=normal, arrowtail=normal, len=2, $info] \n"; } - $map .= "\"" . $sif['interface_id'] . "\" -> \"" . $dif['interface_id'] . "\" [weight=1, arrowhead=normal, arrowtail=normal, len=2, $info] \n"; } - } } $done = 0; } @@ -187,7 +186,7 @@ if (isset($_GET['format']) && preg_match("/^[a-z]*$/", $_GET['format'])) # $maptool = $config['unflatten'] . ' -f -l 5 | ' . $config['sfdp'] . ' -Gpack -Goverlap=prism -Gcharset=latin1 | dot'; # $maptool = $config['sfdp'] . ' -Gpack -Goverlap=prism -Gcharset=latin1 -Gsize=20,20'; $maptool = $config['neato']; -} + } $descriptorspec = array(0 => array("pipe", "r"),1 => array("pipe", "w") ); @@ -195,7 +194,8 @@ if (isset($_GET['format']) && preg_match("/^[a-z]*$/", $_GET['format'])) $process = proc_open($maptool.' -T'.$_GET['format'],$descriptorspec,$pipes); - if (is_resource($process)) { + if (is_resource($process)) + { fwrite($pipes[0], "$map"); fclose($pipes[0]); while (! feof($pipes[1])) {$img .= fgets($pipes[1]);}