2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
									
										
										
										
											2016-08-20 12:16:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  LibreNMS 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-20 12:16:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *    This  file  is  part  of  LibreNMS . 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-20 12:16:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ package     librenms 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage  map 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ copyright   ( C )  2006  -  2012  Adam  Armstrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ini_set ( 'display_errors' ,  1 );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ini_set ( 'display_startup_errors' ,  1 );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ini_set ( 'log_errors' ,  1 );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ini_set ( 'error_reporting' ,  E_ALL );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$links  =  1 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  '../includes/defaults.inc.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  '../config.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  '../includes/definitions.inc.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  '../includes/functions.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  '../includes/dbFacile.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  'includes/functions.inc.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once  'includes/authenticate.inc.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( strpos ( $_SERVER [ 'REQUEST_URI' ],  'anon' ))  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $anon  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( is_array ( $config [ 'branding' ]))  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'branding' ][ $_SERVER [ 'SERVER_NAME' ]])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $config [ 'branding' ][ $_SERVER [ 'SERVER_NAME' ]]  as  $confitem  =>  $confval )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            eval ( " \$ config[' "  .  $confitem  .  " '] =  \$ confval; " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        foreach  ( $config [ 'branding' ][ 'default' ]  as  $confitem  =>  $confval )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            eval ( " \$ config[' "  .  $confitem  .  " '] =  \$ confval; " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-02 06:56:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( is_numeric ( $_GET [ 'device' ])  &&  isset ( $_GET [ 'device' ]))  {  
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $where  =  'WHERE device_id = ' . mres ( $_GET [ 'device' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $where  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// FIXME this shit probably needs tidied up.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( isset ( $_GET [ 'format' ])  &&  preg_match ( " /^[a-z]* $ / " ,  $_GET [ 'format' ]))  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $map  =  ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            digraph  G  {  bgcolor = transparent ;  splines = true ;  overlap = scale ;  concentrate = 0 ;  epsilon = 0.001 ;  rankdir = LR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            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 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! $_SESSION [ 'authenticated' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $map  .=  " \" Not authenticated \"  [fontsize=20 fillcolor= \" lightblue \" , URL= \" / \"  shape=box3d] \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $loc_count  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( dbFetch ( " SELECT * from devices  " . $where )  as  $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $links  =  dbFetch ( " SELECT * from ports AS I, links AS L WHERE I.device_id = ? AND L.local_port_id = I.port_id ORDER BY L.remote_hostname " ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( count ( $links ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( $anon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $device [ 'hostname' ]  =  md5 ( $device [ 'hostname' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! isset ( $locations [ $device [ 'location' ]]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        $locations [ $device [ 'location' ]]  =  $loc_count ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $loc_count ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $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 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                foreach  ( $links  as  $link )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    $local_port_id  =  $link [ 'local_port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $remote_port_id  =  $link [ 'remote_port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $i  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $done  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    if  ( $linkdone [ $remote_port_id ][ $local_port_id ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $done  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! $done )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        $linkdone [ $local_port_id ][ $remote_port_id ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $links ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( $link [ 'ifSpeed' ]  >=  " 10000000000 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $info  =  " color=red3 style= \" setlinewidth(6) \" " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  elseif  ( $link [ 'ifSpeed' ]  >=  " 1000000000 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $info  =  " color=lightblue style= \" setlinewidth(4) \" " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  elseif  ( $link [ 'ifSpeed' ]  >=  " 100000000 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $info  =  " color=lightgrey style= \" setlinewidth(2) \" " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  elseif  ( $link [ 'ifSpeed' ]  >=  " 10000000 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $info  =  " style= \" setlinewidth(1) \" " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $info  =  " style= \" setlinewidth(1) \" " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        $src  =  $device [ 'hostname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( $anon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $src  =  md5 ( $src ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( $remote_port_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dst  =  dbFetchCell ( " SELECT `hostname` FROM `devices` AS D, `ports` AS I WHERE I.port_id = ? AND D.device_id = I.device_id " ,  array ( $remote_port_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dst_host  =  dbFetchCell ( " SELECT D.device_id FROM `devices` AS D, `ports` AS I WHERE I.port_id = ?  AND D.device_id = I.device_id " ,  array ( $remote_port_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            unset ( $dst_host ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dst  =  $link [ 'remote_hostname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( $anon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dst  =  md5 ( $dst ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $src  =  md5 ( $src ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        $sif  =  ifNameDescr ( dbFetchRow ( " SELECT * FROM ports WHERE `port_id` = ? " ,  array ( $link [ 'local_port_id' ])),  $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        if  ( $remote_port_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dif  =  ifNameDescr ( dbFetchRow ( " SELECT * FROM ports WHERE `port_id` = ? " ,  array ( $link [ 'remote_port_id' ]))); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $dif [ 'label' ]  =  $link [ 'remote_port' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $dif [ 'port_id' ]  =  $link [ 'remote_hostname' ]  .  '/'  .  $link [ 'remote_port' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( $where  ==  " " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( ! $ifdone [ $dst ][ $dif [ 'port_id' ]]  &&  ! $ifdone [ $src ][ $sif [ 'port_id' ]])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" $src\ "  ->  \ " "  .  $dst  .  " \"  [weight=500000, arrowsize=0, len=0]; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $ifdone [ $src ][ $sif [ 'port_id' ]]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                            $map  .=  " \" "  .  $sif [ 'port_id' ]  .  " \"  [label= \" "  .  $sif [ 'label' ]  .  " \" , fontsize=12, fillcolor=lightblue, URL= \" { $config [ 'base_url' ] } /device/device= " . $device [ 'device_id' ] . " /tab=port/port= $local_port_id / \" ] \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( ! $ifdone [ $src ][ $sif [ 'port_id' ]])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" $src\ "  ->  \ " "  .  $sif [ 'port_id' ]  .  " \"  [weight=500000, arrowsize=0, len=0]; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $ifdone [ $src ][ $sif [ 'port_id' ]]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( $dst_host )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" $dst\ "  [ URL = \ " { $config [ 'base_url' ] } /device/device= $dst_host /tab=map/ \" , fontsize=20, shape=box3d] \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" $dst\ "  [  fontsize = 20  shape = box3d ] \n " ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( $dst_host  ==  $device [ 'device_id' ]  ||  $where  ==  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" "  .  $dif [ 'port_id' ]  .  " \"  [label= \" "  .  $dif [ 'label' ]  .  " \" , fontsize=12, fillcolor=lightblue, URL= \" { $config [ 'base_url' ] } /device/device= $dst_host /tab=port/port= $remote_port_id / \" ] \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" "  .  $dif [ 'port_id' ]  .  " \"  [label= \" "  .  $dif [ 'label' ]  .  "   \" , fontsize=12, fillcolor=lightgray " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                if  ( $dst_host )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    $map  .=  " , URL= \" { $config [ 'base_url' ] } /device/device= $dst_host /tab=port/port= $remote_port_id / \" " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " ] \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( ! $ifdone [ $dst ][ $dif [ 'port_id' ]])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $map  .=  " \" "  .  $dif [ 'port_id' ]  .  " \"  ->  \" $dst\ "  [ weight = 500000 ,  arrowsize = 0 ,  len = 0 ]; \n " ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                $ifdone [ $dst ][ $dif [ 'port_id' ]]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $map  .=  " \" "  .  $sif [ 'port_id' ]  .  " \"  ->  \" "  .  $dif [ 'port_id' ]  .  " \"  [weight=1, arrowhead=normal, arrowtail=normal, len=2,  $info ]  \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $done  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $map  .=  " \n }; " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $_GET [ 'debug' ]  ==  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  '<pre>$map</pre>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        exit (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    switch  ( $_GET [ 'format' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'svg' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'png' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_GET [ 'format' ]  =  'png:gd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'dot' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            echo ( $map ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            exit (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_GET [ 'format' ]  =  'png:gd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $links  >  30 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Unflatten if there are more than 10 links. beyond that it gets messy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maptool  =  $config [ 'dot' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $maptool  =  $config [ 'dot' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $where  ==  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maptool  =  $config [ 'sfdp' ]  .  ' -Gpack -Goverlap=prism -Gcharset=latin1 -Gsize=20,20' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maptool  =  $config [ 'dot' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $descriptorspec  =  array ( 0  =>  array ( " pipe " ,  " r " ), 1  =>  array ( " pipe " ,  " w " )  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $mapfile  =  $config [ 'temp_dir' ]  .  " / "   .  strgen ()  .  " .png " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $process  =  proc_open ( $maptool . ' -T' . $_GET [ 'format' ],  $descriptorspec ,  $pipes ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( is_resource ( $process ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fwrite ( $pipes [ 0 ],  " $map " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        fclose ( $pipes [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( !  feof ( $pipes [ 1 ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $img  .=  fgets ( $pipes [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fclose ( $pipes [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $return_value  =  proc_close ( $process ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $_GET [ 'format' ]  ==  " png:gd " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        header ( " Content-type: image/png " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  elseif  ( $_GET [ 'format' ]  ==  " svg " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        header ( " Content-type: image/svg+xml " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $img  =  str_replace ( " <a  " ,  '<a target="_parent" ' ,  $img ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  $img ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 20:28:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
									
										
										
										
											2015-08-01 18:14:55 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( $_SESSION [ 'authenticated' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // FIXME level 10 only?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  ' < center > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  < object  width = 1200  height = 1000  data = " '.  $config['base_url']  . '/map.php?format=svg "  type = " image/svg+xml " ></ object > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              </ center > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}