mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	git-svn-id: http://www.observium.org/svn/observer/trunk@352 61d68cd4-352d-0410-923a-c4978735b2b8
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?
 | 
						|
 | 
						|
include("../config.php");
 | 
						|
include("../includes/functions.php");
 | 
						|
 | 
						|
$device = mysql_fetch_array(mysql_query("SELECT * from devices WHERE device_id = ".$_GET['device'].""));
 | 
						|
 | 
						|
if($device && preg_match("/^[a-z]*$/", $_GET['format'])) {
 | 
						|
 | 
						|
$map = "digraph G { sep=0.01; size=\"12,5.5\"; pack=100; bgcolor=transparent; splines=true; overlap=scale; concentrate=0; epsilon=0.001; rankdir=0;
 | 
						|
     node [ fontname=\"helvetica\", fontstyle=bold, style=filled, color=white, fillcolor=lightgrey, overlap=false;];
 | 
						|
     edge [ bgcolor=white; fontname=\"helvetica\"; fontstyle=bold; arrowhead=dot; arrowtail=dot];
 | 
						|
     graph [bgcolor=transparent;];
 | 
						|
 | 
						|
";
 | 
						|
 | 
						|
$map .= "\"".$device['hostname']."\" [fontsize=20 fillcolor=\"lightblue\" URL=\"/device/".$device['device_id']."/map/\" shape=box3d]\n";
 | 
						|
 | 
						|
 | 
						|
$sql = "SELECT * from interfaces AS I, links AS L WHERE I.device_id = ".$device['device_id']." AND L.src_if = I.interface_id";
 | 
						|
$links = mysql_query($sql);
 | 
						|
while($link = mysql_fetch_array($links)) {
 | 
						|
 | 
						|
  $src_if = $link['src_if'];
 | 
						|
  $dst_if = $link['dst_if'];
 | 
						|
 | 
						|
  $i = 0; $done = 0;
 | 
						|
  while ($i < count($linkdone)) {
 | 
						|
    $thislink = "$dst_if $src_if";
 | 
						|
    if ($linkdone[$i] == $thislink) { $done = 1; }
 | 
						|
    $i++;
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  if(!$done) {
 | 
						|
 | 
						|
     $linkdone[] = "$src_if $dst_if";
 | 
						|
 | 
						|
     if($link['ifSpeed'] >= "10000000000") {
 | 
						|
       $info = "color=lightred style=\"setlinewidth(8)\"";
 | 
						|
     } 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)\"";
 | 
						|
     }
 | 
						|
 | 
						|
      $src = $device['hostname'];
 | 
						|
      $dst = mysql_result(mysql_query("SELECT `hostname` FROM `devices` AS D, `interfaces` AS I WHERE I.interface_id = '$dst_if'  AND D.device_id = I.device_id"),0);
 | 
						|
      $dst_host = mysql_result(mysql_query("SELECT D.device_id FROM `devices` AS D, `interfaces` AS I WHERE I.interface_id = '$dst_if'  AND D.device_id = I.device_id"),0);
 | 
						|
 | 
						|
 | 
						|
      $sif = makeshortif($link['ifDescr']);
 | 
						|
      $dif = makeshortif(mysql_result(mysql_query("SELECT ifDescr from interfaces WHERE interface_id = '".$dst_if."'"),0));
 | 
						|
 | 
						|
      $map .= "\"$src$sif\" [label=\"$sif\", fontsize=12, fillcolor=lightblue URL=\"/device/".$device['device_id']."/interface/$src_if/\"]\n";
 | 
						|
      $map .= "\"$src\" -> \"$src$sif\" [weight=500000, arrowsize=0, len=0];\n";
 | 
						|
 | 
						|
#     $map .= "\"$src$sif\" -> \"$dst$dif\" [weight=1] \n";
 | 
						|
 | 
						|
      $map .= "\"$dst\" [URL=\"/device/$dst_host/map/\" fontsize=20 shape=box3d]\n";
 | 
						|
 | 
						|
  if($dst_host == $device['device_id']) {
 | 
						|
      $map .= "\"$dst$dif\" [label=\"$dif\", fontsize=12, fillcolor=lightblue, URL=\"/device/$dst_host/interface/$dst_if/\"]\n";
 | 
						|
  } else {
 | 
						|
       $map .= "\"$dst$dif\" [label=\"$dif\", fontsize=12, fillcolor=lightgray, URL=\"/device/$dst_host/interface/$dst_if/\"]\n";
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
      $map .= "\"$dst$dif\" -> \"$dst\" [weight=500000, arrowsize=0, len=0];\n";
 | 
						|
 | 
						|
      $map .= "\"$src$sif\" -> \"$dst$dif\" [weight=1, arrowhead=normal, arrowtail=normal, len=2, $info] \n";
 | 
						|
 | 
						|
   }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$map .= "
 | 
						|
};";
 | 
						|
 | 
						|
#echo("<pre>$map</pre>");
 | 
						|
 | 
						|
$img = shell_exec("echo \"".addslashes($map)."\" | dot -T".$_GET['format']."");
 | 
						|
if($_GET['format'] == "png") {
 | 
						|
  header("Content-type: image/".$_GET['format']);
 | 
						|
} elseif ($_GET['format'] == "svg") {
 | 
						|
  header("Content-type: image/svg+xml");
 | 
						|
  $img = str_replace("<a ", "<a target  = \"_parent\" ", $img);
 | 
						|
}
 | 
						|
echo("$img");
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
?>
 |