function restore_dump($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DB_NAME, $MYSQL_CHARSET) { // Try via command-line mysql first $err_code = 127; $path = dirname(__FILE__) . DIRECTORY_SEPARATOR; $exec_str = "mysql --host=" . escapeshellarg($MYSQL_HOST) . " --user="******" --password="******" --default-character-set={$MYSQL_CHARSET} " : "") . " " . escapeshellarg($MYSQL_DB_NAME) . " < {$path}netcat.sql 2>&1"; exec($exec_str, $output, $err_code); if ($err_code) { $mysql_dump = new MYSQL_DUMP($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_CHARSET); $mysql_dump->dumpDB($MYSQL_DB_NAME); if ($mysql_dump->restoreDB("{$path}netcat.sql") == false) { echo "Failed to import MySQL dump:<br />\n"; echo $mysql_dump->error(); echo "Cmdline output: \n<br />\n"; foreach ($output as $l) { echo $l . "\n<br />"; } echo "\n<br />\n"; return false; } } return true; }
// increase memory limit ini_set('memory_limit', '64M'); $backup_dir = USERS_DIR . 'backup/'; if (!is_dir($backup_dir)) { mkdir($backup_dir); } // json encode settings global $DB, $SETTINGS, $PLUGINS; $settings = array('SETTINGS' => $SETTINGS); if ($type == 'all') { $settings['PLUGINS'] = $PLUGINS; } $settings = json_encode($settings); // backup database $dump = new MYSQL_DUMP($DB['host'], $DB['user'], $DB['pass']); $sql = $dump->dumpDB($DB['name']); // backup files $zip = new zipfile(); $files = scandir($dir); function zip_files($files, $dir = '', $zdir = '', $zip) { foreach ($files as $file) { if ($file == '.' || $file == '..' || $file == 'backup') { continue; } if (is_dir($dir . $file)) { $zip->addDir($zdir . $file); zip_files(scandir($dir . $file), $dir . $file . '/', $zdir . $file . '/', $zip); } else { $zip->addFile(file_get_contents($dir . $file), $zdir . $file); }
$error = new Error("Setup directory exists. You either haven't installed your guestbook, or forgot to delete the setup folder."); die($error->showError()); } if (!file_exists("../../../data.php")) { $error = new Error("Data file doesn't exist. Have you installed your guestbook yet?"); die($error->showError()); } require_once '../iden.php'; if (@$magicBackup != "0xNOWALLEALLOWED") { die("This file cannot be executed directly"); } unset($magicBackup); include_once '../../../classes/database/mysql_dump.inc.php'; $mysql_dump = new MYSQL_DUMP(base64_decode($data['dbHost']), base64_decode($data['dbUsername']), base64_decode($data['dbPassword'])); $data['dbDatabaseDecoded'] = base64_decode($data['dbDatabase']); $sql1 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['config'], HAR_ALL_OPTIONS); $sql2 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['admin'], HAR_ALL_OPTIONS); $sql3 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['posts'], HAR_ALL_OPTIONS); $sql4 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['ip'], HAR_ALL_OPTIONS); $sql5 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['censored'], HAR_ALL_OPTIONS); $sql6 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['smilies'], HAR_ALL_OPTIONS); $sql7 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['trash'], HAR_ALL_OPTIONS); $sql8 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['reply'], HAR_ALL_OPTIONS); $sql9 = $mysql_dump->dumpDB($data['dbDatabaseDecoded'], $dbTables['backupLog'], HAR_ALL_OPTIONS); unset($data['dbDatabaseDecoded']); $sql = $sql1 . $sql2 . $sql3 . $sql4 . $sql5 . $sql6 . $sql7 . $sql8 . $sql9; $sql_file = "angora_" . time() . ".sql"; $mysql_dump->download_sql($sql, $sql_file); include_once '../../../classes/functions.php'; $queryMsg = "insert into " . $dbTables['backupLog'] . " (id, date, operation) values (NULL, '" . secureVar(time(), 'sql') . "', '" . secureVar('b', 'sql') . "');"; $con->modify($queryMsg);