2009-09-07 11:07:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 16:52:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Observium 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    This  file  is  part  of  Observium . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ package     observium 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ subpackage  functions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ author      Adam  Armstrong  < adama @ memetic . org > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ copyright   ( C )  2006  -  2012  Adam  Armstrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Include from PEAR
 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-13 16:27:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								include_once ( " Net/IPv4.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								include_once ( " Net/IPv6.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Observium Includes
 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 21:22:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/dbFacile.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-13 16:27:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-05-07 13:47:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/common.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 13:46:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/rrdtool.inc.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-26 18:22:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/billing.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-13 16:27:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/cisco-entities.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/syslog.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-27 12:36:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/rewrites.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-28 22:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/snmp.inc.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-28 12:49:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/services.inc.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								include_once ( $config [ 'install_dir' ]  .  " /includes/console_colour.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-02 22:02:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-01 17:06:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$console_color  =  new  Console_Color2 (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $config [ 'alerts' ][ 'email' ][ 'enable' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    include_once ( $config [ 'install_dir' ]  .  " /includes/phpmailer/class.phpmailer.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    include_once ( $config [ 'install_dir' ]  .  " /includes/phpmailer/class.smtp.php " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-26 12:11:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  array_sort ( $array ,  $on ,  $order = SORT_ASC )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 10:34:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $new_array  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $sortable_array  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( count ( $array )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $array  as  $k  =>  $v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( is_array ( $v ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                foreach  ( $v  as  $k2  =>  $v2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( $k2  ==  $on )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $sortable_array [ $k ]  =  $v2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 10:34:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $sortable_array [ $k ]  =  $v ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        switch  ( $order )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  SORT_ASC : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            asort ( $sortable_array ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 10:34:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  SORT_DESC : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            arsort ( $sortable_array ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 10:34:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $sortable_array  as  $k  =>  $v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $new_array [ $k ]  =  $array [ $k ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $new_array ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-08 16:21:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  mac_clean_to_readable ( $mac )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  =  substr ( $mac ,  0 ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  .=  " : " . substr ( $mac ,  2 ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  .=  " : " . substr ( $mac ,  4 ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  .=  " : " . substr ( $mac ,  6 ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  .=  " : " . substr ( $mac ,  8 ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  .=  " : " . substr ( $mac ,  10 ,  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-03 22:32:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return ( $r ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-03 22:32:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  only_alphanumeric ( $string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  preg_replace ( '/[^a-zA-Z0-9]/' ,  '' ,  $string ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-23 21:13:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  logfile ( $string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-16 10:31:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $fd  =  fopen ( $config [ 'log_file' ], 'a' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    fputs ( $fd , $string  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    fclose ( $fd ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 11:32:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  getHostOS ( $device ){ 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $sysDescr     =  snmp_get  ( $device ,  " SNMPv2-MIB::sysDescr.0 " ,  " -Ovq " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $sysObjectId  =  snmp_get  ( $device ,  " SNMPv2-MIB::sysObjectID.0 " ,  " -Ovqn " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-11 00:40:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " |  $sysDescr  |  $sysObjectId  |  " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-11 20:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $path  =  $config [ 'install_dir' ]  .  " /includes/discovery/os " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $dir_handle  =  @ opendir ( $path )  or  die ( " Unable to open  $path " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while  ( $file  =  readdir ( $dir_handle ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( preg_match ( " /.php $ / " ,  $file ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            include ( $config [ 'install_dir' ]  .  " /includes/discovery/os/ "  .  $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-12 11:15:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    closedir ( $dir_handle ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $os )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $os ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  " generic " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-12 11:15:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  percent_colour ( $perc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $r  =  min ( 255 ,  5  *  ( $perc  -  25 )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $b  =  max ( 0 ,  255  -  ( 5  *  ( $perc  +  25 ))); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-27 10:21:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  sprintf ( '#%02x%02x%02x' ,  $r ,  $b ,  $b ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-24 14:56:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Returns the last in/out errors value in RRD
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  interface_errors ( $rrd_file ,  $period  =  '-1d' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $errors  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $cmd  =  $config [ 'rrdtool' ] . "  fetch -s  $period  -e -300s  $rrd_file  AVERAGE | grep : | cut -d \"   \"  -f 4,5 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $data  =  trim ( shell_exec ( $cmd )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $in_errors  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $out_errors  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( explode ( " \n " ,  $data )  as  $entry )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        list ( $in ,  $out )  =  explode ( "   " ,  $entry ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $in_errors  +=  ( $in  *  300 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $out_errors  +=  ( $out  *  300 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $errors [ 'in' ]  =  round ( $in_errors ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $errors [ 'out' ]  =  round ( $out_errors ); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $errors ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  getImage ( $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'os' ]  =  strtolower ( $device [ 'os' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'icon' ]  &&  file_exists ( $config [ 'html_dir' ]  .  " /images/os/ "  .  $device [ 'icon' ]  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $image  =  '<img src="'  .  $config [ 'base_url' ]  .  '/images/os/'  .  $device [ 'icon' ]  .  '.png" />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif  ( isset ( $config [ 'os' ][ $device [ 'os' ]][ 'icon' ])  &&  $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  &&  file_exists ( $config [ 'html_dir' ]  .  " /images/os/ "  .  $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $image  =  '<img src="'  .  $config [ 'base_url' ]  .  '/images/os/'  .  $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  .  '.png" />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( file_exists ( $config [ 'html_dir' ]  .  '/images/os/'  .  $device [ 'os' ]  .  '.png' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $image  =  '<img src="'  .  $config [ 'base_url' ]  .  '/images/os/'  .  $device [ 'os' ]  .  '.png" />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'os' ]  ==  " linux " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $features  =  strtolower ( trim ( $device [ 'features' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            list ( $distro )  =  explode ( "   " ,  $features ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( file_exists ( $config [ 'html_dir' ]  .  " /images/os/ $distro "  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $image  =  '<img src="'  .  $config [ 'base_url' ]  .  '/images/os/'  .  $distro  .  '.png" />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( empty ( $image ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $image  =  '<img src="'  .  $config [ 'base_url' ]  .  '/images/os/generic.png" />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $image ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-13 10:05:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  getImageSrc ( $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'os' ]  =  strtolower ( $device [ 'os' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'icon' ]  &&  file_exists ( $config [ 'html_dir' ]  .  " /images/os/ "  .  $device [ 'icon' ]  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $image  =  $config [ 'base_url' ]  .  '/images/os/'  .  $device [ 'icon' ]  .  '.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif  ( $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  &&  file_exists ( $config [ 'html_dir' ]  .  " /images/os/ "  .  $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $image  =  $config [ 'base_url' ]  .  '/images/os/'  .  $config [ 'os' ][ $device [ 'os' ]][ 'icon' ]  .  '.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( file_exists ( $config [ 'html_dir' ]  .  '/images/os/'  .  $device [ 'os' ]  .  '.png' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $image  =  $config [ 'base_url' ]  .  '/images/os/'  .  $device [ 'os' ]  .  '.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'os' ]  ==  " linux " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $features  =  strtolower ( trim ( $device [ 'features' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            list ( $distro )  =  explode ( "   " ,  $features ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( file_exists ( $config [ 'html_dir' ]  .  " /images/os/ $distro "  .  " .png " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $image  =  $config [ 'base_url' ]  .  '/images/os/'  .  $distro  .  '.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( empty ( $image ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $image  =  $config [ 'base_url' ]  .  '/images/os/generic.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $image ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-19 12:12:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  renamehost ( $id ,  $new ,  $source  =  'console' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // FIXME does not check if destination exists!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $host  =  dbFetchCell ( " SELECT `hostname` FROM `devices` WHERE `device_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( rename ( $config [ 'rrd_dir' ] . " / $host " , $config [ 'rrd_dir' ] . " / $new " )  ===  TRUE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        dbUpdate ( array ( 'hostname'  =>  $new ),  'devices' ,  'device_id=?' ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        log_event ( " Hostname changed ->  $new  ( $source ) " ,  $id ,  'system' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  " Renaming of  $host  failed \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        log_event ( " Renaming of  $host  failed " ,  $id ,  'system' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  delete_device ( $id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ,  $debug ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ret  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $host  =  dbFetchCell ( " SELECT hostname FROM devices WHERE device_id = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (  empty ( $host )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  " No such host. " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Remove IPv4/IPv6 addresses before removing ports as they depend on port_id
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    dbQuery ( " DELETE `ipv4_addresses` FROM `ipv4_addresses` INNER JOIN `ports` ON `ports`.`port_id`=`ipv4_addresses`.`port_id` WHERE `device_id`=? " , array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    dbQuery ( " DELETE `ipv6_addresses` FROM `ipv6_addresses` INNER JOIN `ports` ON `ports`.`port_id`=`ipv6_addresses`.`port_id` WHERE `device_id`=? " , array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( dbFetch ( " SELECT * FROM `ports` WHERE `device_id` = ? " ,  array ( $id ))  as  $int_data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $int_if  =  $int_data [ 'ifDescr' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $int_id  =  $int_data [ 'port_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        delete_port ( $int_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ret  .=  " Removed interface  $int_id  ( $int_if ) \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields  =  array ( 'device_id' , 'host' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach (  $fields  as  $field  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach (  dbFetch ( " SELECT table_name FROM information_schema.columns WHERE table_schema = ? AND column_name = ? " , array ( $config [ 'db_name' ], $field ))  as  $table  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $table  =  $table [ 'table_name' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $entries  =  ( int )  dbDelete ( $table ,  " ` $field ` =  ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if (  $entries  >  0  &&  $debug  ===  true  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ret  .=  " $field @ $table  = # $entries\n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-20 23:19:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-09 16:18:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ex  =  shell_exec ( " bash -c '( [ ! -d  " . trim ( $config [ 'rrd_dir' ]) . " / " . $host . "  ] || rm -vrf  " . trim ( $config [ 'rrd_dir' ]) . " / " . $host . "  2>&1 ) && echo -n OK' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $tmp  =  explode ( " \n " , $ex ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (  $tmp [ sizeof ( $tmp ) - 1 ]  !=  " OK "  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ret  .=  " Could not remove files: \n $ex\n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ret  .=  " Removed device  $host\n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  addHost ( $host ,  $snmpver ,  $port  =  '161' ,  $transport  =  'udp' ,  $quiet  =  '0' ,  $poller_group  =  '0' ,  $force_add  =  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-09 16:18:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    list ( $hostshort )  =  explode ( " . " ,  $host ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Test Database Exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( " SELECT COUNT(*) FROM `devices` WHERE `hostname` = ? " ,  array ( $host ))  ==  '0' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-15 21:07:04 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $config [ 'addhost_alwayscheckip' ]  ===  TRUE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ip  =  gethostbyname ( $host ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ip  =  $host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ip_exists ( $ip )  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Test reachability
 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 02:25:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $address_family  =  snmpTransportToAddressFamily ( $transport ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 15:27:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $force_add  ==  1  ||  isPingable ( $host ,  $address_family ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( empty ( $snmpver ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Try SNMPv2c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $snmpver  =  'v2c' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ret  =  addHost ( $host ,  $snmpver ,  $port ,  $transport ,  $quiet ,  $poller_group ,  $force_add ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( ! $ret )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        //Try SNMPv3
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $snmpver  =  'v3' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $ret  =  addHost ( $host ,  $snmpver ,  $port ,  $transport ,  $quiet ,  $poller_group ,  $force_add ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if  ( ! $ret )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            // Try SNMPv1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            $snmpver  =  'v1' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            return  addHost ( $host ,  $snmpver ,  $port ,  $transport ,  $quiet ,  $poller_group ,  $force_add ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            return  $ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        return  $ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( $snmpver  ===  " v3 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Try each set of parameters from config
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    foreach  ( $config [ 'snmp' ][ 'v3' ]  as  $v3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $device  =  deviceArray ( $host ,  NULL ,  $snmpver ,  $port ,  $transport ,  $v3 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if ( $quiet  ==  '0' )  {  print_message ( " Trying v3 parameters  "  .  $v3 [ 'authname' ]  .  " / "  .   $v3 [ 'authlevel' ]  .  "  ...  " );  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if  ( $force_add  ==  1  ||  isSNMPable ( $device ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            $snmphost  =  snmp_get ( $device ,  " sysName.0 " ,  " -Oqv " ,  " SNMPv2-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if  ( empty ( $snmphost )  or  ( $snmphost  ==  $host  ||  $hostshort  =  $host ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                $device_id  =  createHost  ( $host ,  NULL ,  $snmpver ,  $port ,  $transport ,  $v3 ,  $poller_group ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                return  $device_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    print_error ( " Given hostname does not match SNMP-read hostname ( $snmphost )! " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                print_error ( " No reply on credentials  "  .  $v3 [ 'authname' ]  .  " / "  .   $v3 [ 'authlevel' ]  .  "  using  $snmpver " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                elseif  ( $snmpver  ===  " v2c "  or  $snmpver  ===  " v1 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // try each community from config
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    foreach  ( $config [ 'snmp' ][ 'community' ]  as  $community )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $device  =  deviceArray ( $host ,  $community ,  $snmpver ,  $port ,  $transport ,  NULL ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            print_message ( " Trying community  $community  ... " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if  ( $force_add  ==  1  ||  isSNMPable ( $device ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            $snmphost  =  snmp_get ( $device ,  " sysName.0 " ,  " -Oqv " ,  " SNMPv2-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if  ( empty ( $snmphost )  ||  ( $snmphost  &&  ( $snmphost  ==  $host  ||  $hostshort  =  $host )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                $device_id  =  createHost  ( $host ,  $community ,  $snmpver ,  $port ,  $transport , array (), $poller_group ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                return  $device_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    print_error ( " Given hostname does not match SNMP-read hostname ( $snmphost )! " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                print_error ( " No reply on community  $community  using  $snmpver " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        print_error ( " Unsupported SNMP Version  \" $snmpver\ " . " );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( ! $device_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Failed SNMP
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        print_error ( " Could not reach  $host  with given SNMP community using  $snmpver " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-08 12:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // failed Reachability
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    print_error ( " Could not ping  $host " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-09 16:18:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $quiet  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                print_error ( " Already have host with this IP  $host " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-14 17:26:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // found in database
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if ( $quiet  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            print_error ( " Already got host  $host " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-20 23:19:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  scanUDP ( $host ,  $port ,  $timeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $handle  =  fsockopen ( $host ,  $port ,  $errno ,  $errstr ,  2 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    socket_set_timeout  ( $handle ,  $timeout ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $write  =  fwrite ( $handle , " \x00 " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! $write )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $startTime  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $endTime  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $timeDiff  =  $endTime  -  $startTime ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $timeDiff  >=  $timeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fclose ( $handle ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fclose ( $handle ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  deviceArray ( $host ,  $community ,  $snmpver ,  $port  =  161 ,  $transport  =  'udp' ,  $v3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'hostname' ]  =  $host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'port' ]  =  $port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'transport' ]  =  $transport ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'snmpver' ]  =  $snmpver ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $snmpver  ===  " v2c "  or  $snmpver  ===  " v1 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'community' ]  =  $community ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif  ( $snmpver  ===  " v3 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'authlevel' ]   =  $v3 [ 'authlevel' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'authname' ]    =  $v3 [ 'authname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'authpass' ]    =  $v3 [ 'authpass' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'authalgo' ]    =  $v3 [ 'authalgo' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'cryptopass' ]  =  $v3 [ 'cryptopass' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'cryptoalgo' ]  =  $v3 [ 'cryptoalgo' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $device ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 16:12:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  netmask2cidr ( $netmask )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $addr  =  Net_IPv4 :: parseAddress ( " 1.2.3.4/ $netmask " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $addr -> bitmask ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  cidr2netmask ( $netmask )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  ( long2ip ( ip2long ( " 255.255.255.255 " )  <<  ( 32 - $netmask ))); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  formatUptime ( $diff ,  $format = " long " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $yearsDiff  =  floor ( $diff / 31536000 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $diff  -=  $yearsDiff * 31536000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $daysDiff  =  floor ( $diff / 86400 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $diff  -=  $daysDiff * 86400 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $hrsDiff  =  floor ( $diff / 60 / 60 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $diff  -=  $hrsDiff * 60 * 60 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $minsDiff  =  floor ( $diff / 60 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $diff  -=  $minsDiff * 60 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $secsDiff  =  $diff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $uptime  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $format  ==  " short " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $yearsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $yearsDiff  .  " y  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $daysDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $daysDiff  .  " d  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $hrsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $hrsDiff  .  " h  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $minsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $minsDiff  .  " m  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $secsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $secsDiff  .  " s  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $yearsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $yearsDiff  .  "  years,  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $daysDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $daysDiff  .  "  day "  .  ( $daysDiff  !=  1  ?  's'  :  '' )  .  " ,  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $hrsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $hrsDiff      .  " h  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $minsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $minsDiff    .  " m  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $secsDiff  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $uptime  .=  $secsDiff    .  " s  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  trim ( $uptime ); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  isSNMPable ( $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $pos  =  snmp_get ( $device ,  " sysObjectID.0 " ,  " -Oqv " ,  " SNMPv2-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( empty ( $pos ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Support for Hikvision
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pos  =  snmp_get ( $device ,  " SNMPv2-SMI::enterprises.39165.1.1.0 " ,  " -Oqv " ,  " SNMPv2-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $pos  ===  ''  ||  $pos  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-24 02:07:15 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Check  if  the  given  host  responds  to  ICMP  echo  requests  ( " pings " ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  string  $hostname  The  hostname  or  IP  address  to  send  ping  requests  to . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  int  $address_family  The  address  family  ( AF_INET  for  IPv4  or  AF_INET6  for  IPv6 )  to  use .  Defaults  to  IPv4 .  Will  * not *  be  autodetected  for  IP  addresses ,  so  it  has  to  be  set  to  AF_INET6  when  pinging  an  IPv6  address  or  an  IPv6 - only  host . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  int  $device_id  This  parameter  is  currently  ignored . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ return  bool  TRUE  if  the  host  responded  to  at  least  one  ping  request ,  FALSE  otherwise . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-24 02:07:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  isPingable ( $hostname ,  $address_family  =  AF_INET ,  $device_id  =  FALSE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fping_params  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( is_numeric ( $config [ 'fping_options' ][ 'retries' ])  ||  $config [ 'fping_options' ][ 'retries' ]  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fping_params  .=  ' -r '  .  $config [ 'fping_options' ][ 'retries' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( is_numeric ( $config [ 'fping_options' ][ 'timeout' ])  ||  $config [ 'fping_options' ][ 'timeout' ]  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fping_params  .=  ' -t '  .  $config [ 'fping_options' ][ 'timeout' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if ( is_numeric ( $config [ 'fping_options' ][ 'count' ])  ||  $config [ 'fping_options' ][ 'count' ]  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fping_params  .=  ' -c '  .  $config [ 'fping_options' ][ 'count' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:23:14 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if ( is_numeric ( $config [ 'fping_options' ][ 'millisec' ])  ||  $config [ 'fping_options' ][ 'millisec' ]  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fping_params  .=  ' -p '  .  $config [ 'fping_options' ][ 'millisec' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $response  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 02:25:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $status  =  fping ( $hostname , $fping_params , $address_family ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $status [ 'loss' ]  ==  100 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $response [ 'result' ]  =  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $response [ 'result' ]  =  TRUE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( is_numeric ( $status [ 'avg' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $response [ 'last_ping_timetaken' ]  =  $status [ 'avg' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $response [ 'db' ]  =  $status ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return ( $response ); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  is_odd ( $number )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $number  &  1 ;  // 0 = even, 1 = odd
 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  utime ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $time  =  explode ( "   " ,  microtime ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $usec  =  ( double ) $time [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $sec  =  ( double ) $time [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $sec  +  $usec ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  getpollergroup ( $poller_group = '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    //Is poller group an integer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( is_int ( $poller_group )  ||  ctype_digit ( $poller_group ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $poller_group ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        //Check if it contains a comma
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( strpos ( $poller_group , ',' ) !==  FALSE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            //If it has a comma use the first element as the poller group
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $poller_group_array = explode ( ',' , $poller_group ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  getpollergroup ( $poller_group_array [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $config [ 'distributed_poller_group' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                //If not use the poller's group from the config
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  getpollergroup ( $config [ 'distributed_poller_group' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                //If all else fails use default
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  '0' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 12:37:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  createHost ( $host ,  $community  =  NULL ,  $snmpver ,  $port  =  161 ,  $transport  =  'udp' ,  $v3  =  array (),  $poller_group = '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $host  =  trim ( strtolower ( $host )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $poller_group = getpollergroup ( $poller_group ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device  =  array ( 'hostname'  =>  $host , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'sysName'  =>  $host , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'community'  =>  $community , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'port'  =>  $port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'transport'  =>  $transport , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'status'  =>  '1' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'snmpver'  =>  $snmpver , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-11 11:38:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        'poller_group'  =>  $poller_group , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'status_reason'  =>  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-09 16:18:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device  =  array_merge ( $device ,  $v3 ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-14 17:26:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device [ 'os' ]  =  getHostOS ( $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 16:12:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'os' ])  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-12 14:10:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $device_id  =  dbInsert ( $device ,  'devices' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-12 14:10:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $device_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return ( $device_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-07 22:39:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  isDomainResolves ( $domain )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  ( gethostbyname ( $domain )  !=  $domain  ||  count ( dns_get_record ( $domain ))  !=  0 ); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  hoststatus ( $id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  dbFetchCell ( " SELECT `status` FROM `devices` WHERE `device_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  match_network ( $nets ,  $ip ,  $first = false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $return  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! is_array  ( $nets ))  $nets  =  array  ( $nets ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $nets  as  $net )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $rev  =  ( preg_match  ( " /^ \ !/ " ,  $net ))  ?  true  :  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $net  =  preg_replace  ( " /^ \ !/ " ,  " " ,  $net ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ip_arr   =  explode ( '/' ,  $net ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $net_long  =  ip2long ( $ip_arr [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $x         =  ip2long ( $ip_arr [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mask     =  long2ip ( $x )  ==  $ip_arr [ 1 ]  ?  $x  :  0xffffffff  <<  ( 32  -  $ip_arr [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ip_long   =  ip2long ( $ip ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $rev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  (( $ip_long  &  $mask )  ==  ( $net_long  &  $mask ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  (( $ip_long  &  $mask )  ==  ( $net_long  &  $mask ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $return  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $first  &&  $return )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 14:10:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  snmp2ipv6 ( $ipv6_snmp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ipv6  =  explode ( '.' , $ipv6_snmp ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ipv6_2  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-21 17:11:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    # Workaround stupid Microsoft bug in Windows 2008 -- this is fixed length!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    # < fenestro> "because whoever implemented this mib for Microsoft was ignorant of RFC 2578 section 7.7 (2)"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( count ( $ipv6 )  ==  17  &&  $ipv6 [ 0 ]  ==  16 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        array_shift ( $ipv6 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-21 17:11:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ; $i  <=  15 ; $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ipv6 [ $i ]  =  zeropad ( dechex ( $ipv6 [ $i ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ; $i  <=  15 ; $i += 2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ipv6_2 []  =  $ipv6 [ $i ]  .  $ipv6 [ $i + 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  implode ( ':' , $ipv6_2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 14:09:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  ipv62snmp ( $ipv6 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ipv6_split  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ipv6_ex  =  explode ( ':' , Net_IPv6 :: uncompress ( $ipv6 )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ; $i  <  8 ; $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ipv6_ex [ $i ]  =  zeropad ( $ipv6_ex [ $i ], 4 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ipv6_ip  =  implode ( '' , $ipv6_ex ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ; $i  <  32 ; $i += 2 )  $ipv6_split []  =  hexdec ( substr ( $ipv6_ip , $i , 2 )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  implode ( '.' , $ipv6_split ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 14:09:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  get_astext ( $asn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config , $cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( isset ( $config [ 'astext' ][ $asn ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $config [ 'astext' ][ $asn ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( isset ( $cache [ 'astext' ][ $asn ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  $cache [ 'astext' ][ $asn ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $result  =  dns_get_record ( " AS $asn .asn.cymru.com " , DNS_TXT ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $txt  =  explode ( '|' , $result [ 0 ][ 'txt' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $result  =  trim ( str_replace ( '"' ,  '' ,  $txt [ 4 ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $cache [ 'astext' ][ $asn ]  =  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-03 20:13:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 16:50:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-07 13:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Use this function to write to the eventlog table
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  log_event ( $text ,  $device  =  NULL ,  $type  =  NULL ,  $reference  =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! is_array ( $device ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device  =  device_by_id_cache ( $device ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-20 21:37:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $insert  =  array ( 'host'  =>  ( $device [ 'device_id' ]  ?  $device [ 'device_id' ]  :  " NULL " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'reference'  =>  ( $reference  ?  $reference  :  " NULL " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'type'  =>  ( $type  ?  $type  :  " NULL " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'datetime'  =>  array ( " NOW() " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'message'  =>  $text ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-12 17:59:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbInsert ( $insert ,  'eventlog' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 17:12:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-17 11:02:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-26 12:11:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Parse string with emails. Return array with email (as key) and name (as value)
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  parse_email ( $emails )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $result  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $regex  =  '/^[\"\']?([^\"\']+)[\"\']?\s{0,}<([^@]+@[^>]+)>$/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( is_string ( $emails ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $emails  =  preg_split ( '/[,;]\s{0,}/' ,  $emails ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $emails  as  $email )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( preg_match ( $regex ,  $email ,  $out ,  PREG_OFFSET_CAPTURE ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $result [ $out [ 2 ][ 0 ]]  =  $out [ 1 ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( strpos ( $email ,  " @ " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $result [ $email ]  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Return FALSE if input not string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $result ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-26 12:11:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-07 22:30:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  send_mail ( $emails , $subject , $message , $html = false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (  is_array ( $emails )  ||  ( $emails  =  parse_email ( $emails ))  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if (  ! class_exists ( " PHPMailer " , false )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            include_once ( $config [ 'install_dir' ]  .  " /includes/phpmailer/class.phpmailer.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail  =  new  PHPMailer (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> Hostname  =  php_uname ( 'n' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( empty ( $config [ 'email_from' ])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $config [ 'email_from' ]  =  '"'  .  $config [ 'project_name' ]  .  '" <'  .  $config [ 'email_user' ]  .  '@' . $mail -> Hostname . '>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( parse_email ( $config [ 'email_from' ])  as  $from  =>  $from_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> setFrom ( $from ,  $from_name ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $emails  as  $email  =>  $email_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> addAddress ( $email ,  $email_name ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> Subject  =  $subject ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> XMailer  =  $config [ 'project_name_version' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> CharSet  =  'utf-8' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> WordWrap  =  76 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mail -> Body  =  $message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if (  $html  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> isHTML ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        switch  ( strtolower ( trim ( $config [ 'email_backend' ])))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'sendmail' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Mailer  =  'sendmail' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Sendmail  =  $config [ 'email_sendmail_path' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'smtp' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> isSMTP (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Host        =  $config [ 'email_smtp_host' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Timeout     =  $config [ 'email_smtp_timeout' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> SMTPAuth    =  $config [ 'email_smtp_auth' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> SMTPSecure  =  $config [ 'email_smtp_secure' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Port        =  $config [ 'email_smtp_port' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Username    =  $config [ 'email_smtp_username' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Password    =  $config [ 'email_smtp_password' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> SMTPDebug   =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mail -> Mailer  =  'mail' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $mail -> send ()  ?  true  :  $mail -> ErrorInfo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-07 22:30:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  formatCiscoHardware ( & $device ,  $short  =  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'os' ]  ==  " ios " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'hardware' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( preg_match ( " /^WS-C([A-Za-z0-9]+).*/ " ,  $device [ 'hardware' ],  $matches ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( ! $short )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $device [ 'hardware' ]  =  " Cisco  "  .  $matches [ 1 ]  .  "  ( "  .  $device [ 'hardware' ]  .  " ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $device [ 'hardware' ]  =  " Cisco  "  .  $matches [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            elseif  ( preg_match ( " /^CISCO([0-9]+) $ / " ,  $device [ 'hardware' ],  $matches ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $device [ 'hardware' ]  =  " Cisco  "  .  $matches [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( preg_match ( " /Cisco IOS Software, C([A-Za-z0-9]+) Software.*/ " ,  $device [ 'sysDescr' ],  $matches ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $device [ 'hardware' ]  =  " Cisco  "  .  $matches [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            elseif  ( preg_match ( " /Cisco IOS Software, ([0-9]+) Software.*/ " ,  $device [ 'sysDescr' ],  $matches ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $device [ 'hardware' ]  =  " Cisco  "  .  $matches [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-21 17:02:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-21 17:02:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-18 16:38:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# from http://ditio.net/2008/11/04/php-string-to-hex-and-hex-to-string-functions/
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  hex2str ( $hex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $string = '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ;  $i  <  strlen ( $hex ) - 1 ;  $i += 2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $string  .=  chr ( hexdec ( $hex [ $i ] . $hex [ $i + 1 ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 18:03:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $string ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-18 16:38:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-05 15:27:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-07 13:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Convert an SNMP hex string to regular string
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  snmp_hexstring ( $hex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  hex2str ( str_replace ( ' ' , '' , str_replace ( ' 00' , '' , $hex ))); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-05 15:27:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-07 13:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Check if the supplied string is an SNMP hex string
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  isHexString ( $str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  preg_match ( " /^[a-f0-9][a-f0-9]( [a-f0-9][a-f0-9])* $ /is " , trim ( $str )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-05 15:27:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-09 22:38:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Include all .inc.php files in $dir
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  include_dir ( $dir ,  $regex  =  " " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $device ,  $config ,  $valid ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-16 10:31:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $regex  ==  " " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $regex  =  " / \ .inc \ .php $ / " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-23 09:54:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $handle  =  opendir ( $config [ 'install_dir' ]  .  '/'  .  $dir ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while  ( false  !==  ( $file  =  readdir ( $handle )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( filetype ( $config [ 'install_dir' ]  .  '/'  .  $dir  .  '/'  .  $file )  ==  'file'  &&  preg_match ( $regex ,  $file ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                d_echo ( " Including:  "  .  $config [ 'install_dir' ]  .  '/'  .  $dir  .  '/'  .  $file  .  " \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-05 16:44:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                include ( $config [ 'install_dir' ]  .  '/'  .  $dir  .  '/'  .  $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-09 22:38:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        closedir ( $handle ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-09 22:38:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  is_port_valid ( $port ,  $device )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( strstr ( $port [ 'ifDescr' ],  " irtual " ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-18 23:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $valid  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $valid  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $if  =  strtolower ( $port [ 'ifDescr' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fringe  =  $config [ 'bad_if' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if (  is_array ( $config [ 'os' ][ $device [ 'os' ]][ 'bad_if' ])  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $fringe  =  array_merge ( $config [ 'bad_if' ], $config [ 'os' ][ $device [ 'os' ]][ 'bad_if' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $fringe  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( strstr ( $if ,  $bi ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $valid  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                d_echo ( " ignored :  $bi  :  $if " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-18 23:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( is_array ( $config [ 'bad_if_regexp' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $fringe  =  $config [ 'bad_if_regexp' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if (  is_array ( $config [ 'os' ][ $device [ 'os' ]][ 'bad_if_regexp' ])  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $fringe  =  array_merge ( $config [ 'bad_if_regexp' ], $config [ 'os' ][ $device [ 'os' ]][ 'bad_if_regexp' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( $fringe  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( preg_match ( $bi  . " i " ,  $if ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $valid  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    d_echo ( " ignored :  $bi  :  " . $if ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( is_array ( $config [ 'bad_iftype' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $fringe  =  $config [ 'bad_iftype' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if (  is_array ( $config [ 'os' ][ $device [ 'os' ]][ 'bad_iftype' ])  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $fringe  =  array_merge ( $config [ 'bad_iftype' ], $config [ 'os' ][ $device [ 'os' ]][ 'bad_iftype' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( $fringe  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( strstr ( $port [ 'ifType' ],  $bi ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $valid  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    d_echo ( " ignored ifType :  " . $port [ 'ifType' ] . "  (matched:  " . $bi . "  ) " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( empty ( $port [ 'ifDescr' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $valid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'os' ]  ==  " catos "  &&  strstr ( $if ,  " vlan " ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $valid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'os' ]  ==  " dlink " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $valid  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-29 12:05:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-18 23:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $valid ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-18 23:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  scan_new_plugins ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 16:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $installed  =  0 ;  // Track how many plugins we install.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( file_exists ( $config [ 'plugin_dir' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $plugin_files  =  scandir ( $config [ 'plugin_dir' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach ( $plugin_files  as  $name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if ( is_dir ( $config [ 'plugin_dir' ] . '/' . $name ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if ( $name  !=  '.'  &&  $name  !=  '..' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if ( is_file ( $config [ 'plugin_dir' ] . '/' . $name . '/' . $name . '.php' )  &&  is_file ( $config [ 'plugin_dir' ] . '/' . $name . '/' . $name . '.inc.php' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $plugin_id  =  dbFetchRow ( " SELECT `plugin_id` FROM `plugins` WHERE `plugin_name` = ' $name ' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if ( empty ( $plugin_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if ( dbInsert ( array ( 'plugin_name'  =>  $name ,  'plugin_active'  =>  '0' ),  'plugins' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                $installed ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-25 12:51:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return (  $installed  ); 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-25 12:51:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  validate_device_id ( $id )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 16:14:42 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( empty ( $id )  ||  ! is_numeric ( $id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $return  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device_id  =  dbFetchCell ( " SELECT `device_id` FROM `devices` WHERE `device_id` = ? " ,  array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if ( $device_id  ==  $id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $return  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $return  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return ( $return ); 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 16:14:42 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-17 21:03:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-07 11:29:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// The original source of this code is from Stackoverflow (www.stackoverflow.com).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// http://stackoverflow.com/questions/6054033/pretty-printing-json-with-php
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Answer provided by stewe (http://stackoverflow.com/users/3202187/ulk200
 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( ! defined ( 'JSON_UNESCAPED_SLASHES' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    define ( 'JSON_UNESCAPED_SLASHES' ,  64 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if  ( ! defined ( 'JSON_PRETTY_PRINT' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    define ( 'JSON_PRETTY_PRINT' ,  128 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if  ( ! defined ( 'JSON_UNESCAPED_UNICODE' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    define ( 'JSON_UNESCAPED_UNICODE' ,  256 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  _json_encode ( $data ,  $options  =  448 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 09:16:07 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( version_compare ( PHP_VERSION ,  '5.4' ,  '>=' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  json_encode ( $data ,  $options ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 09:16:07 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  _json_format ( json_encode ( $data ),  $options ); 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 09:16:07 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  _json_format ( $json ,  $options  =  448 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $prettyPrint  =  ( bool )  ( $options  &  JSON_PRETTY_PRINT ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $unescapeUnicode  =  ( bool )  ( $options  &  JSON_UNESCAPED_UNICODE ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $unescapeSlashes  =  ( bool )  ( $options  &  JSON_UNESCAPED_SLASHES ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! $prettyPrint  &&  ! $unescapeUnicode  &&  ! $unescapeSlashes )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  $json ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $result  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $pos  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $strLen  =  strlen ( $json ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $indentStr  =  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $newLine  =  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $outOfQuotes  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $buffer  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $noescape  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    for  ( $i  =  0 ;  $i  <  $strLen ;  $i ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Grab the next character in the string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $char  =  substr ( $json ,  $i ,  1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Are we inside a quoted string?
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( '"'  ===  $char  &&  $noescape )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $outOfQuotes  =  ! $outOfQuotes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ! $outOfQuotes )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $buffer  .=  $char ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $noescape  =  '\\'  ===  $char  ?  ! $noescape  :  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        elseif  ( ''  !==  $buffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $unescapeSlashes )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $buffer  =  str_replace ( '\\/' ,  '/' ,  $buffer ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $unescapeUnicode  &&  function_exists ( 'mb_convert_encoding' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // http://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $buffer  =  preg_replace_callback ( '/\\\\u([0-9a-f]{4})/i' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    function  ( $match )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        return  mb_convert_encoding ( pack ( 'H*' ,  $match [ 1 ]),  'UTF-8' ,  'UCS-2BE' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    },  $buffer ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $result  .=  $buffer  .  $char ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $buffer  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        elseif ( false  !==  strpos ( "   \t \r \n " ,  $char ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ':'  ===  $char )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Add a space after the : character
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $char  .=  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        elseif  (( '}'  ===  $char  ||  ']'  ===  $char ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $pos -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $prevChar  =  substr ( $json ,  $i  -  1 ,  1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( '{'  !==  $prevChar  &&  '['  !==  $prevChar )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // If this character is the end of an element,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // output a new line and indent the next line
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $result  .=  $newLine ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                for  ( $j  =  0 ;  $j  <  $pos ;  $j ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $result  .=  $indentStr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Collapse empty {} and []
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $result  =  rtrim ( $result )  .  " \n \n "  .  $indentStr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $result  .=  $char ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // If the last character was the beginning of an element,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // output a new line and indent the next line
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ','  ===  $char  ||  '{'  ===  $char  ||  '['  ===  $char )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $result  .=  $newLine ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( '{'  ===  $char  ||  '['  ===  $char )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $pos ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            for  ( $j  =  0 ;  $j  <  $pos ;  $j ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $result  .=  $indentStr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // If buffer not empty after formating we have an unclosed quote
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( strlen ( $buffer )  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 20:17:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        //json is incorrectly formatted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $result  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-30 17:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  convert_delay ( $delay )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $delay  =  preg_replace ( '/\s/' , '' , $delay ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( strstr ( $delay ,  'm' , TRUE ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $delay_sec  =  $delay  *  60 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif ( strstr ( $delay ,  'h' , TRUE ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-30 17:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $delay_sec  =  $delay  *  3600 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif ( strstr ( $delay ,  'd' , TRUE ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-30 17:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $delay_sec  =  $delay  *  86400 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif ( is_numeric ( $delay ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-30 17:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $delay_sec  =  $delay ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-26 01:25:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $delay_sec  =  300 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-30 17:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return ( $delay_sec ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-10 17:00:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  guidv4 ( $data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // http://stackoverflow.com/questions/2040240/php-function-to-generate-v4-uuid#15875555
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // From: Jack http://stackoverflow.com/users/1338292/ja%CD%A2ck
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    assert ( strlen ( $data )  ==  16 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $data [ 6 ]  =  chr ( ord ( $data [ 6 ])  &  0x0f  |  0x40 );  // set version to 0100
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $data [ 8 ]  =  chr ( ord ( $data [ 8 ])  &  0x3f  |  0x80 );  // set bits 6-7 to 10
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  vsprintf ( '%s%s-%s-%s-%s-%s%s%s' ,  str_split ( bin2hex ( $data ),  4 )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  set_curl_proxy ( $post )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 19:51:16 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( isset ( $_ENV [ 'https_proxy' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $tmp  =  rtrim ( $_ENV [ 'https_proxy' ],  " / " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $proxystr  =  str_replace ( array ( " http:// " ,  " https:// " ),  " " ,  $tmp ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $config [ 'callback_proxy' ]  =  $proxystr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  " Setting proxy to  " . $proxystr . "  (from https_proxy= " . $_ENV [ 'https_proxy' ] . " ) \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 19:51:16 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( isset ( $config [ 'callback_proxy' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo  " Using  " . $config [ 'callback_proxy' ] . "  as proxy \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        curl_setopt ( $post ,  CURLOPT_PROXY ,  $config [ 'callback_proxy' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 19:51:16 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-19 20:23:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  target_to_id ( $target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (  $target [ 0 ] . $target [ 1 ]  ==  " g: "  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $target  =  " g " . dbFetchCell ( 'SELECT id FROM device_groups WHERE name = ?' , array ( substr ( $target , 2 ))); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-19 20:23:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $target  =  dbFetchCell ( 'SELECT device_id FROM devices WHERE hostname = ?' , array ( $target )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  id_to_target ( $id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (  $id [ 0 ]  ==  " g "  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $id  =  'g:' . dbFetchCell ( " SELECT name FROM device_groups WHERE id = ? " , array ( substr ( $id , 1 ))); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-19 20:23:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $id  =  dbFetchCell ( " SELECT hostname FROM devices WHERE device_id = ? " , array ( $id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-26 23:58:29 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  first_oid_match ( $device ,  $list )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $list  as  $item )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $tmp  =  trim ( snmp_get ( $device ,  $item ,  " -Ovq " ),  '" ' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! empty ( $tmp ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  $tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-26 23:58:29 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-02 17:36:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-03 15:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  hex_to_ip ( $hex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $return  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( filter_var ( $hex ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV4 )  ===  FALSE  &&  filter_var ( $hex ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV6 )  ===  FALSE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $hex_exp  =  explode ( ' ' ,  $hex ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $hex_exp  as  $item )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $item )  &&  $item  !=  " \" " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $return  .=  hexdec ( $item ) . '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $return  =  substr ( $return ,  0 ,  - 1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-09 15:19:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $return  =  $hex ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-03 15:41:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-02 17:36:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  fix_integer_value ( $value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $value  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $return  =  4294967296 + $value ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-02 17:36:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $return  =  $value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  ip_exists ( $ip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Function to check if an IP exists in the DB already
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV6 )  !==  FALSE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! dbFetchRow ( " SELECT `ipv6_address_id` FROM `ipv6_addresses` WHERE `ipv6_address` = ? OR `ipv6_compressed` = ? " ,  array ( $ip , $ip )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-12 16:24:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elseif  ( filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV4 )  !==  FALSE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ! dbFetchRow ( " SELECT `ipv4_address_id` FROM `ipv4_addresses` WHERE `ipv4_address` = ? " ,  array ( $ip )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-12 16:24:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-12 16:24:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-12 16:24:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-11 19:34:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 02:25:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  fping ( $host , $params , $address_family  =  AF_INET )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:02:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $descriptorspec  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        0  =>  array ( " pipe " ,  " r " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        1  =>  array ( " pipe " ,  " w " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        2  =>  array ( " pipe " ,  " w " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 02:25:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // Default to AF_INET (IPv4)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fping_path  =  $config [ 'fping' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $address_family  ==  AF_INET6 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fping_path  =  $config [ 'fping6' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $process  =  proc_open ( $fping_path  .  ' -e -q '  . $params  .  ' '  . $host . ' 2>&1' ,  $descriptorspec ,  $pipes ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:02:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $read  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:02:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_resource ( $process ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        fclose ( $pipes [ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        while  ( ! feof ( $pipes [ 1 ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $read  .=  fgets ( $pipes [ 1 ],  1024 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fclose ( $pipes [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        proc_close ( $process ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 23:02:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    preg_match ( '/[0-9]+\/[0-9]+\/[0-9]+%/' ,  $read ,  $loss_tmp ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    preg_match ( '/[0-9\.]+\/[0-9\.]+\/[0-9\.]*$/' ,  $read ,  $latency ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $loss  =  preg_replace ( " /%/ " , " " , $loss_tmp [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    list ( $xmt , $rcv , $loss )  =  preg_split ( " / \ // " ,  $loss ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-23 09:48:36 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    list ( $min , $avg , $max )  =  preg_split ( " / \ // " ,  $latency [ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 21:55:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $loss  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $xmt  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $rcv  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $loss  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $response  =  array ( 'xmt' => $xmt , 'rcv' => $rcv , 'loss' => $loss , 'min' => $min , 'max' => $max , 'avg' => $avg ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 15:10:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  function_check ( $function )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  function_exists ( $function ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-25 08:40:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  get_last_commit ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  `git log -n 1|head -n1` ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-22 02:25:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} //end get_last_commit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  snmpTransportToAddressFamily ( $transport )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! isset ( $transport ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $transport  =  'udp' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $transport  ==  'udp6'  ||  $transport  ==  'tcp6' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  AF_INET6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  AF_INET ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}