<?php // Pandora FMS - the Free monitoring system // ======================================== // Copyright (c) 2004-2007 Sancho Lerena, slerena@openideas.info // Copyright (c) 2005-2007 Artica Soluciones Tecnologicas // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com // Copyright (c) 2006-2007 Jose Navarro jose@jnavarro.net // Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com // 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 version 2 // 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, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Pandora FMS - Installation Wizard</title> <meta http-equiv="expires" content="0"> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="author" content="Sancho Lerena, Raul Mateos"> <meta name="copyright" content="This is GPL software. Created by Sancho Lerena and others"> <meta name="keywords" content="pandora, fms, monitoring, network, system, GPL, software"> <meta name="robots" content="index, follow"> <link rel="icon" href="images/pandora.ico" type="image/ico"> <link rel="stylesheet" href="include/styles/pandora.css" type="text/css"> </head> <body background='images/backgrounds/background11.jpg'> <?PHP error_reporting(0); function install_step1() { echo " <div align='center' class='mt35'> <h1>Pandora FMS instalation wizard. Step #1 of 4</h1> <div id='wizard' style='height: 300px;'> <div id='install_box'> <h1>Welcome to Pandora FMS installation Wizard</h1> <p>This wizard helps you to quick install Pandora FMS console in your system.</p> <p>In three steps checks all dependencies and make your configuration for a quick installation.</p> <p>For more information, please refer to documentation.</p> <i>Pandora FMS Development team</i> "; if (file_exists("include/config.php")){ echo "<p><img src='images/info.gif'> Warning: You already have a config.php file. Configuracion and database would be overwritten if you continue.</p>"; } echo " </div> <div class='box'> <img src='images/logo_login.gif' border='0'><br> </div> <div class='box'> <img src='images/step0.png' border='0'> </div> <div id='install_box' style='margin-bottom: 25px;margin-left: 25px;'> <a href='install.php?step=2'><img align='right' src='images/arrow_next.png' border=0></a> </div> </div> <div id='foot'> <i>Pandora FMS is a Free Software project registered at <a target='_new' href='http://pandora.sourceforge.net'>SourceForge</a></i> </div> </div>"; } function check_extension ( $ext, $label ){ echo "<tr><td>"; echo "<img src='images/arrow.gif'> $label"; echo "</td><td>"; if (!extension_loaded($ext)){ echo "<img src='images/dot_red.gif'>"; return 1; } else { echo "<img src='images/dot_green.gif'>"; return 0; } echo "</td></tr>"; } function check_include ( $ext, $label ){ echo "<tr><td>"; echo "<img src='images/arrow.gif'> $label"; echo "</td><td>"; if (!include($ext)){ echo "<img src='images/dot_red.gif'>"; return 1; } else { echo "<img src='images/dot_green.gif'>"; return 0; } echo "</td></tr>"; } function check_exists ( $file, $label ){ echo "<tr><td>"; echo "<img src='images/arrow.gif'> $label"; echo "</td><td>"; if (!file_exists ($file)){ echo " <img src='images/dot_red.gif'>"; return 1; } else { echo " <img src='images/dot_green.gif'>"; return 0; } echo "</td></tr>"; } function check_generic ( $ok, $label ){ echo "<tr><td>"; echo "<img src='images/arrow.gif'> $label"; echo "</td><td>"; if ($ok == 0 ){ echo " <img src='images/dot_red.gif'>"; return 1; } else { echo " <img src='images/dot_green.gif'>"; return 0; } echo "</td></tr>"; } function check_variable ( $var, $value, $label, $mode ){ echo "<tr><td>"; echo "<img src='images/arrow.gif'> $label"; echo "</td><td>"; if ($mode == 1){ if ($var >= $value){ echo " <img src='images/dot_green.gif'>"; return 0; } else { echo " <img src='images/dot_red.gif'>"; return 1; } } elseif ($var == $value){ echo " <img src='images/dot_green.gif'>"; return 0; } else { echo " <img src='images/dot_red.gif'>"; return 1; } echo "</td></tr>"; } function install_step2() { echo " <div align='center' class='mt35'> <h1>Pandora FMS console instalation wizard. Step #2 of 4</h1> <div id='wizard' style='height: 250px;'> <div id='install_box'>"; echo "<h1>Checking software dependencies</h1>"; echo "<table border=0 width=230>"; $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 smmp extension"); $res += check_extension("session","PHP session extension"); $res += check_include("PEAR.php","PEAR PHP Library"); //$res += check_exists ("/usr/bin/pdflatex","PDF Latex in /usr/bin/pdflatex"); echo "</table> </div> <div class='box'> <img src='images/logo_login.gif' border='0'' alt=''> </div> <div class='box'> <img src='images/step1.png' border='0' alt=''> </div> <div id='install_box' style='margin-bottom: 25px;margin-left: 25px;'>"; if ($res > 0) { echo "<p><img src='images/info.gif'> You have some uncomplete dependencies. Please correct it or this installer could not finish your installation. </p> Ignore it. <a href='install.php?step=3'>Force install Step #3</a>"; } else { echo "<a href='install.php?step=3'><img align='right' src='images/arrow_next.png' border=0 alt=''></a>"; } echo " </div> </div> </div> <div id='foot'>"; echo '<i>Pandora FMS is a Free Software project registered at <a target="_new" href="http://pandora.sourceforge.net">SourceForge</a></i>'; echo "</div></div>"; } function install_step3() { echo " <div align='center' class='mt35'> <h1>Pandora FMS console instalation wizard. Step #3 of 4 </h1> <div id='wizard' style='height: 500px;'> <div id='install_box'> <h1>Environment and database setup</h1> <p> This wizard will create your Pandora FMS database, and populate it with data needed to run for first time. You need a privileged user to create database schema, this is usually root user. Information about <i>root</i> user will not be used or stored for anymore. </p> <p> Now, please, complete all details to configure your database and enviroment setup </p> <form method='post' action='install.php?step=4'> <div>DB User with privileges on MySQL</div> <input class='login' type='text' name='user' value=''> <div>DB Password for this user</div> <input class='login' type='passwordzx' name='pass' value=''> <div>DB Hostname of MySQL</div> <input class='login' type='text' name='host' value=''> <div>Full path to HTTP publication directory.<br> <span class='f9b'>For example /srv/www/hdtocs/</span> </div> <input class='login' type='text' name='path' style='width: 190px;' value=''> <div>Full local URL to Pandora FMS Console. <br> <span class='f9b'>For example http://localhost/pandora_console</span> </div> <input class='login' type='text' name='url' style='width: 250px;' value=''> <div><input align='right' style='align: right; width:70px; height: 16px;' type='image' src='images/arrow_next.png' value='Step #4'></div> </form> </div> <div class='box'> <img src='images/logo_login.gif' border='0' alt=''> </div> <div class='box'> <img src='images/step2.png' border='0' alt=''> </div> </div> <div id='foot'> <i>Pandora FMS is a Free Software project registered at <a target='_ne' href='http://pandora.sourceforge.net'>SourceForge</a></i> </div> </div>"; } 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_step4() { $db_name = "pandora"; $pandora_config = "include/config.php"; if ( (! isset($_POST["user"])) || (! isset($_POST["host"])) || (! isset($_POST["pass"])) ) { $dbpassword = ""; $dbuser = ""; $dbhost = ""; } else { $dbpassword = $_POST["pass"]; $dbuser = $_POST["user"]; $dbhost = $_POST["host"]; 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 " <div align='center' class='mt35'> <h1>Pandora FMS Console instalation wizard. Step #4 of 4 </h1> <div id='wizard' style='height: 320px;'> <div id='install_box'> <h1>Creating database and default configuration file</h1> <table>"; if (! mysql_connect ($dbhost,$dbuser,$dbpassword)) { check_generic ( 0, "Connection with Database"); } else { check_generic ( 1, "Connection with Database"); // Create schema $step1 = mysql_query ("CREATE DATABASE $db_name"); check_generic ($step1, "Creating database '$db_name'"); if ($step1 == 1){ $step2 = mysql_select_db($db_name); check_generic ($step2, "Opening database '$db_name'"); $step3 = parse_mysql_dump("pandoradb.sql"); check_generic ($step3, "Creating schema"); $step4 = parse_mysql_dump("pandoradb_data.sql"); check_generic ($step4, "Populating database"); $random_password = random_name (8); $step5 = mysql_query ("GRANT ALL PRIVILEGES ON $db_name.* to pandora@localhost IDENTIFIED BY '".$random_password."'"); mysql_query ("FLUSH PRIVILEGES"); check_generic ($step5, "Established privileges for user pandora"); $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")); $config_new = '<?PHP // Begin of automatic config file $dbname="'.$db_name.'"; // MySQL DataBase name $dbuser="pandora"; // DB User $dbpassword="'.$random_password.'"; // DB Password $dbhost="'.$dbhost.'"; // DB Host $config_homedir="'.$path.'"; // Config homedir $BASE_URL="'.$url.'"; // Base URL // End of automatic config file ?>'; $step7 = fputs ($cfgout, $config_new); $step7 = $step7 + fputs ($cfgout, $config_contents); if ($step7 > 0) $step7 = 1; fclose ($cfgin); fclose ($cfgout); check_generic ($step7, "Created new config file at '".$pandora_config."'"); } } if (($step7 + $step6 + $step5 + $step4 + $step3 + $step2 + $step1) == 7) { $everything_ok = 1; } echo "</table></div> <div class='box'> <img src='images/logo_login.gif' border='0' alt=''> </div> <div class='box'> <img src='images/step3.png' border='0' alt=''> </div> <div id='install_box' style='margin-bottom: 25px;margin-left: 25px;'>"; if ($everything_ok == 1) { echo "<a href='install.php?step=5'><img align='right' src='images/arrow_next.png' border=0 class=''></a>"; } else { echo "<img src='images/info.gif'> You get some problems. Installation is not completed. <p>Please correct failures before trying again. All database schemes created in this step have been dropped.</p>"; if (mysql_error() != "") echo "<p><img src='images/info.gif'> <b>ERROR:</b> ". mysql_error()."</p>"; mysql_query ("DROP DATABASE $db_name"); } echo " </div> </div> <div id='foot'> <i>Pandora FMS is a Free Software project registered at <a target='_new' href='http://pandora.sourceforge.net'>SourceForge</a></i> </div> </div>"; } function install_step5() { echo " <div align='center' class='mt35'> <h1>Pandora FMS console instalation wizard. Finished</h1> <div id='wizard' style='height: 300px;'> <div id='install_box'> <h1>Installation complete</h1> <p>You now must delete manually this installer for security, ('install.php') and rename your new config file '".$pandora_config."' to 'config.php' before trying to access to your Pandora FMS console. <p>Don't forget to check <a href='http://pandora.sourceforge.net'>http://pandora.sourceforge.net</a> for updates. <p><a href='index.php'>Click here to access to your Pandora FMS console</A></p> </div> <div class='box'> <img src='images/logo_login.gif' border='0'></a><br> </div> <div class='box'> <img src='images/step4.png' border='0'><br> </div> </div> <div id='foot'> <i>Pandora FMS is a Free Software project registered at <a target='_new' href='http://pandora.sourceforge.net'>SourceForge</a></i> </div> </div>"; } 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; } } ?>