'test' . rand(1, 200), 'type' => 'varchar (255)', 'NULL' => false)); $status = 1; $sql = 'ALTER TABLE `' . $table . '` ADD `' . $column['name'] . '`'; if (!db_column_exists($table, $column['name'], false)) { $status = db_add_column($table, $column, false); } elseif (!$ignore) { $status = 2; } else { $status = 1; } db_install_add_cache ($status, $sql); } function db_install_add_key ($table, $type, $key, $columns) { if (!is_array($columns)) { $columns = array($columns); } $sql = 'ALTER TABLE `' . $table . '` ADD ' . $type . ' ' . $key . '(' . implode(',', $columns) . ')'; if (db_index_exists($table, $key, false)) { $type = str_ireplace('UNIQUE ', '', $type); db_install_execute("ALTER TABLE $table DROP $type $key"); } db_install_execute($sql); } function db_install_drop_table ($table) { $sql = 'DROP TABLE `' . $table . '`'; if (db_table_exists($table, false)) { db_install_execute ($sql); } else { db_install_add_cache (2, $sql); } } function db_install_rename_table ($table, $newname) { $sql = 'RENAME TABLE `' . $table . '` TO `' . $newname . '`'; if (db_table_exists($table, false) && !db_table_exists($newname, false)) { db_install_execute ($sql); } else { db_install_add_cache (2, $sql); } } function db_install_drop_column ($table, $column) { $sql = 'ALTER TABLE `' . $table . '` DROP `' . $column . '`'; if (db_column_exists($table, $column, false)) { $status = (db_remove_column ($table, $column) ? 1 : 0); } else { $status = 2; } db_install_add_cache ($status, $sql); } function db_install_add_cache ($status, $sql) { global $cacti_upgrade_version, $session; // check if web upgrade or cli if (isset($_SESSION)) { // add query to upgrade results array by version to the web session if (! array_key_exists('cacti_db_install_cache', $_SESSION)) { $_SESSION['cacti_db_install_cache'] = array(); } if (! array_key_exists($cacti_upgrade_version, $_SESSION['cacti_db_install_cache'])) { $_SESSION['cacti_db_install_cache'][$cacti_upgrade_version] = array(); } $_SESSION['cacti_db_install_cache'][$cacti_upgrade_version][] = array('status' => $status, 'sql' => $sql); } else { // add query to upgrade results array by version to the cli global session if (! array_key_exists('cacti_db_install_cache', $session)) { $session['cacti_db_install_cache'] = array(); } if (! array_key_exists($cacti_upgrade_version, $session['cacti_db_install_cache'])) { $session['cacti_db_install_cache'][$cacti_upgrade_version] = array(); } $session['cacti_db_install_cache'][$cacti_upgrade_version][] = array('status' => $status, 'sql' => $sql); } } function find_best_path($binary_name) { global $config; if ($config['cacti_server_os'] == 'win32') { $search_paths = array( 'c:/usr/bin', 'c:/cacti', 'c:/rrdtool', 'c:/spine', 'c:/php', 'c:/net-snmp/bin', 'c:/progra~1/net-snmp/bin', 'c:/progra~1/php', 'c:/progra~1/spine', 'c:/progra~1/spine/bin', 'd:/usr/bin', 'd:/cacti', 'd:/rrdtool', 'd:/spine', 'd:/php', 'd:/net-snmp/bin', 'd:/progra~1/net-snmp/bin', 'd:/progra~1/php', 'd:/progra~1/spine', 'd:/progra~1/spine/bin' ); } else { $search_paths = array( '/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin', '/usr/local/spine/bin', '/usr/spine/bin' ); } for ($i=0; $i 0) { if (preg_match('/^RRDtool 1\.7/', $out_array[0])) { $input['rrdtool_version']['default'] = 'rrd-1.7.x'; }else if (preg_match('/^RRDtool 1\.6/', $out_array[0])) { $input['rrdtool_version']['default'] = 'rrd-1.6.x'; }else if (preg_match('/^RRDtool 1\.5/', $out_array[0])) { $input['rrdtool_version']['default'] = 'rrd-1.5.x'; }else if (preg_match('/^RRDtool 1\.4\./', $out_array[0])) { $input['rrdtool_version']['default'] = 'rrd-1.4.x'; }else if (preg_match('/^RRDtool 1\.3\./', $out_array[0])) { $input['rrdtool_version']['default'] = 'rrd-1.3.x'; } } } return $input; } function remote_update_config_file() { global $config, $rdatabase_type, $rdatabase_hostname, $rdatabase_username, $rdatabase_password, $rdatabase_default, $rdatabase_type, $rdatabase_port, $rdatabase_ssl; global $database_type, $database_hostname, $database_username, $database_password, $database_default, $database_type, $database_port, $database_ssl; $written = false; $newfile = array(); $config_file = $config['base_path'] . '/include/config.php'; $connection = db_connect_real($rdatabase_hostname, $rdatabase_username, $rdatabase_password, $rdatabase_default, $rdatabase_type, $rdatabase_port, $rdatabase_ssl); if (is_object($connection)) { if (function_exists('gethostname')) { $hostname = gethostname(); } else { $hostname = php_uname('n'); } // Check for an existing poller $poller_id = db_fetch_cell_prepared('SELECT id FROM poller WHERE hostname = ?', array($hostname), true, $connection); if (empty($poller_id)) { $save['name'] = 'New Poller'; $save['hostname'] = $hostname; $save['dbdefault'] = $database_default; $save['dbhost'] = $database_hostname; $save['dbuser'] = $database_username; $save['dbpass'] = $database_password; $save['dbport'] = $database_port; $save['dbssl'] = $database_ssl; $poller_id = sql_save($save, 'poller', 'id', TRUE, $connection); } if (!empty($poller_id)) { if (is_writable($config_file)) { $file_array = file($config_file); if (sizeof($file_array)) { foreach($file_array as $line) { if (strpos(trim($line), "\$poller_id") !== false) { $newfile[] = "\$poller_id = $poller_id;\n"; } else { $newfile[] = $line; } } $fp = fopen($config_file, 'w'); foreach($newfile as $line) { fwrite($fp, $line); } fclose($fp); $written = true; } } } db_close($connection); } return $written; } function import_colors() { global $config; if (! file_exists(dirname(__FILE__) . '/color.csv')) { return false; } $contents = file(dirname(__FILE__) . '/colors.csv'); if (count($contents)) { foreach($contents as $line) { $line = trim($line); $parts = explode(',',$line); $natural = $parts[0]; $hex = $parts[1]; $name = $parts[2]; $id = db_fetch_cell("SELECT hex FROM colors WHERE hex='$hex'"); if (!empty($id)) { db_execute("UPDATE colors SET name='$name', read_only='on' WHERE hex='$hex'"); } else { db_execute("INSERT INTO colors (name, hex, read_only) VALUES ('$name', '$hex', 'on')"); } } } return true; }