2009-09-07 11:07:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
									
										
										
										
											2015-06-14 18:00:21 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  LibreNMS  -  Common  Functions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Original  Observium  version  by :  Adam  Armstrong ,  Tom  Laermans 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2009 - 2012  Adam  Armstrong . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Additions  for  LibreNMS  by :  Neil  Lathwood ,  Paul  Gear ,  Tim  DuFrane 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2014 - 2015  Neil  Lathwood  < http :// www . lathwood . co . uk > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2014 - 2015  Gear  Consulting  Pty  Ltd  < http :// libertysys . com . au /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software :  you  can  redistribute  it  and / or  modify  it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  under  the  terms  of  the  GNU  General  Public  License  as  published  by  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Free  Software  Foundation ,  either  version  3  of  the  License ,  or  ( at  your 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  option )  any  later  version .   Please  see  LICENSE . txt  at  the  top  level  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  source  code  distribution  for  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  generate_priority_icon ( $priority )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-05 13:34:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $map  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " emerg "      =>  " server_delete " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " alert "      =>  " cancel " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " crit "       =>  " application_lightning " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " err "        =>  " application_delete " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " warning "    =>  " application_error " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " notice "     =>  " application_edit " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " info "       =>  " application " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " debug "      =>  " bug " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-30 22:16:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " "           =>  " application " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-05 13:34:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-06 13:39:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $image  =  isset ( $map [ $priority ])  ?  $map [ $priority ]  :  'application' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  '<img src="images/16/'  .  $image  . '.png" title="'  .  $priority  .  '">' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  generate_priority_status ( $priority )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $map  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " emerg "      =>  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " alert "      =>  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " crit "       =>  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " err "        =>  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " warning "    =>  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " notice "     =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " info "       =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " debug "      =>  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " "           =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  isset ( $map [ $priority ])  ?  $map [ $priority ]  :  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-05 13:34:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  format_number_short ( $number ,  $sf )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // This formats a number so that we only send back three digits plus an optional decimal point.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Example: 723.42 -> 723    72.34 -> 72.3    2.23 -> 2.23
 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( $whole ,  $decimal )  =  explode ( " . " ,  $number ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strlen ( $whole )  >=  $sf  ||  ! is_numeric ( $decimal ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $number  =  $whole ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  elseif  ( strlen ( $whole )  <  $sf )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $diff  =  $sf  -  strlen ( $whole ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $number  =  $whole  . " . " . substr ( $decimal ,  0 ,  $diff ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $number ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  external_exec ( $command )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-17 14:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $debug , $vdebug ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-22 11:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $debug  &&  ! $vdebug )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $debug_command  =  preg_replace ( '/-c [\S]+/' ,  '-c COMMUNITY' ,  $command ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $debug_command  =  preg_replace ( '/(udp|udp6|tcp|tcp6):([^:]+):([\d]+)/' ,  '\1:HOSTNAME:\3' ,  $debug_command ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c_echo ( 'SNMP[%c'  .  $debug_command  .  " %n] \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  elseif  ( $vdebug )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c_echo ( 'SNMP[%c' . $command . " %n] \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 14:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $output  =  shell_exec ( $command ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 14:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-22 11:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $debug  &&  ! $vdebug )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ip_regex  =  '/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $debug_output  =  preg_replace ( $ip_regex ,  '*' ,  $output ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        d_echo ( $debug_output  .  PHP_EOL ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  elseif  ( $vdebug )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        d_echo ( $output  .  PHP_EOL ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 14:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-22 18:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $output ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-22 18:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  shorthost ( $hostname ,  $len  =  12 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // IP addresses should not be shortened
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( filter_var ( $hostname ,  FILTER_VALIDATE_IP ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $hostname ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $parts  =  explode ( " . " ,  $hostname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $shorthost  =  $parts [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $i  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( $i  <  count ( $parts )  &&  strlen ( $shorthost . '.' . $parts [ $i ])  <  $len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $shorthost  =  $shorthost . '.' . $parts [ $i ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $i ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( $shorthost ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  isCli ()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( php_sapi_name ()  ==  'cli'  &&  empty ( $_SERVER [ 'REMOTE_ADDR' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  print_error ( $text )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isCli ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        c_echo ( " %r " . $text . " %n \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-21 15:00:17 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        echo ( '<div class="alert alert-danger"><i class="fa fa-fw fa-exclamation-circle" aria-hidden="true"></i> ' . $text . '</div>' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  print_message ( $text )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isCli ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        c_echo ( " %g " . $text . " %n \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-22 08:09:31 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        echo ( '<div class="alert alert-success"><i class="fa fa-fw fa-check-circle" aria-hidden="true"></i> ' . $text . '</div>' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  delete_port ( $int_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $interface  =  dbFetchRow ( " SELECT * FROM `ports` AS P, `devices` AS D WHERE P.port_id = ? AND D.device_id = P.device_id " ,  array ( $int_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-13 15:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-16 02:42:56 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $interface_tables  =  array ( 'ipv4_addresses' ,  'ipv4_mac' ,  'ipv6_addresses' ,  'juniAtmVp' ,  'mac_accounting' ,  'ospf_nbrs' ,  'ospf_ports' ,  'ports' ,  'ports_adsl' ,  'ports_perms' ,  'ports_statistics' ,  'ports_stp' ,  'ports_vlans' ,  'pseudowires' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-13 15:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    foreach  ( $interface_tables  as  $table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dbDelete ( $table ,  " `port_id` =  ? " ,  array ( $int_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-13 15:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-16 02:42:56 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dbDelete ( 'links' ,  " `local_port_id` = ? OR `remote_port_id` = ? " ,  array ( $int_id ,  $int_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dbDelete ( 'ports_stack' ,  " `port_id_low` = ? OR `port_id_high` = ? " ,  array ( $int_id ,  $int_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-13 15:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    unlink ( get_port_rrdfile_path ( $interface [ 'hostname' ],  $interface [ 'port_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-13 15:05:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  sgn ( $int )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $int  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  elseif  ( $int  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 13:06:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-08 22:58:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_sensor_rrd ( $device ,  $sensor )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  rrd_name ( $device [ 'hostname' ],  get_sensor_rrd_name ( $device ,  $sensor )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_sensor_rrd_name ( $device ,  $sensor )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-26 15:07:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # For IPMI, sensors tend to change order, and there is no index, so we prefer to use the description as key here.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'os' ][ $device [ 'os' ]][ 'sensor_descr' ]  ||  $sensor [ 'poller_type' ]  ==  " ipmi " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-08 22:58:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  array ( 'sensor' ,  $sensor [ 'sensor_class' ],  $sensor [ 'sensor_type' ],  $sensor [ 'sensor_descr' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-08 22:58:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  array ( 'sensor' ,  $sensor [ 'sensor_class' ],  $sensor [ 'sensor_type' ],  $sensor [ 'sensor_index' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getPortRrdName ( $port_id ,  $suffix  =  '' )  
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! empty ( $suffix ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $suffix  =  '-'  .  $suffix ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-26 15:07:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  " port-id $port_id $suffix " ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-26 15:07:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_rrdfile_path ( $hostname ,  $port_id ,  $suffix  =  '' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  rrd_name ( $hostname ,  getPortRrdName ( $port_id ,  $suffix )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_by_index_cache ( $device_id ,  $ifIndex )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $port_index_cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $port_index_cache [ $device_id ][ $ifIndex ])  &&  is_array ( $port_index_cache [ $device_id ][ $ifIndex ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $port  =  $port_index_cache [ $device_id ][ $ifIndex ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $port  =  get_port_by_ifIndex ( $device_id ,  $ifIndex ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $port_index_cache [ $device_id ][ $ifIndex ]  =  $port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $port ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_by_ifIndex ( $device_id ,  $ifIndex )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchRow ( " SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ? " ,  array ( $device_id ,  $ifIndex )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_all_devices ( $device ,  $type  =  " " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $devices  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // FIXME needs access control checks!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // FIXME respect $type (server, network, etc) -- needs an array fill in topnav.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isset ( $cache [ 'devices' ][ 'hostname' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $devices  =  array_keys ( $cache [ 'devices' ][ 'hostname' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        foreach  ( dbFetchRows ( " SELECT `hostname` FROM `devices` " )  as  $data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $devices []  =  $data [ 'hostname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $devices ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  port_by_id_cache ( $port_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  get_port_by_id_cache ( 'port' ,  $port_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-03 15:03:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  table_from_entity_type ( $type )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Fuck you, english pluralisation.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $type  ==  " storage " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $type ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $type . " s " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_entity_by_id_cache ( $type ,  $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $entity_cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $table  =  table_from_entity_type ( $type ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_array ( $entity_cache [ $type ][ $id ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $entity  =  $entity_cache [ $type ][ $id ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $entity  =  dbFetchRow ( " SELECT * FROM ` " . $table . " ` WHERE ` " . $type . " _id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $entity_cache [ $type ][ $id ]  =  $entity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $entity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_by_id ( $port_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_numeric ( $port_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $port  =  dbFetchRow ( " SELECT * FROM `ports` WHERE `port_id` = ? " ,  array ( $port_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( is_array ( $port ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $port ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-05-19 10:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_application_by_id ( $application_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_numeric ( $application_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $application  =  dbFetchRow ( " SELECT * FROM `applications` WHERE `app_id` = ? " ,  array ( $application_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( is_array ( $application ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $application ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-22 19:28:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-01 14:17:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-07-28 19:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_sensor_by_id ( $sensor_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_numeric ( $sensor_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $sensor  =  dbFetchRow ( " SELECT * FROM `sensors` WHERE `sensor_id` = ? " ,  array ( $sensor_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( is_array ( $sensor ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $sensor ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-22 19:28:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-01 14:17:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_device_id_by_port_id ( $port_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_numeric ( $port_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $device_id  =  dbFetchCell ( " SELECT `device_id` FROM `ports` WHERE `port_id` = ? " ,  array ( $port_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( is_numeric ( $device_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $device_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-22 19:28:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-01 14:17:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_device_id_by_app_id ( $app_id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_numeric ( $app_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $device_id  =  dbFetchCell ( " SELECT `device_id` FROM `applications` WHERE `app_id` = ? " ,  array ( $app_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( is_numeric ( $device_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $device_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-22 19:28:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-07-28 19:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  ifclass ( $ifOperStatus ,  $ifAdminStatus )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $ifclass  =  " interface-upup " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $ifAdminStatus  ==  " down " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ifclass  =  " interface-admindown " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $ifAdminStatus  ==  " up "  &&  $ifOperStatus ==  " down " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ifclass  =  " interface-updown " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $ifAdminStatus  ==  " up "  &&  $ifOperStatus ==  " up " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ifclass  =  " interface-upup " ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-22 19:28:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $ifclass ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  device_by_name ( $name ,  $refresh  =  0 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // FIXME - cache name > id too.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  device_by_id_cache ( getidbyname ( $name ),  $refresh ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-03 13:40:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  accesspoint_by_id ( $ap_id ,  $refresh  =  '0' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $ap  =  dbFetchRow ( " SELECT * FROM `access_points` WHERE `accesspoint_id` = ? " ,  array ( $ap_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $ap ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  device_by_id_cache ( $device_id ,  $refresh  =  '0' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! $refresh  &&  isset ( $cache [ 'devices' ][ 'id' ][ $device_id ])  &&  is_array ( $cache [ 'devices' ][ 'id' ][ $device_id ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $device  =  $cache [ 'devices' ][ 'id' ][ $device_id ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $device  =  dbFetchRow ( " SELECT * FROM `devices` WHERE `device_id` = ? " ,  array ( $device_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //order vrf_lite_cisco with context, this will help to get the vrf_name and instance_name all the time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $vrfs_lite_cisco  =  dbFetchRows ( " SELECT * FROM `vrf_lite_cisco` WHERE `device_id` = ? " ,  array ( $device_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! empty ( $vrfs_lite_cisco ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $device [ 'vrf_lite_cisco' ]  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            foreach  ( $vrfs_lite_cisco  as  $vrf )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $device [ 'vrf_lite_cisco' ][ $vrf [ 'context_name' ]]  =  $vrf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! empty ( $device [ 'ip' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 10:08:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $device [ 'ip' ]  =  inet6_ntop ( $device [ 'ip' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $cache [ 'devices' ][ 'id' ][ $device_id ]  =  $device ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $device ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 15:46:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  truncate ( $substring ,  $max  =  50 ,  $rep  =  '...' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strlen ( $substring )  <  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $string  =  $rep ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $string  =  $substring ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $leave  =  $max  -  strlen ( $rep ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strlen ( $string )  >  $max )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  substr_replace ( $string ,  $rep ,  $leave ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $string ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-28 13:49:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  mres ( $string )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // short function wrapper because the real one is stupidly long and ugly. aesthetics.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-11 01:40:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $database_link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  mysqli_real_escape_string ( $database_link ,  $string ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 10:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getifhost ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchCell ( " SELECT `device_id` from `ports` WHERE `port_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 13:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  gethostbyid ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-28 18:29:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $cache [ 'devices' ][ 'id' ][ $id ][ 'hostname' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $hostname  =  $cache [ 'devices' ][ 'id' ][ $id ][ 'hostname' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $hostname  =  dbFetchCell ( " SELECT `hostname` FROM `devices` WHERE `device_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-28 18:29:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $hostname ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  strgen ( $length  =  16 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $entropy  =  array ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 'a' , 'A' , 'b' , 'B' , 'c' , 'C' , 'd' , 'D' , 'e' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'E' , 'f' , 'F' , 'g' , 'G' , 'h' , 'H' , 'i' , 'I' , 'j' , 'J' , 'k' , 'K' , 'l' , 'L' , 'm' , 'M' , 'n' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'N' , 'o' , 'O' , 'p' , 'P' , 'q' , 'Q' , 'r' , 'R' , 's' , 'S' , 't' , 'T' , 'u' , 'U' , 'v' , 'V' , 'w' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'W' , 'x' , 'X' , 'y' , 'Y' , 'z' , 'Z' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $string  =  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( $i = 0 ;  $i < $length ;  $i ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $key  =  mt_rand ( 0 ,  61 ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $string  .=  $entropy [ $key ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $string ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getpeerhost ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchCell ( " SELECT `device_id` from `bgpPeers` WHERE `bgpPeer_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getifindexbyid ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchCell ( " SELECT `ifIndex` FROM `ports` WHERE `port_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getifbyid ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchRow ( " SELECT * FROM `ports` WHERE `port_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 23:09:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getifdescrbyid ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbFetchCell ( " SELECT `ifDescr` FROM `ports` WHERE `port_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getidbyname ( $hostname )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-04 09:10:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $cache [ 'devices' ][ 'hostname' ][ $hostname ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $id  =  $cache [ 'devices' ][ 'hostname' ][ $hostname ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $id  =  dbFetchCell ( " SELECT `device_id` FROM `devices` WHERE `hostname` = ? " ,  array ( $hostname )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-05 16:18:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $id ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  gethostosbyid ( $id )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $cache ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $cache [ 'devices' ][ 'id' ][ $id ][ 'os' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $os  =  $cache [ 'devices' ][ 'id' ][ $id ][ 'os' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $os  =  dbFetchCell ( " SELECT `os` FROM `devices` WHERE `device_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-04 09:10:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $os ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  safename ( $name )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  preg_replace ( '/[^a-zA-Z0-9,._\-]/' ,  '_' ,  $name ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-05 22:10:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-11-01 16:37:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Function  format  the  rrdtool  description  text  correctly . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  $descr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  mixed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-24 21:40:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  safedescr ( $descr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-10-25 13:19:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  preg_replace ( '/[^a-zA-Z0-9,._\-\/\ ]/' ,  ' ' ,  $descr ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-24 21:40:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  zeropad ( $num ,  $length  =  2 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while  ( strlen ( $num )  <  $length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $num  =  '0' . $num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-28 20:29:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $num ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-28 20:29:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  set_dev_attrib ( $device ,  $attrib_type ,  $attrib_value )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( dbFetchCell ( " SELECT COUNT(*) FROM devices_attribs WHERE `device_id` = ? AND `attrib_type` = ? " ,  array ( $device [ 'device_id' ], $attrib_type )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $return  =  dbUpdate ( array ( 'attrib_value'  =>  $attrib_value ),  'devices_attribs' ,  'device_id=? and attrib_type=?' ,  array ( $device [ 'device_id' ],  $attrib_type )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $return  =  dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'attrib_type'  =>  $attrib_type ,  'attrib_value'  =>  $attrib_value ),  'devices_attribs' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-31 17:19:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_dev_attribs ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $attribs  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( dbFetchRows ( " SELECT * FROM devices_attribs WHERE `device_id` = ? " ,  array ( $device ))  as  $entry )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $attribs [ $entry [ 'attrib_type' ]]  =  $entry [ 'attrib_value' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $attribs ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-03 20:13:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_dev_entity_state ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $state  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( dbFetchRows ( " SELECT * FROM entPhysical_state WHERE `device_id` = ? " ,  array ( $device ))  as  $entity )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $state [ 'group' ][ $entity [ 'group' ]][ $entity [ 'entPhysicalIndex' ]][ $entity [ 'subindex' ]][ $entity [ 'key' ]]  =  $entity [ 'value' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $state [ 'index' ][ $entity [ 'entPhysicalIndex' ]][ $entity [ 'subindex' ]][ $entity [ 'group' ]][ $entity [ 'key' ]]  =  $entity [ 'value' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $state ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-14 18:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_dev_attrib ( $device ,  $attrib_type ,  $attrib_value  =  '' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-08-30 15:09:54 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $sql  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 14:34:37 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $params  =  array ( $device [ 'device_id' ],  $attrib_type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! empty ( $attrib_value ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $sql  =  "  AND `attrib_value`=? " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        array_push ( $params ,  $attrib_value ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $row  =  dbFetchRow ( " SELECT attrib_value FROM devices_attribs WHERE `device_id` = ? AND `attrib_type` = ?  $sql " ,  $params ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $row [ 'attrib_value' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-03-31 17:19:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  is_dev_attrib_enabled ( $device ,  $attrib ,  $default  =  true )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-06-13 09:26:26 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $val  =  get_dev_attrib ( $device ,  $attrib ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 02:14:35 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $val  !=  null )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 09:26:26 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // attribute is set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( $val  !=  0 ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 09:26:26 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // attribute not set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  del_dev_attrib ( $device ,  $attrib_type )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  dbDelete ( 'devices_attribs' ,  " `device_id` = ? AND `attrib_type` = ? " ,  array ( $device [ 'device_id' ],  $attrib_type )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-31 17:19:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-03-28 20:29:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  formatRates ( $value ,  $round  =  '2' ,  $sf  =  '3' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $value  =  format_si ( $value ,  $round ,  $sf )  .  " bps " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $value ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 13:29:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  formatStorage ( $value ,  $round  =  '2' ,  $sf  =  '3' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $value  =  format_bi ( $value ,  $round )  .  " B " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $value ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 13:29:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  format_si ( $value ,  $round  =  '2' ,  $sf  =  '3' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $neg  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $value  <  " 0 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $neg  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $value  =  $value  *  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-01 12:29:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $value  >=  " 0.1 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $sizes  =  array ( '' ,  'k' ,  'M' ,  'G' ,  'T' ,  'P' ,  'E' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ext  =  $sizes [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( $i  =  1 ;  (( $i  <  count ( $sizes ))  &&  ( $value  >=  1000 ));  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $value  =  $value  /  1000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ext   =  $sizes [ $i ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $sizes  =  array ( '' ,  'm' ,  'u' ,  'n' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ext  =  $sizes [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( $i  =  1 ;  (( $i  <  count ( $sizes ))  &&  ( $value  !=  0 )  &&  ( $value  <=  0.1 ));  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $value  =  $value  *  1000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ext   =  $sizes [ $i ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 13:29:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $neg  ==  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $value  =  $value  *  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-01 12:29:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  format_number_short ( round ( $value ,  $round ),  $sf ) . $ext ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 13:29:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  format_bi ( $value ,  $round  =  '2' ,  $sf  =  '3' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $value  <  " 0 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $neg  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $value  =  $value  *  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $sizes  =  array ( '' ,  'k' ,  'M' ,  'G' ,  'T' ,  'P' ,  'E' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $ext  =  $sizes [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( $i  =  1 ;  (( $i  <  count ( $sizes ))  &&  ( $value  >=  1024 ));  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $value  =  $value  /  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ext   =  $sizes [ $i ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $neg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $value  =  $value  *  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:52:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  format_number_short ( round ( $value ,  $round ),  $sf ) . $ext ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 13:29:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  format_number ( $value ,  $base  =  '1000' ,  $round  =  2 ,  $sf  =  3 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $base  ==  '1000' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  format_si ( $value ,  $round ,  $sf ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  format_bi ( $value ,  $round ,  $sf ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-06 22:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  is_valid_hostname ( $hostname )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // The Internet standards (Request for Comments) for protocols mandate that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // component hostname labels may contain only the ASCII letters 'a' through 'z'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // (in a case-insensitive manner), the digits '0' through '9', and the hyphen
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // ('-'). The original specification of hostnames in RFC 952, mandated that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // labels could not start with a digit or with a hyphen, and must not end with
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // a hyphen. However, a subsequent specification (RFC 1123) permitted hostname
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // labels to start with digits. No other symbols, punctuation characters, or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // white space are permitted. While a hostname may not contain other characters,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // such as the underscore character (_), other DNS names may contain the underscore
 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-06 13:13:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ctype_alnum ( str_replace ( '_' ,  '' ,  str_replace ( '-' ,  '' ,  str_replace ( '.' ,  '' ,  $hostname )))); 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-06 13:13:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  convenience  function  -  please  use  this  instead  of  'if ($debug) { echo ...; }' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  d_echo ( $text ,  $no_debug_text  =  null )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-09-14 04:05:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $debug ,  $php_debug ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $debug )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-14 04:05:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isset ( $php_debug ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $php_debug []  =  $text ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-14 04:05:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            print_r ( $text ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-02 19:23:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  elseif  ( $no_debug_text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        echo  " $no_debug_text " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // d_echo
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Output  using  console  color  if  possible 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  https :// github . com / pear / Console_Color2 / blob / master / examples / documentation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $string  the  string  to  print  with  console  color 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-17 16:00:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ param  bool  $enabled  if  set  to  false ,  this  function  does  nothing 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-17 16:00:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  c_echo ( $string ,  $enabled  =  true )  
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! $enabled )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-17 16:00:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $console_color ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $console_color )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-16 19:52:36 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        echo  $console_color -> convert ( $string ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  preg_replace ( '/%((%)|.)/' ,  '' ,  $string ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  true  if  the  given  graph  type  is  a  dynamic  MIB  graph 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  is_mib_graph ( $type ,  $subtype )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $config [ 'graph_types' ][ $type ][ $subtype ][ 'section' ]  ==  'mib' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // is_mib_graph
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  true  if  client  IP  address  is  authorized  to  access  graphs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  is_client_authorized ( $clientip )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-16 08:42:05 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $config [ 'allow_unauth_graphs' ])  &&  $config [ 'allow_unauth_graphs' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        d_echo ( " Unauthorized graphs allowed \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isset ( $config [ 'allow_unauth_graphs_cidr' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $config [ 'allow_unauth_graphs_cidr' ]  as  $range )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( Net_IPv4 :: ipInNetwork ( $clientip ,  $range ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                d_echo ( " Unauthorized graphs allowed from  $range\n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // is_client_authorized
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:50:37 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:55:18 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  an  array  of  all  graph  subtypes  for  the  given  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 15:00:15 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_graph_subtypes ( $type ,  $device  =  null )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:55:18 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $types  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // find the subtypes defined in files
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $handle  =  opendir ( $config [ 'install_dir' ]  .  " /html/includes/graphs/ $type / " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( false  !==  ( $file  =  readdir ( $handle )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $file  !=  " . "  &&  $file  !=  " .. "  &&  $file  !=  " auth.inc.php "  &&  strstr ( $file ,  " .inc.php " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $types []  =  str_replace ( " .inc.php " ,  " " ,  $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        closedir ( $handle ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 02:45:45 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $device  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // find the MIB subtypes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $graphs  =  get_device_graphs ( $device ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $config [ 'graph_types' ]  as  $type  =>  $unused1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            foreach  ( $config [ 'graph_types' ][ $type ]  as  $subtype  =>  $unused2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( is_mib_graph ( $type ,  $subtype )  &&  in_array ( $graphs ,  $subtype ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $types []  =  $subtype ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-13 22:55:18 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sort ( $types ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $types ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // get_graph_subtypes
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 02:45:45 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_device_graphs ( $device )  
						 
					
						
							
								
									
										
										
										
											2016-01-17 15:00:15 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-09-15 02:45:45 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $query  =  'SELECT `graph` FROM `device_graphs` WHERE `device_id` = ?' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  dbFetchColumn ( $query ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-01-17 15:00:15 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_smokeping_files ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-06-24 11:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-16 16:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $smokeping_files  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 11:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $config [ 'smokeping' ][ 'dir' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-12 19:47:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $smokeping_dir  =  generate_smokeping_file ( $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 11:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $handle  =  opendir ( $smokeping_dir ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( false  !==  ( $file  =  readdir ( $handle )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-16 16:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( $file  !=  '.'  &&  $file  !=  '..' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-24 01:05:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( stripos ( $file ,  '.rrd' )  !==  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( strpos ( $file ,  '~' )  !==  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-16 16:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            list ( $target , $slave )  =  explode ( '~' ,  str_replace ( '.rrd' ,  '' ,  $file )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $target  =  str_replace ( '_' ,  '.' ,  $target ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 11:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $smokeping_files [ 'in' ][ $target ][ $slave ]  =  $file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $smokeping_files [ 'out' ][ $slave ][ $target ]  =  $file ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-16 16:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $target  =  str_replace ( '.rrd' ,  '' ,  $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $target  =  str_replace ( '_' ,  '.' ,  $target ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 11:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $smokeping_files [ 'in' ][ $target ][ $config [ 'own_hostname' ]]  =  $file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            $smokeping_files [ 'out' ][ $config [ 'own_hostname' ]][ $target ]  =  $file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $smokeping_files ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-23 17:51:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // end get_smokeping_files
  
						 
					
						
							
								
									
										
										
										
											2015-07-10 16:10:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  generate_smokeping_file ( $device ,  $file  =  '' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-10 16:10:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'smokeping' ][ 'integration' ]  ===  true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 09:37:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $config [ 'smokeping' ][ 'dir' ]  . '/' .  $device [ 'type' ]  . '/'  .  $file ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 09:37:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $config [ 'smokeping' ][ 'dir' ]  .  '/'  .  $file ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 16:10:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // generate_smokeping_file
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-10 16:10:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-21 17:08:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  rounded  value  to  10 th / 100 th / 1000 th  depending  on  input  ( valid :  10 ,  100 ,  1000 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  round_Nth ( $val ,  $round_to )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-07-21 17:08:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  (( $round_to  ==  " 10 " )  ||  ( $round_to  ==  " 100 " )  ||  ( $round_to  ==  " 1000 " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $diff  =  $val  %  $round_to ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $diff  >=  ( $round_to  /  2 ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ret  =  $val  +  ( $round_to - $diff ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ret  =  $val  -  $diff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // end round_Nth
  
						 
					
						
							
								
									
										
										
										
											2015-07-21 17:08:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:38:32 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  true  if  this  device  should  be  polled  with  MIB - based  discovery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  is_mib_poller_enabled ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-05-03 02:14:35 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $val  =  get_dev_attrib ( $device ,  'poll_mib' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $val  ==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  is_module_enabled ( 'poller' ,  'mib' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:38:32 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 02:14:35 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $val ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:38:32 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // is_mib_poller_enabled
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 22:07:48 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  count_mib_mempools ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_mib_poller_enabled ( $device )  &&  $device [ 'os' ]  ==  'ruckuswireless' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // count_mib_mempools
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 22:07:48 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  count_mib_processors ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_mib_poller_enabled ( $device )  &&  $device [ 'os' ]  ==  'ruckuswireless' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // count_mib_processors
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  count_mib_health ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  count_mib_mempools ( $device )  +  count_mib_processors ( $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // count_mib_health
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-02 19:40:21 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_mibval ( $device ,  $oid )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $sql  =  'SELECT * FROM `device_oids` WHERE `device_id` = ? AND `oid` = ?' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  dbFetchRow ( $sql ,  array ( $device [ 'device_id' ],  $oid )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // get_mibval
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
									
										
										
										
											2015-12-02 19:40:21 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation  -  needs  an  abstraction  for  each  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  get_mib_mempools ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $mempools  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_mib_poller_enabled ( $device )  &&  $device [ 'os' ]  ==  'ruckuswireless' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-02 19:40:21 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $mempool  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mibvals  =  get_mibval ( $device ,  '.1.3.6.1.4.1.25053.1.2.1.1.1.15.14.0' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'mempool_descr' ]  =  $mibvals [ 'object_type' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'mempool_id' ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'mempool_total' ]  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'mempool_used' ]  =  $mibvals [ 'numvalue' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'mempool_free' ]  =  100  -  $mibvals [ 'numvalue' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempool [ 'percentage' ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mempools []  =  $mempool ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $mempools ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // get_mib_mempools
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation  -  needs  an  abstraction  for  each  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  get_mib_processors ( $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $processors  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_mib_poller_enabled ( $device )  &&  $device [ 'os' ]  ==  'ruckuswireless' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-02 19:40:21 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $proc  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mibvals  =  get_mibval ( $device ,  '.1.3.6.1.4.1.25053.1.2.1.1.1.15.13.0' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $proc [ 'processor_descr' ]  =  $mibvals [ 'object_type' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $proc [ 'processor_id' ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $proc [ 'processor_usage' ]  =  $mibvals [ 'numvalue' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $processors []  =  $proc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $processors ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // get_mib_processors
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation  -  needs  an  abstraction  for  each  device 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ return  true  if  there  is  a  custom  graph  defined  for  this  type ,  subtype ,  and  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  is_custom_graph ( $type ,  $subtype ,  $device )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_mib_poller_enabled ( $device )  &&  $device [ 'os' ]  ==  'ruckuswireless'  &&  $type  ==  'device' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        switch  ( $subtype )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  'cpumem' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            case  'mempool' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            case  'processor' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // is_custom_graph
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
									
										
										
										
											2015-08-16 22:07:48 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  FIXME :  Dummy  implementation 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Set  section / graph  entries  in  $graph_enable  for  graphs  specific  to  $os . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  enable_os_graphs ( $os ,  & $graph_enable )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( dbFetchRows ( " SELECT * FROM graph_conditions WHERE graph_type = 'device' AND condition_name = 'os' AND condition_value = ? " ,  array ( $os ))  as  $graph )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $graph_enable [ $graph [ 'graph_section' ]][ $graph [ 'graph_subtype' ]]  =  " device_ " . $graph [ 'graph_subtype' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // enable_os_graphs
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  For  each  os - based  or  global  graph  relevant  to  $device ,  set  its  section / graph  entry  in  $graph_enable . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  enable_graphs ( $device ,  & $graph_enable )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // These are standard graphs we should have for all systems
 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-24 03:43:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $graph_enable [ 'poller' ][ 'poller_perf' ]          =  'device_poller_perf' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $graph_enable [ 'poller' ][ 'poller_modules_perf' ]  =  'device_poller_modules_perf' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-06 18:07:51 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( can_ping_device ( $device )  ===  true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-24 14:21:19 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $graph_enable [ 'poller' ][ 'ping_perf' ]  =  'device_ping_perf' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enable_os_graphs ( $device [ 'os' ],  $graph_enable ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // enable_graphs
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 08:14:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:02:16 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// maintain a simple cache of objects
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  object_add_cache ( $section ,  $obj )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $object_cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $object_cache [ $section ][ $obj ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // object_add_cache
  
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:02:16 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  object_is_cached ( $section ,  $obj )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $object_cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( array_key_exists ( $obj ,  $object_cache ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-06 18:07:51 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $object_cache [ $section ][ $obj ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:02:16 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // object_is_cached
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:02:16 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-17 18:49:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Checks  if  config  allows  us  to  ping  this  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  $attribs  contains  an  array  of  all  of  this  devices 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $attribs  Device  attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**/  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  can_ping_device ( $attribs )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-10-17 18:49:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'icmp_check' ]  ===  true  &&  $attribs [ 'override_icmp_disable' ]  !=  " true " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-17 18:49:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // end can_ping_device
  
						 
					
						
							
								
									
										
										
										
											2015-11-10 12:33:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:07:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  true  if  the  requested  module  type  &  name  is  globally  enabled 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  is_module_enabled ( $type ,  $module )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isset ( $config [ $type . '_modules' ][ $module ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $config [ $type . '_modules' ][ $module ]  ==  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:07:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // is_module_enabled
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:07:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  true  if  every  string  in  $arr  begins  with  $str 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  begins_with ( $str ,  $arr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( $arr  as  $s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $pos  =  strpos ( $s ,  $str ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $pos  ===  false  ||  $pos  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // begins_with
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 14:07:23 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  the  longest  starting  portion  of  $str  that  matches  everything  in  $arr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  longest_matching_prefix ( $str ,  $arr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $len  =  strlen ( $str ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( $len  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $prefix  =  substr ( $str ,  0 ,  $len ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( begins_with ( $prefix ,  $arr ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $prefix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $len  -=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // longest_matching_prefix
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-06 18:07:51 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  search_phrase_column ( $c )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $searchPhrase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  " $c  LIKE '% $searchPhrase %' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // search_phrase_column
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  print_mib_poller_disabled ()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-07 09:25:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    echo  ' < h4 > MIB  polling  is  not  enabled </ h4 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Set  < tt > $config [ \ ' poller_modules\ ' ][ \ ' mib\ ' ]  =  1 ; </ tt >  in  < tt > config . php </ tt >  to  enable .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								</ p > ' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // print_mib_poller_disabled
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 12:33:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Constructs  the  path  to  an  RRD  for  the  Ceph  application 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $gtype  The  type  of  rrd  we ' re  looking  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**/  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  ceph_rrd ( $gtype )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-11-10 12:33:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $device ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $vars ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $gtype  ==  " osd " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $var  =  $vars [ 'osd' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 12:33:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $var  =  $vars [ 'pool' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 01:33:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  rrd_name ( $device [ 'hostname' ],  array ( 'app' ,  'ceph' ,  $vars [ 'id' ],  $gtype ,  $var )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-15 18:18:13 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  // ceph_rrd
  
						 
					
						
							
								
									
										
										
										
											2015-11-16 18:50:52 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Parse  location  field  for  coordinates 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  location  The  location  field  to  look  for  coords  in . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  array  Containing  the  lat  and  lng  coords 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**/  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  parse_location ( $location )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-11-30 21:00:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    preg_match ( '/(\[)(-?[0-9\. ]+),[ ]*(-?[0-9\. ]+)(\])/' ,  $location ,  $tmp_loc ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-16 18:50:52 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! empty ( $tmp_loc [ 2 ])  &&  ! empty ( $tmp_loc [ 3 ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  array ( 'lat'  =>  $tmp_loc [ 2 ],  'lng'  =>  $tmp_loc [ 3 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} //end parse_location()
  
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  version  info 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**/  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  version_info ( $remote  =  true )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $output  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $remote  ===  true  &&  $config [ 'update_channel' ]  ==  'master' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $api  =  curl_init (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set_curl_proxy ( $api ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        curl_setopt ( $api ,  CURLOPT_USERAGENT ,  'LibreNMS' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        curl_setopt ( $api ,  CURLOPT_URL ,  $config [ 'github_api' ] . 'commits/master' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        curl_setopt ( $api ,  CURLOPT_RETURNTRANSFER ,  1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $output [ 'github' ]  =  json_decode ( curl_exec ( $api ),  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-31 22:41:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    list ( $local_sha ,  $local_date )  =  explode ( '|' ,  rtrim ( `git show --pretty='%H|%ct' -s HEAD` )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 12:15:14 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $output [ 'local_sha' ]     =  $local_sha ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $output [ 'local_date' ]    =  $local_date ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-29 12:53:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $output [ 'local_branch' ]  =  rtrim ( `git rev-parse --abbrev-ref HEAD` ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $output [ 'db_schema' ]    =  dbFetchCell ( 'SELECT version FROM dbSchema' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $output [ 'php_ver' ]      =  phpversion (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $output [ 'mysql_ver' ]    =  dbFetchCell ( 'SELECT version()' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $output [ 'rrdtool_ver' ]  =  implode ( ' ' ,  array_slice ( explode ( ' ' ,  shell_exec ( $config [ 'rrdtool' ] . ' --version |head -n1' )),  1 ,  1 )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 11:48:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $output [ 'netsnmp_ver' ]  =  str_replace ( 'version: ' ,  '' ,  rtrim ( shell_exec ( $config [ 'snmpget' ] . ' --version 2>&1' ))); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 00:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $output ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} //end version_info()
  
						 
					
						
							
								
									
										
										
										
											2016-01-17 23:59:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Convert  a  MySQL  binary  v4  ( 4 - byte )  or  v6  ( 16 - byte )  IP  address  to  a  printable  string .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ param  string  $ip  A  binary  string  containing  an  IP  address ,  as  returned  from  MySQL ' s  INET6_ATON  function 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ return  string  Empty  if  not  valid .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Fuction is from http://uk3.php.net/manual/en/function.inet-ntop.php
  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  inet6_ntop ( $ip )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-17 23:59:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $l  =  strlen ( $ip ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $l  ==  4  or  $l  ==  16 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  inet_ntop ( pack ( 'A'  .  $l ,  $ip )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-01-19 09:00:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 22:01:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Convert  IP  to  use  sysName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  ip  address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**/  
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  ip_to_sysname ( $device ,  $ip )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-17 22:01:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'force_ip_to_sysname' ]  ===  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV4 )  ==  true  ||  filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV6 )  ==  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ip  =  $device [ 'sysName' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $ip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} //end ip_to_sysname
  
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Return  valid  port  association  modes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  bool  $no_cache  No - Cache  flag  ( optional ,  default  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_assoc_modes ( $no_cache  =  false )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $assoc_modes  =  $config [ 'memcached' ][ 'resource' ] -> get ( hash ( 'sha512' ,  " port_assoc_modes " )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( !  empty ( $assoc_modes ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $assoc_modes ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $assoc_modes  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( dbFetchRows ( " SELECT `name` FROM `port_association_mode` ORDER BY pom_id " )  as  $row )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $assoc_modes []  =  $row [ 'name' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $config [ 'memcached' ][ 'resource' ] -> set ( hash ( 'sha512' ,  " port_assoc_modes " ),  $assoc_modes ,  $config [ 'memcached' ][ 'ttl' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $assoc_modes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Validate  port_association_mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $port_assoc_mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  is_valid_port_assoc_mode ( $port_assoc_mode )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  in_array ( $port_assoc_mode ,  get_port_assoc_modes ()); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Get  DB  id  of  given  port  association  mode  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $port_assoc_mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  bool  $no_cache  No - Cache  flag  ( optional ,  default  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_assoc_mode_id ( $port_assoc_mode ,  $no_cache  =  false )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $id  =  $config [ 'memcached' ][ 'resource' ] -> get ( hash ( 'sha512' ,  " port_assoc_mode_id| $port_assoc_mode " )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( !  empty ( $id ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $id ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $id  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $row  =  dbFetchRow ( " SELECT `pom_id` FROM `port_association_mode` WHERE name = ? " ,  array  ( $port_assoc_mode )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $row )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $id  =  $row [ 'pom_id' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $config [ 'memcached' ][ 'resource' ] -> set ( hash ( 'sha512' ,  " port_assoc_mode_id| $port_assoc_mode " ),  $id ,  $config [ 'memcached' ][ 'ttl' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Get  name  of  given  port  association_mode  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  int  $port_assoc_mode_id  Port  association  mode  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  bool  $no_cache  No - Cache  flag  ( optional ,  default  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_assoc_mode_name ( $port_assoc_mode_id ,  $no_cache  =  false )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $name  =  $config [ 'memcached' ][ 'resource' ] -> get ( hash ( 'sha512' ,  " port_assoc_mode_name| $port_assoc_mode_id " )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( !  empty ( $name ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  $name ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $name  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $row  =  dbFetchRow ( " SELECT `name` FROM `port_association_mode` WHERE pom_id = ? " ,  array  ( $port_assoc_mode_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $row )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $name  =  $row [ 'name' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $config [ 'memcached' ][ 'enable' ]  &&  $no_cache  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $config [ 'memcached' ][ 'resource' ] -> set ( hash ( 'sha512' ,  " port_assoc_mode_name| $port_assoc_mode_id " ),  $name ,  $config [ 'memcached' ][ 'ttl' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Query  all  ports  of  the  given  device  ( by  ID )  and  build  port  array  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  port  association  maps  for  ifIndex ,  ifName ,  ifDescr .  Query  port  stats 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  if  told  to  do  so ,  too . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  int  $device_id  ID  of  device  to  query  ports  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  bool  $with_statistics  Query  port  statistics ,  too .  ( optional ,  default  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_ports_mapped ( $device_id ,  $with_statistics  =  false )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-30 10:05:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $ports  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-30 10:10:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $maps  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-30 10:05:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'ifIndex'  =>  array (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'ifName'   =>  array (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'ifDescr'  =>  array (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $with_statistics )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* ... including any related ports_statistics if requested */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $query  =  'SELECT *, `ports_statistics`.`port_id` AS `ports_statistics_port_id`, `ports`.`port_id` AS `port_id` FROM `ports` LEFT OUTER JOIN `ports_statistics` ON `ports`.`port_id` = `ports_statistics`.`port_id` WHERE `ports`.`device_id` = ? ORDER BY ports.port_id' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-15 02:03:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* Query all information available for ports for this device ... */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $query  =  'SELECT * FROM `ports` WHERE `device_id` = ? ORDER BY port_id' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Query known ports in order of discovery to make sure the latest
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // discoverd/polled port is in the mapping tables.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    foreach  ( dbFetchRows ( $query ,  array  ( $device_id ))  as  $port )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Store port information by ports port_id from DB
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ports [ $port [ 'port_id' ]]  =  $port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Build maps from ifIndex, ifName, ifDescr to port_id
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maps [ 'ifIndex' ][ $port [ 'ifIndex' ]]  =  $port [ 'port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maps [ 'ifName' ][ $port [ 'ifName' ]]    =  $port [ 'port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $maps [ 'ifDescr' ][ $port [ 'ifDescr' ]]  =  $port [ 'port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-30 10:05:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'ports'  =>  $ports , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'maps'   =>  $maps , 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-30 10:05:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Calculate  port_id  of  given  port  using  given  devices  port  information  and  port  association  mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $ports_mapped  Port  information  of  device  queried  by  get_ports_mapped () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $port  Port  information  as  fetched  from  DB 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $port_association_mode  Port  association  mode  to  use  for  mapping 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  int  port_id  ( or  Null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get_port_id ( $ports_mapped ,  $port ,  $port_association_mode )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Get port_id according to port_association_mode used for this device
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $port_id  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Information  an  all  ports  is  available  through  $ports_mapped [ 'ports' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  This  might  come  in  handy  sometime  in  the  future  to  add  you  nifty  new 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  port  mapping  schema : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  $ports  =  $ports_mapped [ 'ports' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $maps   =  $ports_mapped [ 'maps' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( in_array ( $port_association_mode ,  array  ( 'ifIndex' ,  'ifName' ,  'ifDescr' ,  'ifAlias' )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-26 13:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $port_id  =  $maps [ $port_association_mode ][ $port [ $port_association_mode ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $port_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Create  a  glue - chain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $tables  Initial  Tables  to  construct  glue - chain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  $target  Glue  to  find  ( usual  device_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  int  $x  Recursion  Anchor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $hist  History  of  processed  tables 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  array  $last  Glues  on  the  fringe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  string | boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  ResolveGlues ( $tables ,  $target ,  $x  =  0 ,  $hist  =  array (),  $last  =  array ())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( sizeof ( $tables )  ==  1  &&  $x  !=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( dbFetchCell ( 'SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_NAME = ? && COLUMN_NAME = ?' ,  array ( $tables [ 0 ], $target ))  ==  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  array_merge ( $last ,  array ( $tables [ 0 ] . '.' . $target )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $x ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $x  >  30 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            //Too much recursion. Abort.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        foreach  ( $tables  as  $table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $glues  =  dbFetchRows ( 'SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = ? && COLUMN_NAME LIKE "%\_id"' ,  array ( $table )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( sizeof ( $glues )  ==  1  &&  $glues [ 0 ][ 'COLUMN_NAME' ]  !=  $target )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                //Search for new candidates to expand
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $ntables  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                list ( $tmp )  =  explode ( '_' ,  $glues [ 0 ][ 'COLUMN_NAME' ],  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $ntables []  =  $tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $ntables []  =  $tmp . 's' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $tmp  =  dbFetchRows ( 'SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE "' . substr ( $table ,  0 ,  - 1 ) . '_%" && TABLE_NAME != "' . $table . '"' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach  ( $tmp  as  $expand )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    $ntables []  =  $expand [ 'TABLE_NAME' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                $tmp  =  ResolveGlues ( $ntables ,  $target ,  $x ++ ,  array_merge ( $tables ,  $ntables ),  array_merge ( $last ,  array ( $table . '.' . $glues [ 0 ][ 'COLUMN_NAME' ]))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( is_array ( $tmp ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    return  $tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach  ( $glues  as  $glue )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( $glue [ 'COLUMN_NAME' ]  ==  $target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  array_merge ( $last ,  array ( $table . '.' . $target )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        list ( $tmp )  =  explode ( '_' ,  $glue [ 'COLUMN_NAME' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        $tmp  .=  's' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( ! in_array ( $tmp ,  $tables )  &&  ! in_array ( $tmp ,  $hist ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            //Expand table
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            $tmp  =  ResolveGlues ( array ( $tmp ),  $target ,  $x ++ ,  array_merge ( $tables ,  array ( $tmp )),  array_merge ( $last ,  array ( $table . '.' . $glue [ 'COLUMN_NAME' ]))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( is_array ( $tmp ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 08:42:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                return  $tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //You should never get here.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Determine  if  a  given  string  contains  a  given  substring . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ param   string  $haystack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   string | array  $needles 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   bool  $case_insensitive 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  str_contains ( $haystack ,  $needles ,  $case_insensitive  =  false )  
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $case_insensitive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array )  $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $needle  !=  ''  &&  stripos ( $haystack ,  $needle )  !==  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-30 11:55:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array )  $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $needle  !=  ''  &&  strpos ( $haystack ,  $needle )  !==  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Determine  if  a  given  string  ends  with  a  given  substring . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   string  $haystack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   string | array  $needles 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ param   bool  $case_insensitive 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  ends_with ( $haystack ,  $needles ,  $case_insensitive  =  false )  
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $case_insensitive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $lower_haystack  =  strtolower ( $haystack ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array ) $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( strtolower ( $needle )  ===  substr ( $lower_haystack ,  - strlen ( $needle )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array ) $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  (( string ) $needle  ===  substr ( $haystack ,  - strlen ( $needle )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Determine  if  a  given  string  starts  with  a  given  substring . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   string  $haystack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param   string | array  $needles 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ param   bool  $case_insensitive 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ return  bool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  starts_with ( $haystack ,  $needles ,  $case_insensitive  =  false )  
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2016-08-31 00:11:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( $case_insensitive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array ) $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $needle  !=  ''  &&  stripos ( $haystack ,  $needle )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  (( array ) $needles  as  $needle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $needle  !=  ''  &&  strpos ( $haystack ,  $needle )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 14:57:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-09-23 22:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  get_auth_ad_user_filter ( $username )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $user_filter  =  " (samaccountname= $username ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'auth_ad_user_filter' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $user_filter  =  " (& { $config [ 'auth_ad_user_filter' ] } $user_filter ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $user_filter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  get_auth_ad_group_filter ( $groupname )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $group_filter  =  " (samaccountname= $groupname ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $config [ 'auth_ad_group_filter' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $group_filter  =  " (& { $config [ 'auth_ad_group_filter' ] } $group_filter ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $group_filter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-10-15 20:45:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  $value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  clean ( $value )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  strip_tags ( mres ( $value )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  $value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  display ( $value )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  htmlentities ( stripslashes ( strip_tags ( $value ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}