From 837df1f19683ff62838ec46167127fc69ebce729 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Mon, 13 Aug 2018 12:49:41 +0200 Subject: [PATCH] Revert "Extension self assestment" This reverts commit de459c7761d2484649abe85bf2742189d1b01aa4. --- pandora_console/extras/pandora_diag.php | 129 ++-- pandora_console/install.php | 983 ++++++++++++++++++++++++ 2 files changed, 1034 insertions(+), 78 deletions(-) create mode 100755 pandora_console/install.php diff --git a/pandora_console/extras/pandora_diag.php b/pandora_console/extras/pandora_diag.php index d83e211a82..6a37a9c9b1 100644 --- a/pandora_console/extras/pandora_diag.php +++ b/pandora_console/extras/pandora_diag.php @@ -138,7 +138,6 @@ function execution_time(){ return "Normal Status   The execution time is correct. For a more extensive information of this data consult the Execution Time graph"; } - function get_logs_size($file){ $file_name = '/var'. $file .''; $size_server_log = filesize($file_name); @@ -150,9 +149,9 @@ function get_status_logs($path){ $status_server_log = ""; $size_server_log = get_logs_size($path); if ($size_server_log <= 10240){ - $status_server_log = "Normal Status   You have less than 10 MB of logs"; + $status_server_log = "Normal Status   You have less than 10 MB of logs"; }else{ - $status_server_log = "Warning Status   You have more than 10 MB of logs"; + $status_server_log = "Warning Status   You have more than 10 MB of logs"; } return $status_server_log; } @@ -162,9 +161,9 @@ function percentage_modules_per_agent(){ $total_modules = db_get_value_sql ('SELECT count(*) FROM tagente_modulo'); $average_modules_per_agent = $total_modules / $total_agents; if($average_modules_per_agent <= 40){ - $status_average_modules = "Normal Status   The average of modules per agent is less than 40 percent"; + $status_average_modules = "Normal Status   The average of modules per agent is less than 40 percent"; }else{ - $status_average_modules = "Warning Status  The average of modules per agent is more than 40 percent. You can have performance problems"; + $status_average_modules = "Warning Status  The average of modules per agent is more than 40 percent. You can have performance problems"; } return $status_average_modules; } @@ -175,9 +174,9 @@ function license_capacity(){ $status_license_capacity = ""; $current_count = db_get_value_sql ('SELECT count(*) FROM tagente'); if ($current_count > $license_limit * 90 /100){ - $status_license_capacity = "Warning Status   The license capacity is more than 90 percent"; + $status_license_capacity = "Warning Status   The license capacity is more than 90 percent"; }else{ - $status_license_capacity = "Normal Status   The license capacity is less than 90 percent"; + $status_license_capacity = "Normal Status   The license capacity is less than 90 percent"; } return $status_license_capacity; } @@ -196,12 +195,12 @@ function interval_average_of_network_modules(){ $average_time= (int) $total_module_interval_time / $total_network_modules; if($average_time < 180 ){ - $status_average_modules = "Warning Status   The system has a lot of load and a very fine configuration is required"; + $status_average_modules = "Warning Status   The system has a lot of load and a very fine configuration is required"; }else{ - $status_average_modules = "Normal Status   The system has an acceptable charge"; + $status_average_modules = "Normal Status   The system has an acceptable charge"; } if ($average_time == 0) - $status_average_modules = "Normal Status   The system has no load"; + $status_average_modules = "Normal Status   The system has no load"; return $status_average_modules; } @@ -209,9 +208,9 @@ $attachment_total_files = count(glob($config['homedir']."/attachment/{*.*}",GLOB function files_attachment_folder($total_files){ if($total_files <= 700){ - $status_total_files = "Normal Status   The attachment folder has less than 700 files."; + $status_total_files = "Normal Status   The attachment folder has less than 700 files."; }else{ - $status_total_files = "Warning Status   The attachment folder has more than 700 files."; + $status_total_files = "Warning Status   The attachment folder has more than 700 files."; } return $status_total_files; } @@ -219,21 +218,14 @@ function files_attachment_folder($total_files){ $tagente_datos_size = db_get_value_sql('SELECT COUNT(*) FROM tagente_datos'); function status_tagente_datos($tagente_datos_size){ - if ($tagente_datos_size <=3000000){ - $tagente_datos_size = "Normal Status   The tagente_datos table has an acceptable amount of data."; + if ($tagente_datos_size <=3000){ + $tagente_datos_size = "Normal Status   The tagente_datos table has less than 3000 data."; }else{ - $tagente_datos_size = "Warning Status   The tagente_datos table has too much data. A historical database is recommended."; + $tagente_datos_size = "Warning Status   The tagente_datos table has more than 3000 data. A historical database is recommended."; } return $tagente_datos_size; } -function status_values($val_rec, $val){ - if ($val_rec <= $val) - return $val . " (current value) Normal Status"; - else - return $val . " (current value) Warning Status"; -} - $tables_fragmentation=db_get_sql ("SELECT (data_free/(index_length+data_length)) as frag_ratio from information_schema.tables where DATA_FREE > 0 and table_name='tagente_datos' and table_schema='pandora'"); $db_size=db_get_all_rows_sql("SELECT table_schema, @@ -253,30 +245,28 @@ $path_console_logs ="/www/html/pandora_console/pandora_console.log"; $innodb_log_file_size_min_rec_value = "64M"; $innodb_log_buffer_size_min_rec_value = "16M"; $innodb_flush_log_at_trx_commit_min_rec_value = 0; -$query_cache_limit_min_rec_value = 2; -$max_allowed_packet_min_rec_value = 32; -$innodb_buffer_pool_size_min_rec_value = shell_exec("cat /proc/meminfo | grep -i total | head -1 | awk '{print $(NF-1)*0.4/1024}'"); -$sort_buffer_size_min_rec_value = 32; -$join_buffer_size_min_rec_value = 265; +$query_cache_limit_min_rec_value = "2M"; +$max_allowed_packet_min_rec_value = "32M"; +$sort_buffer_size_min_rec_value = "32K"; +$join_buffer_size_min_rec_value = "265K"; $query_cache_type_min_rec_value = "ON"; -$query_cache_size_min_rec_value = 24; -$innodb_lock_wait_timeout_max_rec_value = 120; +$query_cache_size_min_rec_value = "24M"; +$innodb_lock_wait_timeout_max_rec_value = "120 seconds"; $tables_fragmentation_max_rec_value = 10; -$thread_cache_size_max_rec_value = 8; -$thread_stack_min_rec_value = 256; -$max_connections_max_rec_value = 150; -$key_buffer_size_min_rec_value = 256; -$read_buffer_size_min_rec_value = 32; -$read_rnd_buffer_size_min_rec_value = 32; -$query_cache_min_res_unit_min_rec_value = 2; -$innodb_file_per_table_min_rec_value = 0; +$thread_cache_size_max_rec_value = "8M"; +$thread_stack_min_rec_value = "256K"; +$max_connections_max_rec_value = "150"; +$key_buffer_size_min_rec_value = "256K"; +$read_buffer_size_min_rec_value = "32K"; +$read_rnd_buffer_size_min_rec_value = "32K"; +$query_cache_min_res_unit_min_rec_value = "2K"; function status_fragmentation_tables($tables_fragmentation_max_rec_value, $tables_fragmentation){ $status_tables_frag = ""; if($tables_fragmentation > $tables_fragmentation_max_rec_value) - $status_tables_frag = "Warning Status   The fragmentation tables is higher than recommended. You should defragment them."; + $status_tables_frag = "Warning Status   The fragmentation tables is higher than recommended. You should defragment them."; else - $status_tables_frag = "Normal Status   The fragmentation tables is correct."; + $status_tables_frag = "Normal Status   The fragmentation tables is correct."; return $status_tables_frag; } @@ -546,46 +536,29 @@ switch ($config["dbtype"]) { WHERE \"key\" = 'current_update'", "Current Update #"); break; } -$innodb_log_file_size =db_get_value_sql ("SELECT @@innodb_log_file_size")/1048576; -$innodb_log_buffer_size =db_get_value_sql("SELECT @@innodb_log_buffer_size")/1048576; -$innodb_flush_log_at_trx_commit =db_get_value_sql("SELECT @@innodb_flush_log_at_trx_commit"); -$max_allowed_packet =db_get_value_sql("SELECT @@max_allowed_packet")/1048576; -$innodb_buffer_pool_size = db_get_value_sql("SELECT @@innodb_buffer_pool_size")/1024; -$sort_buffer_size =number_format(db_get_value_sql("SELECT @@sort_buffer_size")/1024, 2); -$join_buffer_size =db_get_value_sql("SELECT @@join_buffer_size")/1024; -$query_cache_type =db_get_value_sql("SELECT @@query_cache_type"); -$query_cache_size =db_get_value_sql("SELECT @@query_cache_size")/1048576; -$query_cache_limit =db_get_value_sql("SELECT @@query_cache_limit")/1048576; -$innodb_lock_wait_timeout =db_get_value_sql("SELECT @@innodb_lock_wait_timeout"); -$thread_cache_size =db_get_value_sql("SELECT @@thread_cache_size"); -$thread_stack =db_get_value_sql("SELECT @@thread_stack")/1024; -$max_connections =db_get_value_sql("SELECT @@max_connections"); -$key_buffer_size =db_get_value_sql("SELECT @@key_buffer_size")/1024; -$read_buffer_size =db_get_value_sql("SELECT @@read_buffer_size")/1024; -$read_rnd_buffer_size =db_get_value_sql("SELECT @@read_rnd_buffer_size")/1024; -$query_cache_min_res_unit =db_get_value_sql("SELECT @@query_cache_min_res_unit")/1024; -$innodb_file_per_table = db_get_value_sql("SELECT @@innodb_file_per_table"); + echo "".__("MySQL Performance metrics").""; -render_row($innodb_log_file_size.status_values($innodb_log_file_size_min_rec_value,$innodb_log_file_size),'InnoDB log file size ', 'InnoDB log file size '); -render_row($innodb_log_buffer_size.status_values($innodb_log_buffer_size_min_rec_value,$innodb_log_buffer_size),'InnoDB log buffer size ', 'InnoDB log buffer size '); -render_row($innodb_flush_log_at_trx_commit.status_values($innodb_flush_log_at_trx_commit_min_rec_value,$innodb_flush_log_at_trx_commit), 'InnoDB flush log at trx-commit ','InnoDB flush log at trx-commit '); -render_row($max_allowed_packet.status_values($max_allowed_packet_min_rec_value,$max_allowed_packet), 'Maximun allowed packet ','Maximun allowed packet '); -render_row($innodb_buffer_pool_size .status_values($innodb_buffer_pool_size_min_rec_value,$innodb_buffer_pool_size), 'InnoDB buffer pool size ','InnoDB buffer pool size '); -render_row($sort_buffer_size.status_values($sort_buffer_size_min_rec_value,$sort_buffer_size), 'Sort buffer size ','Sort buffer size '); -render_row($join_buffer_size.status_values($join_buffer_size_min_rec_value,$join_buffer_size), 'Join buffer size ','Join buffer size '); -render_row($query_cache_type.status_values($query_cache_type_min_rec_value,$query_cache_type), 'Query cache type ', 'Query cache type '); -render_row($query_cache_size.status_values($query_cache_size_min_rec_value,$query_cache_size), 'Query cache size ','Query cache size '); -render_row($query_cache_limit.status_values($query_cache_limit_min_rec_value,$query_cache_limit), 'Query cache limit ','Query cache limit '); -render_row($innodb_lock_wait_timeout.status_values($innodb_lock_wait_timeout_max_rec_value,$innodb_lock_wait_timeout), 'InnoDB lock wait timeout ','InnoDB lock wait timeout '); -render_row($thread_cache_size.status_values($thread_cache_size_max_rec_value,$thread_cache_size), 'Thread cache size ','Thread cache size '); -render_row($thread_stack .status_values($thread_stack_min_rec_value,$thread_stack), 'Thread stack ','Thread stack '); -render_row($max_connections.status_values($max_connections_max_rec_value,$max_connections), 'Maximum connections ','Maximun connections '); -render_row($key_buffer_size .status_values($key_buffer_size_min_rec_value,$key_buffer_size), 'Key buffer size ','Key buffer size '); -render_row($read_buffer_size.status_values($read_buffer_size_min_rec_value,$read_buffer_size), 'Read buffer size ','Read buffer size '); -render_row($read_rnd_buffer_size.status_values($read_rnd_buffer_size_min_rec_value,$read_rnd_buffer_size), 'Read rnd-buffer size ','Read rnd-buffer size '); -render_row($query_cache_min_res_unit.status_values($query_cache_min_res_unit_min_rec_value,$query_cache_min_res_unit), 'Query cache min-res-unit ','Query cache min-res-unit '); -render_row($innodb_file_per_table.status_values($innodb_file_per_table_min_rec_value,$innodb_file_per_table), 'InnoDB file per table ','InnoDB file per table '); +render_row_2($innodb_log_file_size_min_rec_value,'InnoDB log file size (minimum recommended value)',db_get_value_sql ("SELECT @@innodb_log_file_size")/1048576 . 'M', 'InnoDB log file size (current value)'); +render_row_2($innodb_log_buffer_size_min_rec_value,'InnoDB log buffer size (minimum recommended value)',db_get_value_sql("SELECT @@innodb_log_buffer_size")/1048576 . 'M', 'InnoDB log buffer size (current value)'); +render_row_2($innodb_flush_log_at_trx_commit_min_rec_value,'InnoDB flush log at trx-commit (minimum recommended value)',db_get_value_sql("SELECT @@innodb_flush_log_at_trx_commit"), 'InnoDB flush log at trx-commit (current value)'); +render_row_2($max_allowed_packet_min_rec_value,'Maximun allowed packet',db_get_value_sql("SELECT @@max_allowed_packet")/1048576 . 'M', 'Maximun allowed packet (current value)'); +render_row_2($innodb_buffer_pool_size_min_rec_value . 'M','InnoDB buffer pool size (minimum recommended value)',db_get_value_sql("SELECT @@innodb_buffer_pool_size")/1024 . 'M', 'InnoDB buffer pool size (current value)'); +render_row_2($sort_buffer_size_min_rec_value,'Sort buffer size (minimum recommended value)',number_format(db_get_value_sql("SELECT @@sort_buffer_size")/1024, 2) . 'K', 'Sort buffer size (current value)'); +render_row_2($join_buffer_size_min_rec_value,'Join buffer size (minimum recommended value)',db_get_value_sql("SELECT @@join_buffer_size")/1024 . 'K', 'Join buffer size (current value)'); +render_row_2($query_cache_type_min_rec_value,'Query cache type (recommended value)',db_get_value_sql("SELECT @@query_cache_type"), 'Query cache type (current value)'); +render_row_2($query_cache_size_min_rec_value,'Query cache size (minimum recommended value)',db_get_value_sql("SELECT @@query_cache_size")/1048576 . 'M', 'Query cache size (current value)'); +render_row_2($query_cache_limit_min_rec_value,'Query cache limit (minimum recommended value)',db_get_value_sql("SELECT @@query_cache_limit")/1048576 . 'M', 'Query cache limit (current value)'); +render_row_2($innodb_lock_wait_timeout_max_rec_value ,'InnoDB lock wait timeout (maximum recommended value)',db_get_value_sql("SELECT @@innodb_lock_wait_timeout") . ' seconds', 'InnoDB lock wait timeout (current value)'); +render_row_2($thread_cache_size_max_rec_value ,'Thread cache size (maximum recommended value)',db_get_value_sql("SELECT @@thread_cache_size") . 'M', 'Thread cache size (current value)'); +render_row_2($thread_stack_min_rec_value ,'Thread stack (minimum recommended value)',db_get_value_sql("SELECT @@thread_stack")/1024 . 'K', 'Thread stack (current value)'); +render_row_2($max_connections_max_rec_value ,'Maximun connections (maximum recommended value)',db_get_value_sql("SELECT @@max_connections"), 'Maximum connections (current value)'); +render_row_2($key_buffer_size_min_rec_value ,'Key buffer size (minimum recommended value)',db_get_value_sql("SELECT @@key_buffer_size")/1024 . 'K', 'Key buffer size (current value)'); +render_row_2($read_buffer_size_min_rec_value ,'Read buffer size (minimum recommended value)',db_get_value_sql("SELECT @@read_buffer_size")/1024 . 'K', 'Read buffer size (current value)'); +render_row_2($read_rnd_buffer_size_min_rec_value ,'Read rnd-buffer size (minimum recommended value)',db_get_value_sql("SELECT @@read_rnd_buffer_size")/1024 . 'K', 'Read rnd-buffer size (current value)'); +render_row_2($query_cache_min_res_unit_min_rec_value ,'Query cache min-res-unit (minimum recommended value)',db_get_value_sql("SELECT @@query_cache_min_res_unit")/1024 . 'K', 'Query cache min-res-unit (current value)'); +render_row(db_get_value_sql("SELECT @@innodb_file_per_table"), 'InnoDB file per table'); + echo "".__("Tables fragmentation in the PandoraFMS database").""; @@ -655,7 +628,7 @@ $agent_id= db_get_value_sql ("SELECT id_agente FROM tagente WHERE nombre = '$ser 'agent_module_id' => $id_module['id_agente_modulo'], 'period' => SECONDS_1MONTH, 'date' => time() , - 'height' => '150' + 'height' => '200' ); render_row(grafico_modulo_sparse ($params),"Graph of the " . $id_module['nombre']." module."); } diff --git a/pandora_console/install.php b/pandora_console/install.php new file mode 100755 index 0000000000..02196d832c --- /dev/null +++ b/pandora_console/install.php @@ -0,0 +1,983 @@ + + + + + Pandora FMS - Installation Wizard + + + + + + + + + + + + + +
+ +
+ + + +"; + echo " $label "; + echo ""; + if (!extension_loaded($ext)) { + echo ""; + return 1; + } + else { + echo ""; + return 0; + } + echo ""; +} + +function check_include ( $ext, $label ) { + echo ""; + echo " $label "; + echo ""; + if (!include($ext)) { + echo ""; + return 1; + } + else { + echo ""; + return 0; + } + echo ""; +} + +function check_exists ( $file, $label ) { + echo ""; + echo " $label "; + echo ""; + if (!file_exists ($file)) { + echo " "; + return 1; + } + else { + echo " "; + return 0; + } + echo ""; +} + +function check_generic ( $ok, $label ) { + echo ""; + if ($ok == 0 ) { + echo " "; + echo ""; + echo " $label "; + echo ""; + echo ""; + return 1; + } + else { + echo " "; + echo ""; + echo " $label "; + echo ""; + echo ""; + return 0; + } +} + +function check_writable ( $fullpath, $label ) { + echo ""; + if (file_exists($fullpath)) + if (is_writable($fullpath)) { + echo " "; + echo ""; + echo " $label "; + echo ""; + echo ""; + return 0; + } + else { + echo " "; + echo ""; + echo " $label "; + echo ""; + echo ""; + return 1; + } + else { + echo " "; + echo ""; + echo " $label "; + echo ""; + echo ""; + return 1; + } +} + +function check_variable ( $var, $value, $label, $mode ) { + echo ""; + echo " $label "; + echo ""; + if ($mode == 1) { + if ($var >= $value) { + echo " "; + return 0; + } + else { + echo " "; + return 1; + } + } + elseif ($var == $value) { + echo " "; + return 0; + } + else { + echo " "; + return 1; + } + echo ""; +} + +function parse_mysql_dump($url) { + if (file_exists($url)) { + $file_content = file($url); + $query = ""; + foreach($file_content as $sql_line) { + if (trim($sql_line) != "" && strpos($sql_line, "-- ") === false) { + $query .= $sql_line; + if(preg_match("/;[\040]*\$/", $sql_line)) { + if (!$result = mysql_query($query)) { + echo mysql_error(); //Uncomment for debug + echo "
$query
"; + return 0; + } + $query = ""; + } + } + } + return 1; + } + else + return 0; +} + +function parse_mysqli_dump($connection, $url) { + if (file_exists($url)) { + $file_content = file($url); + $query = ""; + foreach($file_content as $sql_line) { + if (trim($sql_line) != "" && strpos($sql_line, "-- ") === false) { + $query .= $sql_line; + if(preg_match("/;[\040]*\$/", $sql_line)) { + if (!$result = mysqli_query($connection, $query)) { + echo mysqli_error(); //Uncomment for debug + echo "
$query
"; + return 0; + } + $query = ""; + } + } + } + return 1; + } + else + return 0; +} + +function random_name ($size) { + $temp = ""; + for ($a=0;$a< $size;$a++) + $temp = $temp. chr(rand(122,97)); + + return $temp; +} + +function print_logo_status ($step, $step_total) { + global $banner; + + $header = " +
+
+
+ $banner +
+
"; + $header .= " +
+ Install step $step of $step_total +
"; + + return $header; +} + +// +// This function adjusts path settings in pandora db for FreeBSD. +// +// All packages and configuration files except operating system's base files +// are installed under /usr/local in FreeBSD. So, path settings in pandora db +// for some programs should be changed from the Linux default. +// +function adjust_paths_for_freebsd($engine, $connection = false) { + + $adjust_sql = array( + "update trecon_script set script = REPLACE(script,'/usr/share','/usr/local/share');", + "update tconfig set value = REPLACE(value,'/usr/bin','/usr/local/bin') where token='netflow_daemon' OR token='netflow_nfdump' OR token='netflow_nfexpire';", + "update talert_commands set command = REPLACE(command,'/usr/bin','/usr/local/bin');", + "update talert_commands set command = REPLACE(command,'/usr/share', '/usr/local/share');", + "update tplugin set execute = REPLACE(execute,'/usr/share','/usr/local/share');", + "update tevent_response set target = REPLACE(target,'/usr/share','/usr/local/share');", + "insert into tconfig (token, value) VALUES ('graphviz_bin_dir', '/usr/local/bin');" + ); + + for ($i = 0; $i < count ($adjust_sql); $i++) { + switch ($engine) { + case 'mysql': + $result = mysql_query($adjust_sql[$i]); + break; + case 'mysqli': + $result = mysqli_query($connection, $adjust_sql[$i]); + break; + case 'oracle': + //Delete the last semicolon from current query + $query = substr($adjust_sql[$i], 0, strlen($adjust_sql[$i]) - 1); + $sql = oci_parse($connection, $query); + $result = oci_execute($sql); + break; + case 'pgsql': + pg_send_query($connection, $adjust_sql[$i]); + $result = pg_get_result($connection); + break; + } + if (!$result) { + return 0; + } + } + + return 1; +} + +function install_step1() { + global $banner; + + echo " +
+
+ " . print_logo_status (1,6) . " +
+

Welcome to Pandora FMS installation Wizard

+

This wizard helps you to quick install Pandora FMS console and main database in your system.

+

In four steps, this installer will check all dependencies and will create your configuration, ready to use.

+

For more information, please refer to documentation.
+ Pandora FMS Development Team

+ "; + if (file_exists("include/config.php")) { + echo "
Warning: You already have a config.php file. + Configuration and database would be overwritten if you continued.
"; + } + echo "
"; + echo ""; + $writable = check_writable ( "include", "Checking if ./include is writable"); + if (file_exists("include/config.php")) + $writable += check_writable ( "include/config.php", "Checking if include/config.php is writable"); + echo "
"; + + echo "
Warning: This installer will overwrite and destroy + your existing Pandora FMS configuration and Database. Before continue, + please be sure that you have no valuable Pandora FMS data in your Database.
+
"; + + echo "
Upgrade: + If you want to upgrade from Pandora FMS 4.x to 5.0 version, please use the migration tool inside /extras directory in this setup. +
"; + + echo "
"; + + if ($writable == 0) { + echo "
"; + echo ""; + echo "
"; + } + else { + echo "
ERROR:You need to setup permissions to be able to write in ./include directory
"; + } + echo "
"; + + echo "
"; + echo " +
+
+ Pandora FMS is an OpenSource Software project registered at + SourceForge +
+
"; +} + +function install_step1_licence() { + echo " +
+
+ " . print_logo_status (2,6) . " +
+

GPL2 Licence terms agreement

+

Pandora FMS is an OpenSource software project licensed under the GPL2 licence. Pandora FMS includes, as well, another software also licensed under LGPL and BSD licenses. Before continue, you must accept the licence terms.. +

For more information, please refer to our website at http://pandorafms.org and contact us if you have any kind of question about the usage of Pandora FMS

+

If you dont accept the licence terms, please, close your browser and delete Pandora FMS files.

+ "; + + if (!file_exists("COPYING")) { + echo "
Licence file 'COPYING' is not present in your distribution. This means you have some 'partial' Pandora FMS distribution. We cannot continue without accepting the licence file."; + echo "
"; + } + else { + echo "
"; + echo ""; + echo "

"; + echo "

"; + } + echo "
"; + + echo "
+
+
+ Pandora FMS is an OpenSource Software project registered at + SourceForge +
+
"; +} + +function install_step2() { + + echo " +
+
+ " . print_logo_status (3,6) . " +
"; + echo "

Checking software dependencies

"; + echo ""; + $res = 0; + $res += check_variable(phpversion(),"5.2","PHP version >= 5.2",1); + $res += check_extension("gd","PHP GD extension"); + $res += check_extension("ldap","PHP LDAP extension"); + $res += check_extension("snmp","PHP SNMP extension"); + $res += check_extension("session","PHP session extension"); + $res += check_extension("gettext","PHP gettext extension"); + $res += check_extension("mbstring","PHP Multibyte String"); + $res += check_extension("zip","PHP Zip"); + $res += check_extension("zlib","PHP Zlib extension"); + $res += check_extension("json","PHP json extension"); + $res += check_extension("curl","CURL (Client URL Library)"); + $res += check_extension("filter","PHP filter extension"); + $res += check_extension("calendar","PHP calendar extension"); + if (PHP_OS == "FreeBSD") { + $res += check_exists ("/usr/local/bin/twopi","Graphviz Binary"); + } + else if (PHP_OS == "NetBSD") { + $res += check_exists ("/usr/pkg/bin/twopi","Graphviz Binary"); + } + else if ( substr(PHP_OS, 0, 3) == 'WIN' ) { + $res += check_exists ("..\\..\\..\\Graphviz\\bin\\twopi.exe", "Graphviz Binary"); + } + else { + $res += check_exists ("/usr/bin/twopi","Graphviz Binary"); + } + + echo ""; + check_extension("mysql", "PHP MySQL extension"); + check_extension("mysqli", "PHP MySQL(mysqli) extension"); + echo "
"; + echo "DB Engines"; + echo ""; + echo "
"; + + if ($res > 0) { + echo " +
You have some incomplete + dependencies. Please correct them or this installer + will not be able to finish your installation. +
+
+ Remember, if you install any PHP module to comply + with these dependences, you need to restart + your HTTP/Apache server after it to use the new + modules. +
+
+ Ignore it. +
"; + } + else { + echo "
"; + echo " + "; + echo "
"; + } + echo "
"; + echo "
"; + echo " +
+
+
+
+ Pandora FMS is an OpenSource Software project registered at + SourceForge +
+ "; +} + + +function install_step3() { + $options = ''; + if (extension_loaded("mysql")) { + $options .= ""; + } + if (extension_loaded("mysqli")) { + $options .= ""; + } + + $error = false; + if (empty($options)) { + $error = true; + } + + echo " +
+
+ " . print_logo_status (4,6) . " +
+

Environment and database setup

+

+ This wizard will create your Pandora FMS database, + and populate it with all the data needed to run for the first time. +

+

+ You need a privileged user to create database schema, this is usually root user. + Information about root user will not be used or stored anymore. +

+

+ You can also deploy the scheme into an existing Database. + In this case you need a privileged Database user and password of that instance. +

+

+ Now, please, complete all details to configure your database and environment setup. +

+
+ Warning: This installer will overwrite and destroy your existing + Pandora FMS configuration and Database. Before continue, + please be sure that you have no valuable Pandora FMS data in your Database. +

+
"; + + if (extension_loaded("oci8")) { + echo "
For Oracle installation an existing Database with a privileged user is needed.
"; + } + if (!$error) { + echo ""; + } + + echo ""; + echo ""; + + // the field dbgrant is only shown when the DB host is different from 127.0.0.1 or localhost + echo " + + "; + + + echo " "; + + echo ""; + if ($_SERVER['SERVER_ADDR'] == 'localhost' || $_SERVER['SERVER_ADDR'] == '127.0.0.1') { + echo "
"; + echo "DB Engine
"; + + + if ($error) { + echo " +
+ Warning: You haven't a any DB engine with PHP. Please check the previous step to DB engine dependencies. +
"; + } + else { + echo ""; + + echo "
"; + echo " Installation in
"; + echo ""; + } + echo "
DB User with privileges
+ + +
DB Password for this user
+ + +
DB Hostname
+ + +
DB Name (pandora by default)
+ + +
Drop Database if exists
+ +
Full path to HTTP publication directory
+ For example /var/www/pandora_console/ +
+ + +
+ Drop Database if exists
+ + "; + } else { + echo "
"; + } + echo "URL path to Pandora FMS Console
+ For example '/pandora_console' +
+ +
+ "; + + if (!$error) { + echo "
"; + echo " + "; + echo "
"; + } + + echo "
"; + + echo ""; + + echo "
"; + echo "
+
+ Pandora FMS is an OpenSource Software project registered at + SourceForge +
+
"; +} + +function install_step4() { + $pandora_config = "include/config.php"; + + if ( (! isset($_POST["user"])) || (! isset($_POST["dbname"])) || (! isset($_POST["host"])) || + (! isset($_POST["pass"])) || (!isset($_POST['engine'])) || (! isset($_POST["db_action"])) ) { + $dbpassword = ""; + $dbuser = ""; + $dbhost = ""; + $dbname = ""; + $engine = ""; + $dbaction = ""; + $dbgrant = ""; + } + else { + $engine = $_POST['engine']; + $dbpassword = $_POST["pass"]; + $dbuser = $_POST["user"]; + $dbhost = $_POST["host"]; + $dbaction = $_POST["db_action"]; + if (isset($_POST["dbgrant"]) && $_POST["dbgrant"] != "") + $dbgrant = $_POST["dbgrant"]; + else + $dbgrant = $_SERVER["SERVER_ADDR"]; + if (isset($_POST["drop"])) + $dbdrop = $_POST["drop"]; + else + $dbdrop = 0; + + $dbname = $_POST["dbname"]; + if (isset($_POST["url"])) + $url = $_POST["url"]; + else + $url = "http://localhost"; + if (isset($_POST["path"])) { + $path = $_POST["path"]; + $path = str_replace("\\", "/", $path); // Windows compatibility + } + else + $path = "/var/www"; + } + $everything_ok = 0; + $step1=0; + $step2=0; + $step3=0; + $step4=0; $step5=0; $step6=0; $step7=0; + + echo " +
+
+ " . print_logo_status(5,6) . " +
+

Creating database and default configuration file

+ "; + switch ($engine) { + case 'mysql': + if (! mysql_connect ($dbhost, $dbuser, $dbpassword)) { + check_generic ( 0, "Connection with Database"); + } + else { + check_generic ( 1, "Connection with Database"); + + // Drop database if needed and don't want to install over an existing DB + if ($dbdrop == 1) { + mysql_query ("DROP DATABASE IF EXISTS `$dbname`"); + } + + // Create schema + if ($dbaction == 'db_new' || $dbdrop == 1) { + $step1 = mysql_query ("CREATE DATABASE `$dbname`"); + check_generic ($step1, "Creating database '$dbname'"); + } + else { + $step1 = 1; + } + if ($step1 == 1) { + $step2 = mysql_select_db($dbname); + check_generic ($step2, "Opening database '$dbname'"); + + $step3 = parse_mysql_dump("pandoradb.sql"); + check_generic ($step3, "Creating schema"); + + $step4 = parse_mysql_dump("pandoradb_data.sql"); + check_generic ($step4, "Populating database"); + if (PHP_OS == "FreeBSD") { + $step_freebsd = adjust_paths_for_freebsd ($engine); + check_generic ($step_freebsd, "Adjusting paths in database for FreeBSD"); + } + + $random_password = random_name (8); + $host = $dbhost; // set default granted origin to the origin of the queries + if (($dbhost != 'localhost') && ($dbhost != '127.0.0.1')) + $host = $dbgrant; // if the granted origin is different from local machine, set the valid origin + $step5 = mysql_query ("GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host + IDENTIFIED BY '".$random_password."'"); + mysql_query ("FLUSH PRIVILEGES"); + check_generic ($step5, "Established privileges for user pandora. A new random password has been generated: $random_password
Please write it down, you will need to setup your Pandora FMS server, editing the /etc/pandora/pandora_server.conf file
"); + + $step6 = is_writable("include"); + check_generic ($step6, "Write permissions to save config file in './include'"); + + $cfgin = fopen ("include/config.inc.php","r"); + $cfgout = fopen ($pandora_config,"w"); + $config_contents = fread ($cfgin, filesize("include/config.inc.php")); + $dbtype = 'mysql'; + $config_new = ''; + $step7 = fputs ($cfgout, $config_new); + $step7 = $step7 + fputs ($cfgout, $config_contents); + if ($step7 > 0) + $step7 = 1; + fclose ($cfgin); + fclose ($cfgout); + chmod ($pandora_config, 0600); + check_generic ($step7, "Created new config file at '".$pandora_config."'"); + } + } + + if (($step7 + $step6 + $step5 + $step4 + $step3 + $step2 + $step1) == 7) { + $everything_ok = 1; + } + break; + case 'mysqli': + $connection = mysqli_connect ($dbhost, $dbuser, $dbpassword); + if (mysqli_connect_error() > 0) { + check_generic ( 0, "Connection with Database"); + } + else { + check_generic ( 1, "Connection with Database"); + + // Drop database if needed and don't want to install over an existing DB + if ($dbdrop == 1) { + mysqli_query ($connection, "DROP DATABASE IF EXISTS `$dbname`"); + } + + // Create schema + if ($dbaction == 'db_new' || $dbdrop == 1) { + $step1 = mysqli_query ($connection, "CREATE DATABASE `$dbname`"); + check_generic ($step1, "Creating database '$dbname'"); + } + else { + $step1 = 1; + } + if ($step1 == 1) { + $step2 = mysqli_select_db($connection, $dbname); + check_generic ($step2, "Opening database '$dbname'"); + + $step3 = parse_mysqli_dump($connection, "pandoradb.sql"); + check_generic ($step3, "Creating schema"); + + $step4 = parse_mysqli_dump($connection, "pandoradb_data.sql"); + check_generic ($step4, "Populating database"); + if (PHP_OS == "FreeBSD") { + $step_freebsd = adjust_paths_for_freebsd ($engine, $connection); + check_generic ($step_freebsd, "Adjusting paths in database for FreeBSD"); + } + + $random_password = random_name (8); + $host = $dbhost; // set default granted origin to the origin of the queries + if (($dbhost != 'localhost') && ($dbhost != '127.0.0.1')) + $host = $dbgrant; // if the granted origin is different from local machine, set the valid origin + $step5 = mysqli_query ($connection, "GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host + IDENTIFIED BY '".$random_password."'"); + mysqli_query ($connection, "FLUSH PRIVILEGES"); + check_generic ($step5, "Established privileges for user pandora. A new random password has been generated: $random_password
Please write it down, you will need to setup your Pandora FMS server, editing the /etc/pandora/pandora_server.conf file
"); + + $step6 = is_writable("include"); + check_generic ($step6, "Write permissions to save config file in './include'"); + + $cfgin = fopen ("include/config.inc.php","r"); + $cfgout = fopen ($pandora_config,"w"); + $config_contents = fread ($cfgin, filesize("include/config.inc.php")); + $dbtype = 'mysql'; + $config_new = ''; + $step7 = fputs ($cfgout, $config_new); + $step7 = $step7 + fputs ($cfgout, $config_contents); + if ($step7 > 0) + $step7 = 1; + fclose ($cfgin); + fclose ($cfgout); + chmod ($pandora_config, 0600); + check_generic ($step7, "Created new config file at '".$pandora_config."'"); + } + } + + if (($step7 + $step6 + $step5 + $step4 + $step3 + $step2 + $step1) == 7) { + $everything_ok = 1; + } + break; + } + echo "
"; + + if ($everything_ok == 1) { + echo "
"; + echo " + "; + echo "
"; + } + else { + $info = "
There were some problems. + Installation was not completed. +

Please correct failures before trying again. + All database "; + if ($engine == 'oracle') + $info .= "objects "; + else + $info .= "schemes "; + + $info .= "created in this step have been dropped.

+
"; + echo $info; + + switch ($engine) { + case 'mysql': + if (mysql_error() != "") { + echo "
ERROR: ". mysql_error().".
"; + } + + if ($step1 == 1) { + mysql_query ("DROP DATABASE $dbname"); + } + break; + case 'mysqli': + if (mysqli_error($connection) != "") { + echo "
ERROR: ". mysqli_error($connection).".
"; + } + + if ($step1 == 1) { + mysqli_query ($connection, "DROP DATABASE $dbname"); + } + break; + } + echo "
"; + } + echo "
"; + echo "
"; + echo " +
+
+ Pandora FMS is an Open Source Software project registered at + SourceForge +
+ "; +} + + +function install_step5() { + echo " +
+
+ " . print_logo_status (6,6) . " +
+

Installation complete

+

For security, you now must manually delete this installer + ('install.php') file before trying to access to your Pandora FMS console. +

You should also install Pandora FMS Servers before trying to monitor anything; + please read documentation on how to install it.

+

Default user is 'admin' with password 'pandora', + please change it both as soon as possible.

+

Don't forget to check http://pandorafms.com + for updates. +

Select if you want to rename 'install.php'.

+
+ + +
+


. +

+
"; + + echo "
+
+ Pandora FMS is an OpenSource Software project registered at + SourceForge +
+
"; +} +?>