2010-02-15 01:26:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-11 17:08:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-08 14:12:23 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  LibreNMS  Network  Management  and  Monitoring  System 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  Copyright  ( C )  2006 - 2011 ,  Observium  Developers  -  http :// www . observium . org 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  it  under  the  terms  of  the  GNU  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  the  Free  Software  Foundation ,  either  version  3  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  See  COPYING  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-21 08:07:14 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								use  LibreNMS\Exceptions\HostExistsException ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_new_device ( $hostname ,  $device  =  '' ,  $method  =  '' ,  $interface  =  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! empty ( $config [ 'mydomain' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $full_host  =  rtrim ( $hostname ,  '.' )  .  '.'  .  $config [ 'mydomain' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( isDomainResolves ( $full_host ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $hostname  =  $full_host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " discovering  $hostname\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ip  =  gethostbyname ( $hostname ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV4 )  ===  false  &&  filter_var ( $ip ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV6 )  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-07 19:43:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // $ip isn't a valid IP so it must be a name.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $ip  ==  $hostname )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            d_echo ( " name lookup of  $hostname  failed \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            log_event ( " $method  discovery of  "  .  $hostname   .  "  failed - Check name lookup " ,  $device [ 'device_id' ],  'discovery' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 16:28:54 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-07 19:43:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  elseif  ( filter_var ( $hostname ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV4 )  ===  true  ||  filter_var ( $hostname ,  FILTER_VALIDATE_IP ,  FILTER_FLAG_IPV6 )  ===  true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-18 14:48:54 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // gethostbyname returned a valid $ip, was $dst_host an IP?
 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $config [ 'discovery_by_ip' ]  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( 'Discovery by IP disabled, skipping '  .  $hostname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            log_event ( " $method  discovery of  "  .  $hostname  .  "  failed - Discovery by IP disabled " ,  $device [ 'device_id' ],  'discovery' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-30 16:28:54 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " ip lookup result:  $ip\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-28 15:55:57 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $hostname  =  rtrim ( $hostname ,  '.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // remove trailing dot
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( match_network ( $config [ 'autodiscovery' ][ 'nets-exclude' ],  $ip ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( " $ip  in an excluded network - skipping \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( match_network ( $config [ 'nets' ],  $ip ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-07 12:16:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        try  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $remote_device_id  =  addHost ( $hostname ,  '' ,  '161' ,  'udp' ,  $config [ 'distributed_poller_group' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $remote_device  =  device_by_id_cache ( $remote_device_id ,  1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '+['  .  $remote_device [ 'hostname' ]  .  '('  .  $remote_device [ 'device_id' ]  .  ')]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            discover_device ( $remote_device ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            device_by_id_cache ( $remote_device_id ,  1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $remote_device_id  &&  is_array ( $device )  &&  ! empty ( $method ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $extra_log  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $int  =  ifNameDescr ( $interface ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( is_array ( $int ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $extra_log  =  ' (port '  .  $int [ 'label' ]  .  ') ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-02 18:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                log_event ( 'Device '  .  $remote_device [ 'hostname' ]  .  "  ( $ip )  $extra_log  autodiscovered through  $method  on  "  .  $device [ 'hostname' ],  $remote_device_id ,  'discovery' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 20:34:10 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                log_event ( " $method  discovery of  "  .  $remote_device [ 'hostname' ]  .  "  ( $ip ) failed - Check ping and SNMP access " ,  $device [ 'device_id' ],  'discovery' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  $remote_device_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-07 12:16:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  catch  ( HostExistsException  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // already have this device
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  catch  ( Exception  $e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-24 15:56:51 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( " $method  discovery of  "  .  $hostname  .  "  ( $ip ) failed -  "  .  $e -> getMessage ()); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( " $ip  not in a matched network - skipping \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_new_device()
 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_device ( $device ,  $options  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ,  $valid ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $valid  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Reset $valid array
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $attribs  =  get_dev_attribs ( $device [ 'device_id' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-22 09:49:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device [ 'attribs' ]  =  $attribs ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-30 15:11:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device [ 'snmp_max_repeaters' ]  =  $attribs [ 'snmp_max_repeaters' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 13:33:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device_start  =  microtime ( true ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // Start counting device poll time
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo  $device [ 'hostname' ]  .  ' '  .  $device [ 'device_id' ]  .  ' '  .  $device [ 'os' ]  .  ' ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'os' ]  ==  'generic' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // verify if OS has changed from generic
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $device [ 'os' ]  =  getHostOS ( $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-23 17:53:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $device [ 'os' ]  !=  'generic' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  " \n Device os was updated to  "  .  $device [ 'os' ]  .  '!' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            dbUpdate ( array ( 'os'  =>  $device [ 'os' ]),  'devices' ,  '`device_id` = ?' ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-06 21:04:23 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-09 02:16:09 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    load_os ( $device ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-03 17:12:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_array ( $config [ 'os' ][ $device [ 'os' ]][ 'register_mibs' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        register_mibs ( $device ,  $config [ 'os' ][ $device [ 'os' ]][ 'register_mibs' ],  'includes/discovery/os/'  .  $device [ 'os' ]  .  '.inc.php' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-23 17:53:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo  " \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // If we've specified modules, use them, else walk the modules array
 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-11 12:28:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $force_module  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $options [ 'm' ])  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $config [ 'discovery_modules' ]  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        foreach  ( explode ( ',' ,  $options [ 'm' ])  as  $module )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( is_file ( " includes/discovery/ $module .inc.php " ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $config [ 'discovery_modules' ][ $module ]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-11 12:28:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $force_module  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $config [ 'discovery_modules' ]  as  $module  =>  $module_status )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-13 20:46:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $os_module_status  =  $config [ 'os' ][ $device [ 'os' ]][ 'discovery_modules' ][ $module ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d_echo ( " Modules status: Global "  .  ( isset ( $module_status )  ?  ( $module_status  ?  '+ '  :  '- ' )  :  '  ' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d_echo ( " OS "  .  ( isset ( $os_module_status )  ?  ( $os_module_status  ?  '+ '  :  '- ' )  :  '  ' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d_echo ( " Device "  .  ( isset ( $attribs [ 'discover_'  .  $module ])  ?  ( $attribs [ 'discover_'  .  $module ]  ?  '+ '  :  '- ' )  :  '  ' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $force_module  ===  true  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $attribs [ 'discover_'  .  $module ]  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ( $os_module_status  &&  ! isset ( $attribs [ 'discover_'  .  $module ]))  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ( $module_status  &&  ! isset ( $os_module_status )  &&  ! isset ( $attribs [ 'discover_'  .  $module ])))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $module_start  =  microtime ( true ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-13 20:46:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  " \n #### Load disco module  $module  #### \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            include  " includes/discovery/ $module .inc.php " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $module_time  =  microtime ( true )  -  $module_start ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $module_time  =  substr ( $module_time ,  0 ,  5 ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-23 00:57:19 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            printf ( " \n >> Runtime for discovery module '%s': %.4f seconds \n " ,  $module ,  $module_time ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  " #### Unload disco module  $module  #### \n \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  elseif  ( isset ( $attribs [ 'discover_'  .  $module ])  &&  $attribs [ 'discover_'  .  $module ]  ==  '0' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  " Module [  $module  ] disabled on host. \n \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-13 20:46:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  elseif  ( isset ( $os_module_status )  &&  $os_module_status  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  " Module [  $module  ] disabled on os. \n \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-24 15:32:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  " Module [  $module  ] disabled globally. \n \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 22:09:17 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_mib_poller_enabled ( $device ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $devicemib  =  array ( $device [ 'sysObjectID' ]  =>  'all' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        register_mibs ( $device ,  $devicemib ,  " includes/discovery/functions.inc.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device_end  =  microtime ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device_run  =  ( $device_end  -  $device_start ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $device_time  =  substr ( $device_run ,  0 ,  5 ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-11 16:36:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbUpdate ( array ( 'last_discovered'  =>  array ( 'NOW()' ),  'last_discovered_timetaken'  =>  $device_time ),  'devices' ,  '`device_id` = ?' ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 15:03:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo  " Discovered in  $device_time  seconds \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $discovered_devices ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    echo  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $discovered_devices ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_device()
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Discover sensors
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 12:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-17 19:21:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_sensor ( & $valid ,  $class ,  $device ,  $oid ,  $index ,  $type ,  $descr ,  $divisor  =  '1' ,  $multiplier  =  '1' ,  $low_limit  =  null ,  $low_warn_limit  =  null ,  $warn_limit  =  null ,  $high_limit  =  null ,  $current  =  null ,  $poller_type  =  'snmp' ,  $entPhysicalIndex  =  null ,  $entPhysicalIndex_measured  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 12:47:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-18 08:48:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $low_limit       =  set_null ( $low_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $low_warn_limit  =  set_null ( $low_warn_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $warn_limit      =  set_null ( $warn_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $high_limit      =  set_null ( $high_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 12:47:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! is_numeric ( $divisor ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $divisor   =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover sensor:  $oid ,  $index ,  $type ,  $descr ,  $poller_type ,  $precision ,  $entPhysicalIndex\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-11 17:08:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_null ( $low_warn_limit )  &&  ! is_null ( $warn_limit ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Warn limits only make sense when we have both a high and a low limit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $low_warn_limit  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $warn_limit  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  elseif  ( $low_warn_limit  >  $warn_limit )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Fix high/low thresholds (i.e. on negative numbers)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        list ( $warn_limit ,  $low_warn_limit )  =  array ( $low_warn_limit ,  $warn_limit ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 12:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( 'SELECT COUNT(sensor_id) FROM `sensors` WHERE `poller_type`= ? AND `sensor_class` = ? AND `device_id` = ? AND sensor_type = ? AND `sensor_index` = ?' ,  array ( $poller_type ,  $class ,  $device [ 'device_id' ],  $type ,  $index ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! $high_limit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $high_limit  =  sensor_limit ( $class ,  $current ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-11 12:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ! $low_limit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $low_limit  =  sensor_low_limit ( $class ,  $current ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 12:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $low_limit  >  $high_limit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // Fix high/low thresholds (i.e. on negative numbers)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            list ( $high_limit ,  $low_limit )  =  array ( $low_limit ,  $high_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 12:57:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $insert  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            'poller_type'  =>  $poller_type , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_class'  =>  $class , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'device_id'  =>  $device [ 'device_id' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_oid'  =>  $oid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_index'  =>  $index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_type'  =>  $type , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_divisor'  =>  $divisor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_multiplier'  =>  $multiplier , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_limit'  =>  $high_limit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_limit_warn'  =>  $warn_limit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_limit_low'  =>  $low_limit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_limit_low_warn'  =>  $low_warn_limit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'sensor_current'  =>  $current , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'entPhysicalIndex'  =>  $entPhysicalIndex , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            'entPhysicalIndex_measured'  =>  $entPhysicalIndex_measured , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $insert  as  $key  =>  $val_check )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! isset ( $val_check ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                unset ( $insert [ $key ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $inserted  =  dbInsert ( $insert ,  'sensors' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( " (  $inserted  inserted ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        log_event ( 'Sensor Added: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr ),  $device ,  'sensor' ,  $inserted ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sensor_entry  =  dbFetchRow ( 'SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `device_id` = ? AND `sensor_type` = ? AND `sensor_index` = ?' ,  array ( $class ,  $device [ 'device_id' ],  $type ,  $index )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! isset ( $high_limit ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! $sensor_entry [ 'sensor_limit' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Calculate a reasonable limit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $high_limit  =  sensor_limit ( $class ,  $current ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Use existing limit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $high_limit  =  $sensor_entry [ 'sensor_limit' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-28 22:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ! isset ( $low_limit ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! $sensor_entry [ 'sensor_limit_low' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Calculate a reasonable limit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $low_limit  =  sensor_low_limit ( $class ,  $current ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Use existing limit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $low_limit  =  $sensor_entry [ 'sensor_limit_low' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Fix high/low thresholds (i.e. on negative numbers)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $low_limit  >  $high_limit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            list ( $high_limit ,  $low_limit )  =  array ( $low_limit ,  $high_limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $high_limit  !=  $sensor_entry [ 'sensor_limit' ]  &&  $sensor_entry [ 'sensor_custom' ]  ==  'No' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update  =  array ( 'sensor_limit'  =>  ( $high_limit  ==  null  ?  array ( 'NULL' )  :  $high_limit )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update ,  'sensors' ,  '`sensor_id` = ?' ,  array ( $sensor_entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'H' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Sensor High Limit Updated: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr )  .  ' ('  .  $high_limit  .  ')' ,  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $sensor_entry [ 'sensor_limit_low' ]  !=  $low_limit  &&  $sensor_entry [ 'sensor_custom' ]  ==  'No' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update  =  array ( 'sensor_limit_low'  =>  ( $low_limit  ==  null  ?  array ( 'NULL' )  :  $low_limit )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update ,  'sensors' ,  '`sensor_id` = ?' ,  array ( $sensor_entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'L' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Sensor Low Limit Updated: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr )  .  ' ('  .  $low_limit  .  ')' ,  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $warn_limit  !=  $sensor_entry [ 'sensor_limit_warn' ]  &&  $sensor_entry [ 'sensor_custom' ]  ==  'No' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update  =  array ( 'sensor_limit_warn'  =>  ( $warn_limit  ==  null  ?  array ( 'NULL' )  :  $warn_limit )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update ,  'sensors' ,  '`sensor_id` = ?' ,  array ( $sensor_entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'WH' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Sensor Warn High Limit Updated: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr )  .  ' ('  .  $warn_limit  .  ')' ,  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $sensor_entry [ 'sensor_limit_low_warn' ]  !=  $low_warn_limit  &&  $sensor_entry [ 'sensor_custom' ]  ==  'No' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update  =  array ( 'sensor_limit_low_warn'  =>  ( $low_warn_limit  ==  null  ?  array ( 'NULL' )  :  $low_warn_limit )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update ,  'sensors' ,  '`sensor_id` = ?' ,  array ( $sensor_entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'WL' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Sensor Warn Low Limit Updated: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr )  .  ' ('  .  $low_warn_limit  .  ')' ,  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $oid  ==  $sensor_entry [ 'sensor_oid' ]  &&  $descr  ==  $sensor_entry [ 'sensor_descr' ]  &&  $multiplier  ==  $sensor_entry [ 'sensor_multiplier' ]  &&  $divisor  ==  $sensor_entry [ 'sensor_divisor' ]  &&  $entPhysicalIndex_measured  ==  $sensor_entry [ 'entPhysicalIndex_measured' ]  &&  $entPhysicalIndex  ==  $sensor_entry [ 'entPhysicalIndex' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $update  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'sensor_oid'  =>  $oid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'sensor_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'sensor_multiplier'  =>  $multiplier , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'sensor_divisor'  =>  $divisor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'entPhysicalIndex'  =>  $entPhysicalIndex , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'entPhysicalIndex_measured'  =>  $entPhysicalIndex_measured , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update ,  'sensors' ,  '`sensor_id` = ?' ,  array ( $sensor_entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'U' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Sensor Updated: '  .  mres ( $class )  .  ' '  .  mres ( $type )  .  ' '  .  mres ( $index )  .  ' '  .  mres ( $descr ),  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $valid [ $class ][ $type ][ $index ]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_sensor()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  sensor_low_limit ( $class ,  $current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $limit  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    switch  ( $class )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'temperature' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  0.7 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'voltage' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $current  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $limit  =  ( $current  *  ( 1  +  ( sgn ( $current )  *  0.15 ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $limit  =  ( $current  *  ( 1  -  ( sgn ( $current )  *  0.15 ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'humidity' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  '70' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'frequency' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  0.95 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'current' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'fanspeed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  0.80 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'power' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-22 10:37:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'signal' : 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-06 08:20:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $limit  =  - 80 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-22 10:37:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } //end switch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $limit ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end sensor_low_limit()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  sensor_limit ( $class ,  $current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $limit  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    switch  ( $class )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'temperature' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  1.60 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'voltage' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $current  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $limit  =  ( $current  *  ( 1  -  ( sgn ( $current )  *  0.15 ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $limit  =  ( $current  *  ( 1  +  ( sgn ( $current )  *  0.15 ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'humidity' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  '70' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'frequency' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  1.05 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'current' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  1.50 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'fanspeed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  1.80 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'power' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  ( $current  *  1.50 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-22 10:37:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'signal' : 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-06 08:20:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $limit  =  - 30 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-22 10:37:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-13 19:03:46 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'load' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $limit  =  80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } //end switch
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-17 19:21:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $limit ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-17 19:21:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end sensor_limit()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  check_valid_sensors ( $device ,  $class ,  $valid ,  $poller_type  =  'snmp' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $entries  =  dbFetchRows ( 'SELECT * FROM sensors AS S, devices AS D WHERE S.sensor_class=? AND S.device_id = D.device_id AND D.device_id = ? AND S.poller_type = ?' ,  array ( $class ,  $device [ 'device_id' ],  $poller_type )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( count ( $entries ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $entries  as  $entry )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $index  =  $entry [ 'sensor_index' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $type  =  $entry [ 'sensor_type' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-12 23:27:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $class  =  $entry [ 'sensor_class' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( $index  .  ' -> '  .  $type  .  " \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! $valid [ $class ][ $type ][ $index ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                echo  '-' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-12 23:27:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( $class  ==  'state' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    dbDelete ( 'sensors_to_state_indexes' ,  '`sensor_id` =  ?' ,  array ( $entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                dbDelete ( 'sensors' ,  '`sensor_id` =  ?' ,  array ( $entry [ 'sensor_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                log_event ( 'Sensor Deleted: '  .  $entry [ 'sensor_class' ]  .  ' '  .  $entry [ 'sensor_type' ]  .  ' '  .  $entry [ 'sensor_index' ]  .  ' '  .  $entry [ 'sensor_descr' ],  $device ,  'sensor' ,  $sensor_id ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            unset ( $oid ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            unset ( $type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 19:09:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end check_valid_sensors()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_juniAtmVp ( & $valid ,  $port_id ,  $vp_id ,  $vp_descr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover Juniper ATM VP:  $port_id ,  $vp_id ,  $vp_descr\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `juniAtmVp` WHERE `port_id` = ? AND `vp_id` = ?' ,  array ( $port_id ,  $vp_id ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $inserted  =  dbInsert ( array ( 'port_id'  =>  $port_id ,  'vp_id'  =>  $vp_id ,  'vp_descr'  =>  $vp_descr ),  'juniAtmVp' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( " (  $inserted  inserted ) \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // FIXME vv no $device!
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        log_event ( 'Juniper ATM VP Added: port '  .  mres ( $port_id )  .  ' vp '  .  mres ( $vp_id )  .  ' descr'  .  mres ( $vp_descr ),  'juniAtmVp' ,  $inserted ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 19:09:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $valid [ $port_id ][ $vp_id ]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_juniAtmVp()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_link ( $local_port_id ,  $protocol ,  $remote_port_id ,  $remote_hostname ,  $remote_port ,  $remote_platform ,  $remote_version ,  $local_device_id ,  $remote_device_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $link_exists ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover link:  $local_port_id ,  $protocol ,  $remote_port_id ,  $remote_hostname ,  $remote_port ,  $remote_platform ,  $remote_version\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        'SELECT COUNT(*) FROM `links` WHERE `remote_hostname` = ? AND `local_port_id` = ? AND `protocol` = ? AND `remote_port` = ?' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $remote_hostname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $local_port_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $protocol , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $remote_port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    )  ==  '0' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $insert_data  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            'local_port_id'  =>  $local_port_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'local_device_id'  =>  $local_device_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'protocol'  =>  $protocol , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'remote_hostname'  =>  $remote_hostname , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            'remote_device_id'  =>  $remote_device_id , 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            'remote_port'  =>  $remote_port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'remote_platform'  =>  $remote_platform , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'remote_version'  =>  $remote_version , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! empty ( $remote_port_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $insert_data [ 'remote_port_id' ]  =  $remote_port_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $inserted  =  dbInsert ( $insert_data ,  'links' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( " (  $inserted  inserted ) " ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $data  =  dbFetchRow ( 'SELECT * FROM `links` WHERE `remote_hostname` = ? AND `local_port_id` = ? AND `protocol` = ? AND `remote_port` = ?' ,  array ( $remote_hostname ,  $local_port_id ,  $protocol ,  $remote_port )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $data [ 'remote_port_id' ]  ==  $remote_port_id  &&  $data [ 'remote_platform' ]  ==  $remote_platform  &&  $remote_version  ==  $remote_version  &&  $data [ 'local_device_id' ]  >  0  &&  $data [ 'remote_device_id' ]  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update_data  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'remote_platform'  =>  $remote_platform , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'remote_version'  =>  $remote_version , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'local_device_id'  =>  $local_device_id , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'remote_device_id'  =>  $remote_device_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $remote_port_id ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $update_data [ 'remote_port_id' ]  =  $remote_port_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( $update_data ,  'links' ,  '`id` = ?' ,  array ( $data [ 'id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'U' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-20 15:59:43 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            d_echo ( " (  $updated  updated ) " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $link_exists [ $local_port_id ][ $remote_hostname ][ $remote_port ]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_link()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_storage ( & $valid ,  $device ,  $index ,  $type ,  $mib ,  $descr ,  $size ,  $units ,  $used  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover Storage:  $index ,  $type ,  $mib ,  $descr ,  $size ,  $units ,  $used\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $descr  &&  $size  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $storage  =  dbFetchRow ( 'SELECT * FROM `storage` WHERE `storage_index` = ? AND `device_id` = ? AND `storage_mib` = ?' ,  array ( $index ,  $device [ 'device_id' ],  $mib )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $storage  ===  false  ||  ! count ( $storage ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $insert  =  dbInsert ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    'device_id'  =>  $device [ 'device_id' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_index'  =>  $index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_mib'  =>  $mib , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_type'  =>  $type , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_units'  =>  $units , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_size'  =>  $size , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'storage_used'  =>  $used , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                ), 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'storage' 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $updated  =  dbUpdate ( array ( 'storage_descr'  =>  $descr ,  'storage_type'  =>  $type ,  'storage_units'  =>  $units ,  'storage_size'  =>  $size ),  'storage' ,  '`device_id` = ? AND `storage_index` = ? AND `storage_mib` = ?' ,  array ( $device [ 'device_id' ],  $index ,  $mib )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $updated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                echo  'U' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                echo  '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $valid [ $mib ][ $index ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_storage()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_processor ( & $valid ,  $device ,  $oid ,  $index ,  $type ,  $descr ,  $precision  =  '1' ,  $current  =  null ,  $entPhysicalIndex  =  null ,  $hrDeviceIndex  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover Processor:  $oid ,  $index ,  $type ,  $descr ,  $precision ,  $current ,  $entPhysicalIndex ,  $hrDeviceIndex\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $descr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $descr  =  trim ( str_replace ( '"' ,  '' ,  $descr )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( dbFetchCell ( 'SELECT COUNT(processor_id) FROM `processors` WHERE `processor_index` = ? AND `device_id` = ? AND `processor_type` = ?' ,  array ( $index ,  $device [ 'device_id' ],  $type ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $insert_data  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'device_id'  =>  $device [ 'device_id' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_index'  =>  $index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_oid'  =>  $oid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_usage'  =>  $current , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_type'  =>  $type , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'processor_precision'  =>  $precision , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $hrDeviceIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $insert_data [ 'hrDeviceIndex' ]  =  $hrDeviceIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $entPhysicalIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $insert_data [ 'entPhysicalIndex' ]  =  $entPhysicalIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $inserted  =  dbInsert ( $insert_data ,  'processors' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Processor added: type '  .  mres ( $type )  .  ' index '  .  mres ( $index )  .  ' descr '  .  mres ( $descr ),  $device ,  'processor' ,  $inserted ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $update_data  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'processor_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_oid'  =>  $oid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'processor_usage'  =>  $current , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'processor_precision'  =>  $precision , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbUpdate ( $update_data ,  'processors' ,  '`device_id`=? AND `processor_index`=? AND `processor_type`=?' ,  array ( $device [ 'device_id' ],  $index ,  $type )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $valid [ $type ][ $index ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_processor()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_mempool ( & $valid ,  $device ,  $index ,  $type ,  $descr ,  $precision  =  '1' ,  $entPhysicalIndex  =  null ,  $hrDeviceIndex  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover Mempool:  $index ,  $type ,  $descr ,  $precision ,  $entPhysicalIndex ,  $hrDeviceIndex\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // FIXME implement the mempool_perc, mempool_used, etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $descr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( dbFetchCell ( 'SELECT COUNT(mempool_id) FROM `mempools` WHERE `mempool_index` = ? AND `device_id` = ? AND `mempool_type` = ?' ,  array ( $index ,  $device [ 'device_id' ],  $type ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $insert_data  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'device_id'  =>  $device [ 'device_id' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_index'  =>  $index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_type'  =>  $type , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'mempool_precision'  =>  $precision , 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                'mempool_perc'  =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_used'  =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_free'  =>  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_total'  =>  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $entPhysicalIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $insert_data [ 'entPhysicalIndex' ]  =  $entPhysicalIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $hrDeviceIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $insert_data [ 'hrDeviceIndex' ]  =  $hrDeviceIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $inserted  =  dbInsert ( $insert_data ,  'mempools' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            log_event ( 'Memory pool added: type '  .  mres ( $type )  .  ' index '  .  mres ( $index )  .  ' descr '  .  mres ( $descr ),  $device ,  'mempool' ,  $inserted ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-04 18:34:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $update_data  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'mempool_descr'  =>  $descr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $entPhysicalIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $update_data [ 'entPhysicalIndex' ]  =  $entPhysicalIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! empty ( $hrDeviceIndex ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $update_data [ 'hrDeviceIndex' ]  =  $hrDeviceIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbUpdate ( $update_data ,  'mempools' ,  'device_id=? AND mempool_index=? AND mempool_type=?' ,  array ( $device [ 'device_id' ],  $index ,  $type )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $valid [ $type ][ $index ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_mempool()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_toner ( & $valid ,  $device ,  $oid ,  $index ,  $type ,  $descr ,  $capacity_oid  =  null ,  $capacity  =  null ,  $current  =  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( " Discover Toner:  $oid ,  $index ,  $type ,  $descr ,  $capacity_oid ,  $capacity ,  $current\n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 15:30:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( 'SELECT COUNT(toner_id) FROM `toner` WHERE device_id = ? AND toner_type = ? AND `toner_index` = ? AND `toner_oid` =?' ,  array ( $device [ 'device_id' ],  $type ,  $index ,  $oid ))  ==  '0' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $inserted  =  dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'toner_oid'  =>  $oid ,  'toner_capacity_oid'  =>  $capacity_oid ,  'toner_index'  =>  $index ,  'toner_type'  =>  $type ,  'toner_descr'  =>  $descr ,  'toner_capacity'  =>  $capacity ,  'toner_current'  =>  $current ),  'toner' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        log_event ( 'Toner added: type '  .  mres ( $type )  .  ' index '  .  mres ( $index )  .  ' descr '  .  mres ( $descr ),  $device ,  'toner' ,  $inserted ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $toner_entry  =  dbFetchRow ( 'SELECT * FROM `toner` WHERE `device_id` = ? AND `toner_type` = ? AND `toner_index` =?' ,  array ( $device [ 'device_id' ],  $type ,  $index )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $oid  ==  $toner_entry [ 'toner_oid' ]  &&  $descr  ==  $toner_entry [ 'toner_descr' ]  &&  $capacity  ==  $toner_entry [ 'toner_capacity' ]  &&  $capacity_oid  ==  $toner_entry [ 'toner_capacity_oid' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            dbUpdate ( array ( 'toner_descr'  =>  $descr ,  'toner_oid'  =>  $oid ,  'toner_capacity_oid'  =>  $capacity_oid ,  'toner_capacity'  =>  $capacity ),  'toner' ,  'device_id=? AND toner_type=? AND `toner_index`=?' ,  array ( $device [ 'device_id' ],  $type ,  $index )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  'U' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-11 19:09:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 15:30:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $valid [ $type ][ $oid ]  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-04 10:45:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//end discover_toner()
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  discover_process_ipv6 ( & $valid ,  $ifIndex ,  $ipv6_address ,  $ipv6_prefixlen ,  $ipv6_origin ,  $context_name  =  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 14:18:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $device ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ipv6_network  =  Net_IPv6 :: getNetmask ( " $ipv6_address / $ipv6_prefixlen " )  .  '/'  .  $ipv6_prefixlen ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ipv6_compressed  =  Net_IPv6 :: compress ( $ipv6_address ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( Net_IPv6 :: getAddressType ( $ipv6_address )  ==  NET_IPV6_LOCAL_LINK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // ignore link-locals (coming from IPV6-MIB)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-04 10:45:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ports` WHERE device_id = ? AND `ifIndex` = ?' ,  array ( $device [ 'device_id' ],  $ifIndex ))  !=  '0'  &&  $ipv6_prefixlen  >  '0'  &&  $ipv6_prefixlen  <  '129'  &&  $ipv6_compressed  !=  '::1' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $port_id  =  dbFetchCell ( 'SELECT port_id FROM `ports` WHERE device_id = ? AND ifIndex = ?' ,  array ( $device [ 'device_id' ],  $ifIndex )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ipv6_networks` WHERE `ipv6_network` = ?' ,  array ( $ipv6_network ))  <  '1' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            dbInsert ( array ( 'ipv6_network'  =>  $ipv6_network ,  'context_name'  =>  $context_name ),  'ipv6_networks' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  'N' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            //Update Context
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-07 17:32:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            dbUpdate ( array ( 'context_name'  =>  $device [ 'context_name' ]),  'ipv6_networks' ,  '`ipv6_network` = ?' ,  array ( $ipv6_network )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  'n' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ipv6_network_id  =  dbFetchCell ( 'SELECT `ipv6_network_id` FROM `ipv6_networks` WHERE `ipv6_network` = ? AND `context_name` = ?' ,  array ( $ipv6_network ,  $context_name )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-04 10:45:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ipv6_addresses` WHERE `ipv6_address` = ? AND `ipv6_prefixlen` = ? AND `port_id` = ?' ,  array ( $ipv6_address ,  $ipv6_prefixlen ,  $port_id ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbInsert ( array ( 'ipv6_address'  =>  $ipv6_address ,  'ipv6_compressed'  =>  $ipv6_compressed ,  'ipv6_prefixlen'  =>  $ipv6_prefixlen ,  'ipv6_origin'  =>  $ipv6_origin ,  'ipv6_network_id'  =>  $ipv6_network_id ,  'port_id'  =>  $port_id ,  'context_name'  =>  $context_name ),  'ipv6_addresses' ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            //Update Context
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-07 17:32:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            dbUpdate ( array ( 'context_name'  =>  $device [ 'context_name' ]),  'ipv6_addresses' ,  '`ipv6_address` = ? AND `ipv6_prefixlen` = ? AND `port_id` = ?' ,  array ( $ipv6_address ,  $ipv6_prefixlen ,  $port_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $full_address  =  " $ipv6_address / $ipv6_prefixlen " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $valid_address  =  $full_address  .  '-'  .  $port_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $valid [ 'ipv6' ][ $valid_address ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} //end discover_process_ipv6()
 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-25 22:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Check  entity  sensors  to  be  excluded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  string  value  to  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  array  device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ return  bool  true  if  sensor  is  valid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *               false  if  sensor  is  invalid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  check_entity_sensor ( $string ,  $device ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-25 22:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $valid   =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $string  =  strtolower ( $string ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( is_array ( $config [ 'bad_entity_sensor_regex' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $fringe  =  $config [ 'bad_entity_sensor_regex' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( is_array ( $config [ 'os' ][ $device [ 'os' ]][ 'bad_entity_sensor_regex' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $fringe  =  array_merge ( $config [ 'bad_entity_sensor_regex' ],  $config [ 'os' ][ $device [ 'os' ]][ 'bad_entity_sensor_regex' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-25 22:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $fringe  as  $bad )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( preg_match ( $bad  .  " i " ,  $string ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $valid  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                d_echo ( " Ignored entity sensor:  $bad  :  $string " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $valid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-06 06:52:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Helper  function  to  improve  readability 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Can ' t  use  mib  based  polling ,  because  the  snmp  implentation  and  mibs  are  terrible 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  ( device )  array  -  device  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  ( sensor )  array ( id ,  oid ,  type ,  descr ,  descr_oid ,  min ,  max ,  divisor ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  avtech_add_sensor ( $device ,  $sensor ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $valid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set the id, must be unique
 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-09 12:34:29 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( isset ( $sensor [ 'id' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $id  =  $sensor [ 'id' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( 'Error: No id set for this sensor'  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor id: '  .  $id  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set the sensor oid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $sensor [ 'oid' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $oid  =  $sensor [ 'oid' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( 'Error: No oid set for this sensor'  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor oid: '  .  $oid  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // get the sensor value
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $value  =  snmp_get ( $device ,  $oid ,  '-OvQ' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // if the sensor doesn't exist abort
 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $value  ===  false  ||  ( $type  ==  'temperature'  &&  $value  ==  0 ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        //issue unfortunately some non-existant sensors return 0
 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( 'Error: sensor returned no data, skipping'  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor value: '  .  $value  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // get the type
 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-09 12:34:29 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $type  =  $sensor [ 'type' ]  ?  $sensor [ 'type' ]  :  'temperature' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor type: '  .  $type  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $type_name  =  $device [ 'os' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $type  ==  'switch' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // set up state sensor
 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $type_name  .=  ucfirst ( $type ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $type  =  'state' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $state_index_id  =  create_state_index ( $type_name ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        //Create State Translation
 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-04 10:06:31 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( isset ( $state_index_id ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $states  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 19:17:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                 array ( $state_index_id , 'Off' , 1 , 0 , - 1 ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 array ( $state_index_id , 'On' , 1 , 1 , 0 ), 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								             ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            foreach  ( $states  as  $value )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $insert  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'state_index_id'  =>  $value [ 0 ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'state_descr'  =>  $value [ 1 ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'state_draw_graph'  =>  $value [ 2 ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'state_value'  =>  $value [ 3 ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'state_generic_value'  =>  $value [ 4 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dbInsert ( $insert ,  'state_translations' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set the description
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $sensor [ 'descr_oid' ])  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-09 12:34:29 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $descr  =  trim ( snmp_get ( $device ,  $sensor [ 'descr_oid' ],  '-OvQ' ),  '"' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  elseif  ( $sensor [ 'descr' ])  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $descr  =  $sensor [ 'descr' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        d_echo ( 'Error: No description set for this sensor'  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor description: '  .  $descr  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set divisor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $sensor [ 'divisor' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $divisor  =  $sensor [ 'divisor' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  elseif  ( $type  ==  'temperature' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $divisor  =  100 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $divisor  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor divisor: '  .  $divisor  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set min for alarm
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $sensor [ 'min_oid' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $min  =  snmp_get ( $device ,  $sensor [ 'min_oid' ],  '-OvQ' )  /  $divisor ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $min  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor alarm min: '  .  $min  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // set max for alarm
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $sensor [ 'max_oid' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $max  =  snmp_get ( $device ,  $sensor [ 'max_oid' ],  '-OvQ' )  /  $divisor ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $max  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    d_echo ( 'Sensor alarm max: '  .  $max  .  " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // add the sensor
 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    discover_sensor ( $valid [ 'sensor' ],  $type ,  $device ,  $oid ,  $id ,  $type_name ,  $descr ,  $divisor ,  '1' ,  $min ,  null ,  null ,  $max ,  $value / $divisor ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-06 15:33:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $type  ==  'state' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        create_sensor_to_state_index ( $device ,  $type_name ,  $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 21:44:21 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 08:33:14 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  $device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  $serial 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-20 03:11:56 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ param  $sensor 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ return  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-20 21:18:38 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  get_device_divisor ( $device ,  $serial ,  $sensor ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-27 22:40:15 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $device [ 'os' ]  ==  'poweralert' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $sensor  ==  'current'  ||  $sensor  ==  'frequencies' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( version_compare ( $serial ,  '12.06.0068' ,  '>=' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $divisor  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  elseif  ( version_compare ( $serial ,  '12.04.0055' ,  '>=' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $divisor  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  elseif  ( $sensor  ==  'voltages' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $divisor  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-20 03:11:56 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  elseif  (( $device [ 'os' ]  ==  'huaweiups' )  &&  ( $sensor  ==  'frequencies' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $divisor  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  elseif  (( $device [ 'os' ]  ==  'netmanplus' )  &&  ( $sensor  ==  'voltages' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $divisor  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $divisor  =  10 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 19:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $divisor ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 19:49:23 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-14 18:14:18 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ param  int  $raw_capacity  The  value  return  from  snmp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ return  int  normalized  capacity  value 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 19:49:23 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-14 18:14:18 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  get_toner_capacity ( $raw_capacity ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 19:49:23 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-14 18:14:18 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // unknown or unrestricted capacity, assume 100
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( empty ( $raw_capacity )  ||  $raw_capacity  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  100 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 19:49:23 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-14 18:14:18 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $raw_capacity ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-03 19:49:23 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-30 20:50:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  $descr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ return  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  ignore_storage ( $descr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $deny  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $config [ 'ignore_mount' ]  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $bi  ==  $descr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $deny  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            d_echo ( " $bi  ==  $descr   \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $config [ 'ignore_mount_string' ]  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( strpos ( $descr ,  $bi )  !==  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $deny  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            d_echo ( " strpos:  $descr ,  $bi   \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $config [ 'ignore_mount_regexp' ]  as  $bi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( preg_match ( $bi ,  $descr )  >  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $deny  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            d_echo ( " preg_match  $bi ,  $descr   \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $deny ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-03 12:39:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  $types 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  $device 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ param  array  $pre_cache 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  sensors ( $types ,  $device ,  $valid ,  $pre_cache  =  array ()) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  (( array ) $types  as  $type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  ucfirst ( $type )  .  ': ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $dir  =  $config [ 'install_dir' ]  .  '/includes/discovery/sensors/'  .  $type  . '/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( is_file ( $dir  .  $device [ 'os_group' ]  .  '.inc.php' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            include_once  $dir  .  $device [ 'os_group' ]  .  '.inc.php' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( is_file ( $dir  .  $device [ 'os' ]  .  '.inc.php' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            include_once  $dir  .  $device [ 'os' ]  .  '.inc.php' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( isset ( $config [ 'modules_compat' ][ 'rfc1628' ][ $device [ 'os' ]])  &&  $config [ 'modules_compat' ][ 'rfc1628' ][ $device [ 'os' ]])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( is_file ( $dir   .  '/rfc1628.inc.php' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                include_once  $dir  .  '/rfc1628.inc.php' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d_echo ( $valid [ 'sensor' ][ $type ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        check_valid_sensors ( $device ,  $type ,  $valid [ 'sensor' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}