"; 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 ""; echo " $label "; echo ""; if ($ok == 0 ){ echo " "; return 1; } else { echo " "; return 0; } echo ""; } 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 migrate_data (){ check_generic (1, "Updating tagente_datos table"); $sql1="SELECT * FROM tagente_datos WHERE utimestamp = 0 "; $result1=mysql_query($sql1); while ($row1=mysql_fetch_array($result1)){ $id = $row1["id_agente_datos"]; $timestamp = $row1["timestamp"]; $utimestamp = strtotime($timestamp); $sql2="UPDATE tagente_datos SET utimestamp = '$utimestamp' WHERE id_agente_datos = $id"; mysql_query($sql2); } flush(); check_generic (1,"Updating tagente_datos_string table"); $sql1="SELECT * FROM tagente_datos_string WHERE utimestamp = 0 "; $result1=mysql_query($sql1); while ($row1=mysql_fetch_array($result1)){ $id = $row1["id_tagente_datos_string"]; $timestamp = $row1["timestamp"]; $utimestamp = strtotime($timestamp); $sql2="UPDATE tagente_datos SET utimestamp = '$utimestamp' WHERE id_tagente_datos_string = $id"; mysql_query($sql2); } flush(); check_generic (1,"Updating tagente_estado table"); $sql1="SELECT * FROM tagente_estado WHERE utimestamp = 0"; $result1=mysql_query($sql1); while ($row1=mysql_fetch_array($result1)){ $id = $row1["id_agente_estado"]; $timestamp = $row1["timestamp"]; $utimestamp = strtotime($timestamp); $sql2="UPDATE tagente_estado SET utimestamp = '$utimestamp', last_execution_try = '$utimestamp' WHERE id_agente_estado = $id"; mysql_query($sql2); } } 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)) 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 install_step1() { echo "

Pandora FMS upgrade wizard. Step #1 of 5

Welcome to Pandora FMS 1.3 upgrade Wizard

This wizard helps you to quick upgrade Pandora FMS console in your system. This tool is only to upgrade Pandora FMS 1.2 to Pandora FMS 1.3

For more information, please refer to documentation.

Pandora FMS Development Team
Before start with upgrade process. Please STOP NOW all your Pandora FMS
"; if (file_exists("include/config.php")){ echo "
Warning: You already have a config.php file in this directory, please backup and move it before continue.
"; } echo "
Warning: This upgrade tool will overwrite and change your existing Pandora FMS Database and only could be used to upgrade fron Pandora FMS 1.2 to Pandora FMS 1.3. Before continue, please be sure that you have made a SQL backup using mysqldump system tool as described in documentation.
"; echo "

Pandora FMS is a Free Software project registered at SourceForge
"; } function install_step2() { echo "

Pandora FMS upgrade wizard. Step #2 of 5

"; echo "

Checking software dependencies

"; echo ""; $res = 0; $res += check_variable(phpversion(),"4.3","PHP version >= 4.3.x",1); $res += check_extension("mysql","PHP MySQL extension"); //$res += check_extension("curl","PHP Curl extension"); $res += check_extension("gd","PHP gd extension"); $res += check_extension("snmp","PHP SNMP extension"); $res += check_extension("session","PHP session extension"); $res += check_include("PEAR.php","PEAR PHP Library"); $step6 = is_writable("include"); check_generic ($step6, "Write permissions to save config file in './include'"); if ($step6 == 0) $res++; //$res += check_exists ("/usr/bin/pdflatex","PDF Latex in /usr/bin/pdflatex"); echo "

"; if ($res > 0) { echo "
You have some uncomplete dependencies. Please correct them or this wizard tool will not be able to finish your installation.

Ignore it. Ignore it and go to Step #3"; } else { echo ""; } echo "
Pandora FMS is a Free Software project registered at SourceForge
"; } function install_step3() { echo "

Pandora FMS upgrade wizard. Step #3 of 5

Environment and database setup

This wizard will transform your Pandora FMS database, and populate it with all the data needed to run for the first time, modifying existing data to be used by the new version.

You need a user to modify and create database schema, this is usually the existant pandora user, you could check on config.php file of Pandora FMS 1.2 installation.

"; echo "
DB User with privileges on MySQL
DB Password for this user
DB Hostname of MySQL
DB Name (pandora by default)
Full path to HTTP publication directory
For example /var/www/pandora_console/. Needed for graphs and attachments.
Full local URL to Pandora FMS Console
For example http://localhost/pandora_console

Pandora FMS is a Free 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"])) ) { $dbpassword = ""; $dbuser = ""; $dbhost = ""; $dbname = ""; } else { $dbpassword = $_POST["pass"]; $dbuser = $_POST["user"]; $dbhost = $_POST["host"]; $dbname = $_POST["dbname"]; if (isset($_POST["url"])) $url = $_POST["url"]; else $url = "http://localhost"; if (isset($_POST["path"])) $path = $_POST["path"]; else $path = "/var/www"; } $everything_ok = 0; $step1=0; $step2=0; $step3=0; $step4=0; $step5=0; $step6=0; $step7=0; echo "

Pandora FMS upgrade wizard. Step #4 of 5

Modifing database schema and adding data

This could take a while... please wait "; if (! mysql_connect ($dbhost,$dbuser,$dbpassword)) { check_generic ( 0, "Connection with Database"); } else { check_generic ( 1, "Connection with Database"); // Create schema if (mysql_select_db($dbname)) $step2 = 1; else $step2 = 0; check_generic ($step2, "Opening database '$dbname'"); flush(); $step3 = (parse_mysql_dump("pandoradb_12_to_13.sql")); check_generic ($step3, "Schema manipulation"); flush(); $step4 = parse_mysql_dump("pandoradbdata_12_to_13.sql"); check_generic ($step4, "Populating new schema and converting data"); flush(); $cfgin = fopen ("include/config.inc.php","r"); $cfgout = fopen ($pandora_config,"w"); $config_contents = fread ($cfgin, filesize("include/config.inc.php")); $config_new = ''; $step5 = fputs ($cfgout, $config_new); $step5 = $step5 + fputs ($cfgout, $config_contents); if ($step5 > 0) $step5 = 1; fclose ($cfgin); fclose ($cfgout); chmod ($pandora_config, 0600); check_generic ($step5, "Created new config file at '".$pandora_config."'"); } if (($step5 + $step4 + $step3 + $step2 ) == 4) { $everything_ok = 1; migrate_data(); } echo "

"; if ($everything_ok == 1) { echo "

"; } else { echo "
There was some problems. Installation is not completed.

Please correct failures, and restore original DB before trying again.

"; if (mysql_error() != "") echo "
ERROR: ". mysql_error().".
"; } echo "
Pandora FMS is a Free Software project registered at SourceForge
"; } function install_step5() { echo "

Pandora FMS upgrade wizard. Finished

Upgrade complete!

You now must delete manually installer and upgrade tool ('install.php, upgrade.php') files for security before trying to access to your Pandora FMS console.

Don't forget to check http://pandora.sourceforge.net for updates.

Click here to access to your Pandora FMS console



Pandora FMS is a Free Software project registered at SourceForge
"; } // --------------- // Main page code // --------------- if (! isset($_GET["step"])){ install_step1(); } else { $step = $_GET["step"]; switch ($step) { case 2: install_step2(); break; case 3: install_step3(); break; case 4: install_step4(); break; case 5: install_step5(); break; case 6: install_step6(); break; } } ?>