From a46d4502e6dd5ecfd20975d15f66248317e3a945 Mon Sep 17 00:00:00 2001 From: Arturo Gonzalez Date: Mon, 6 Mar 2017 12:44:07 +0100 Subject: [PATCH] Removed oracle and postgre support on installation. Ticket #457 --- pandora_console/install.php | 452 +----------------------------------- 1 file changed, 1 insertion(+), 451 deletions(-) diff --git a/pandora_console/install.php b/pandora_console/install.php index 5c59b8e485..e965dfc5f5 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -71,7 +71,7 @@

$query
"; - - return 0; - } - - $query = ""; - } - } - - return 1; - } - else { - return 0; - } -} - -function parse_oracle_dump($connection, $url, $debug = false) { - if (file_exists($url)) { - $file_content = file($url); - - $query = ""; - $plsql_block = false; - - $datetime_tz_format = oci_parse($connection, 'alter session set NLS_TIMESTAMP_TZ_FORMAT =\'YYYY-MM-DD HH24:MI:SS\''); - $datetime_format = oci_parse($connection, 'alter session set NLS_TIMESTAMP_FORMAT =\'YYYY-MM-DD HH24:MI:SS\''); - $date_format = oci_parse($connection, 'alter session set NLS_DATE_FORMAT =\'YYYY-MM-DD HH24:MI:SS\''); - $decimal_separator = oci_parse($connection, 'alter session set NLS_NUMERIC_CHARACTERS =\',.\''); - - oci_execute($datetime_tz_format); - oci_execute($datetime_format); - oci_execute($date_format); - oci_execute($decimal_separator); - - oci_free_statement($datetime_tz_format); - oci_free_statement($datetime_format); - oci_free_statement($date_format); - oci_free_statement($decimal_separator); - - foreach ($file_content as $sql_line) { - $clean_line = trim($sql_line); - $comment = preg_match("/^(\s|\t)*--.*$/", $clean_line); - if ($comment) { - continue; - } - - if (empty($clean_line)) { - continue; - } - - //Support for PL/SQL blocks - if (preg_match("/^BEGIN$/", $clean_line)) { - $query .= $clean_line . ' '; - $plsql_block = true; - } - else { - $query .= $clean_line; - } - - //Check query's end with a back slash and any returns in the end of line or if it's a PL/SQL block 'END;;' string - if ((preg_match("/;[\040]*\$/", $clean_line) && !$plsql_block) || - (preg_match("/^END;;[\040]*\$/", $clean_line) && $plsql_block)) { - $plsql_block = false; - //Execute and clean buffer - - //Delete the last semicolon from current query - $query = substr($query, 0, strlen($query) - 1); - $sql = oci_parse($connection, $query); - $result = oci_execute($sql); - - if ($debug) { - var_dump($query); - } - - if (!$result) { - $e = oci_error($sql); - echo "
Errors creating schema:
"; - echo htmlentities($e['message'], ENT_QUOTES); - echo "
$query
"; - echo "
"; - - return 0; - } - - $query = ""; - oci_free_statement($sql); - } - } - - return 1; - } - else { - return 0; - } -} - -function oracle_drop_all_objects ($connection) { - //Drop all objects of the current installation - $stmt = oci_parse($connection, - "BEGIN " . - "FOR cur_rec IN (SELECT object_name, object_type " . - "FROM user_objects " . - "WHERE object_type IN ('TABLE', 'VIEW', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE', 'SNAPSHOT', 'MATERIALIZED VIEW')) LOOP " . - "BEGIN " . - "IF cur_rec.object_type = 'TABLE' THEN " . - "EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' \"' || cur_rec.object_name || '\" CASCADE CONSTRAINTS'; " . - "ELSE " . - "EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' \"' || cur_rec.object_name || '\"'; " . - "END IF; " . - "EXCEPTION " . - "WHEN OTHERS THEN " . - "DBMS_OUTPUT.put_line('FAILED: DROP ' || cur_rec.object_type || ' \"' || cur_rec.object_name || '\"'); " . - "END; " . - "END LOOP; " . - "END; "); - - $result = oci_execute($stmt); - oci_free_statement($stmt); - - return 0; -} - function random_name ($size) { $temp = ""; for ($a=0;$a< $size;$a++) @@ -612,8 +458,6 @@ function install_step2() { echo ""; check_extension("mysql", "PHP MySQL extension"); check_extension("mysqli", "PHP MySQL(mysqli) extension"); - check_extension("pgsql", "PHP PostgreSQL extension"); - check_extension("oci8", "PHP Oracle extension"); echo ""; if ($res > 0) { @@ -659,12 +503,6 @@ function install_step3() { if (extension_loaded("mysqli")) { $options .= ""; } - if (extension_loaded("pgsql")) { - $options .= ""; - } - if (extension_loaded("oci8")) { - $options .= ""; - } $error = false; if (empty($options)) { @@ -1034,289 +872,6 @@ function install_step4() { $everything_ok = 1; } break; - case 'oracle': - $connection = oci_connect($dbuser, $dbpassword, '//' . $dbhost . '/' . $dbname); - if (!$connection) { - check_generic(0, "Connection with Database"); - } - else { - check_generic(1, "Connection with Database"); - - // Drop all objects if needed - if ($dbdrop == 1) { - oracle_drop_all_objects($connection); - } - - $step1 = parse_oracle_dump($connection, "pandoradb.oracle.sql"); - - check_generic($step1, "Creating schema"); - - if ($step1) { - $step2 = parse_oracle_dump($connection, "pandoradb.data.oracle.sql"); - } - - check_generic ($step2, "Populating database"); - - if (PHP_OS == "FreeBSD") - { - $step_freebsd = adjust_paths_for_freebsd ($engine, $connection); - check_generic ($step_freebsd, "Adjusting paths in database for FreeBSD"); - } - - echo "
Please, you will need to setup your Pandora FMS server, editing the /etc/pandora/pandora_server.conf file and set database password.
"; - - if ($step2) { - $step3 = is_writable("include"); - } - - check_generic ($step3, "Write permissions to save config file in './include'"); - - if ($step3) { - $cfgin = fopen ("include/config.inc.php","r"); - $cfgout = fopen ($pandora_config,"w"); - $config_contents = fread ($cfgin, filesize("include/config.inc.php")); - $dbtype = 'oracle'; - $config_new = ''; - $step4 = fputs ($cfgout, $config_new); - $step4 = $step4 + fputs ($cfgout, $config_contents); - if ($step4 > 0) - $step4 = 1; - fclose ($cfgin); - fclose ($cfgout); - chmod ($pandora_config, 0600); - } - - check_generic ($step4, "Created new config file at '" . $pandora_config . "'"); - - if (($step4 + $step3 + $step2 + $step1) == 4) { - $everything_ok = 1; - } - - } - break; - case 'pgsql': - $step1 = $step2 = $step3 = $step4 = $step5 = $step6 = $step7 = 0; - - $connection = pg_connect("host='" . $dbhost . "' dbname='postgres' user='" . $dbuser . "' password='" . $dbpassword . "'"); - if ($connection === false) { - check_generic(0, "Connection with Database"); - } - else { - check_generic(1, "Connection with Database"); - - // Drop database if needed - if ($dbdrop == 1 && $dbaction == 'db_exist') { - $result = pg_query($connection, "DROP DATABASE \"" . $dbname . "\";"); - } - - if ($dbaction != 'db_exist' || $dbdrop == 1) { - pg_send_query($connection, "CREATE DATABASE \"" . $dbname . "\" WITH ENCODING 'utf8';"); - $result = pg_get_result($connection); - if (pg_result_status($result) != PGSQL_FATAL_ERROR) { - $step1 = 1; - } - - check_generic ($step1, "Creating database '$dbname'"); - } - else { - $step1 = 1; - } - - check_generic ($step1, "Creating database '$dbname'"); - - if ($step1 == 1) { - //Reopen DB because I don't know how to use DB in PostgreSQL - pg_close($connection); - - $connection = pg_connect("host='" . $dbhost . "' dbname='" . $dbname . - "' user='" . $dbuser . "' password='" . $dbpassword . "'"); - - if ($connection !== false) { - $step2 = 1; - } - } - - check_generic ($step2, "Opening database '$dbname'"); - - if ($step2) { - $step3 = parse_postgresql_dump($connection, "pandoradb.postgreSQL.sql"); - } - - check_generic($step3, "Creating schema"); - - if ($step3) { - $step4 = parse_postgresql_dump($connection, "pandoradb.data.postgreSQL.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"); - } - - if ($step4) { - $random_password = random_name (8); - - pg_query($connection, "DROP USER pandora"); - pg_send_query($connection, "CREATE USER pandora WITH PASSWORD '" . $random_password . "'"); - $result = pg_get_result($connection); - - if (pg_result_status($result) != PGSQL_FATAL_ERROR) { - //Set the privileges for DB - pg_send_query($connection, "GRANT ALL PRIVILEGES ON DATABASE pandora TO pandora;"); - $result = pg_get_result($connection); - - $setDBPrivileges = 0; - if (pg_result_status($result) != PGSQL_FATAL_ERROR) { - $setDBPrivileges = 1; - } - - if ($setDBPrivileges) { - //Set the privileges for each tables. - pg_send_query($connection, "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';"); - $result = pg_get_result($connection); - - $tables = array(); - while ($row = pg_fetch_assoc($result)) { - $tables[] = $row['table_name']; - } - - $correct = 1; - foreach ($tables as $table) { - pg_send_query($connection, "GRANT ALL PRIVILEGES ON TABLE " . $table . " TO pandora;"); - $result = pg_get_result($connection); - - if (pg_result_status($result) == PGSQL_FATAL_ERROR) { - $correct = 0; - break; - } - - //For each table make owner pandora - pg_send_query($connection, "ALTER TABLE " . $table . " OWNER TO pandora;"); - $result = pg_get_result($connection); - - if (pg_result_status($result) == PGSQL_FATAL_ERROR) { - $correct = 0; - break; - } - - //INI ----- Grant for secuences - pg_send_query($connection, "SELECT column_name FROM information_schema.columns WHERE table_name = '" . $table . "';"); - $result2 = pg_get_result($connection); - - $columns = array(); - while ($row = pg_fetch_assoc($result2)) { - $columns[] = $row['column_name']; - } - - //Check for each column if it have a sequence to grant - foreach ($columns as $column) { - pg_send_query($connection, "SELECT pg_get_serial_sequence('" . $table . "', '" . $column . "');"); - $result3 = pg_get_result($connection); - - $sequence = pg_fetch_assoc($result3); - if (!empty($sequence['pg_get_serial_sequence'])) { - pg_send_query($connection, "GRANT ALL PRIVILEGES ON SEQUENCE " . $sequence['pg_get_serial_sequence'] . " to pandora;"); - $result4 = pg_get_result($connection); - - if (pg_result_status($result4) == PGSQL_FATAL_ERROR) { - $correct = 0; - break; - } - } - } - //END ----- Grant for secuences - - } - - if ($correct) { - $step5 = 1; - } - } - } - } - - 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
"); - - if ($step5) { - $step6 = is_writable("include"); - } - - check_generic ($step6, "Write permissions to save config file in './include'"); - - if ($step6) { - $cfgin = fopen ("include/config.inc.php","r"); - $cfgout = fopen ($pandora_config,"w"); - $config_contents = fread ($cfgin, filesize("include/config.inc.php")); - $dbtype = 'postgresql'; - $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 ""; @@ -1358,11 +913,6 @@ function install_step4() { mysqli_query ($connection, "DROP DATABASE $dbname"); } break; - case 'pgsql': - break; - case 'oracle': - oracle_drop_all_objects($connection); - break; } echo "
"; }