2016-08-22 10:32:05 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  bootstrap . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Initialize  the  Autoloader  and  includes  for  phpunit  to  be  able  to  run  tests 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  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 . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE . See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  along  with  this  program .   If  not ,  see  < http :// www . gnu . org / licenses />. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ package     LibreNMS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ link        http :// librenms . org 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ copyright   2016  Tony  Murray 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ author      Tony  Murray  < murraytony @ gmail . com > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-20 08:36:49 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								use  LibreNMS\Proc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  LibreNMS\Util\Snmpsim ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 10:32:05 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								$install_dir  =  realpath ( __DIR__  .  '/..' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-20 08:36:49 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$init_modules  =  array ( 'web' ,  'discovery' ,  'polling' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-19 21:12:26 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-07 15:08:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( ! getenv ( 'SNMPSIM' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $init_modules []  =  'mocksnmp' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 10:32:05 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-07 15:08:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( getenv ( 'DBTEST' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! is_file ( $install_dir  .  '/config.php' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        exec ( " cp  $install_dir /tests/config/config.test.php  $install_dir /config.php " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 05:05:14 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $init_modules []  =  'nodb' ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-07 15:08:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 17:59:59 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-07 15:08:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								require  $install_dir  .  '/includes/init.php' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								chdir ( $install_dir ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-21 14:12:59 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-23 15:44:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								ini_set ( 'display_errors' ,  1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-20 08:36:49 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//error_reporting(E_ALL & ~E_WARNING);
 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-16 19:58:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								update_os_cache ( true );  // Force update of OS Cache
 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-20 08:36:49 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( getenv ( 'SNMPSIM' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $snmpsim  =  new  Snmpsim ( '127.1.6.2' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $snmpsim -> fork (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // make PHP hold on a reference to $snmpsim so it doesn't get destructed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    register_shutdown_function ( function  ( Snmpsim  $ss )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ss -> stop (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    },  $snmpsim ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( getenv ( 'DBTEST' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 07:56:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    global  $schema ,  $sql_mode ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 07:56:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $sql_mode  =  dbFetchCell ( " SELECT @@global.sql_mode " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $empty_db  =  ( dbFetchCell ( " SELECT count(*) FROM `information_schema`.`tables` WHERE `table_type` = 'BASE TABLE' AND `table_schema` = ? " ,  array ( $config [ 'db_name' ]))  ==  0 ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 07:56:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbQuery ( " SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-01 15:28:29 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $cmd  =  $config [ 'install_dir' ]  .  '/build-base.php' ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    exec ( $cmd ,  $schema ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 07:56:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    register_shutdown_function ( function  ()  use  ( $empty_db ,  $sql_mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        global  $config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        dbConnect (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-20 08:36:49 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo  " Cleaning database... \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 07:56:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // restore sql_mode
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        dbQuery ( " SET GLOBAL sql_mode=' $sql_mode ' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $empty_db )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbQuery ( " DROP DATABASE  "  .  $config [ 'db_name' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  elseif  ( isset ( $config [ 'test_db_name' ])  &&  $config [ 'db_name' ]  ==  $config [ 'test_db_name' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // truncate tables
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $tables  =  dbFetchColumn ( 'SHOW TABLES' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $excluded  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'alert_templates' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'config' ,  // not sure about this one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'dbSchema' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'graph_types' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'port_association_mode' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                'widgets' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $truncate  =  array_diff ( $tables ,  $excluded ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbQuery ( " SET FOREIGN_KEY_CHECKS = 0 " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( $truncate  as  $table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dbQuery ( " TRUNCATE TABLE  $table " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbQuery ( " SET FOREIGN_KEY_CHECKS = 1 " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-07 09:07:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}