add compatibility for mariadb-dump executable instead of mysqldump
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
@@ -115,6 +115,21 @@ class ExportCron extends FroxlorCron
|
||||
|
||||
$has_dbs = false;
|
||||
$current_dbserver = -1;
|
||||
|
||||
// look for mysqldump
|
||||
$section = 'mysqldump';
|
||||
if (file_exists("/usr/bin/mysqldump")) {
|
||||
$mysql_dump = '/usr/bin/mysqldump';
|
||||
} elseif (file_exists("/usr/local/bin/mysqldump")) {
|
||||
$mysql_dump = '/usr/local/bin/mysqldump';
|
||||
} elseif (file_exists("/usr/bin/mariadb-dump")) {
|
||||
$mysql_dump = '/usr/bin/mariadb-dump';
|
||||
$section = 'mariadb-dump';
|
||||
}
|
||||
if (!isset($mysql_dump)) {
|
||||
$cronlog->logAction(FroxlorLogger::CRON_ACTION, LOG_ERR, 'mysqldump/mariadb-dump executable could not be found. Please install mysql-client/mariadb-client package.');
|
||||
} else {
|
||||
|
||||
while ($row = $sel_stmt->fetch()) {
|
||||
// Get sql_root data for the specific database-server the database resides on
|
||||
if ($current_dbserver != $row['dbserver']) {
|
||||
@@ -124,7 +139,7 @@ class ExportCron extends FroxlorCron
|
||||
Database::needRoot(false);
|
||||
// create temporary mysql-defaults file for the connection-credentials/details
|
||||
$mysqlcnf_file = tempnam("/tmp", "frx");
|
||||
$mysqlcnf = "[mysqldump]\npassword=" . $sql_root['passwd'] . "\nhost=" . $sql_root['host'] . "\n";
|
||||
$mysqlcnf = "[".$section."]\npassword=" . $sql_root['passwd'] . "\nhost=" . $sql_root['host'] . "\n";
|
||||
if (!empty($sql_root['port'])) {
|
||||
$mysqlcnf .= "port=" . $sql_root['port'] . "\n";
|
||||
} elseif (!empty($sql_root['socket'])) {
|
||||
@@ -132,14 +147,15 @@ class ExportCron extends FroxlorCron
|
||||
}
|
||||
file_put_contents($mysqlcnf_file, $mysqlcnf);
|
||||
}
|
||||
$cronlog->logAction(FroxlorLogger::CRON_ACTION, LOG_DEBUG, 'shell> mysqldump -u ' . escapeshellarg($sql_root['user']) . ' -pXXXXX ' . $row['databasename'] . ' > ' . FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'));
|
||||
$cronlog->logAction(FroxlorLogger::CRON_ACTION, LOG_DEBUG, 'shell> '.basename($mysql_dump) . ' -u ' . escapeshellarg($sql_root['user']) . ' -pXXXXX ' . $row['databasename'] . ' > ' . FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'));
|
||||
$bool_false = false;
|
||||
FileDir::safe_exec('mysqldump --defaults-file=' . escapeshellarg($mysqlcnf_file) . ' -u ' . escapeshellarg($sql_root['user']) . ' ' . $row['databasename'] . ' > ' . FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'), $bool_false, [
|
||||
FileDir::safe_exec($mysql_dump . ' --defaults-file=' . escapeshellarg($mysqlcnf_file) . ' -u ' . escapeshellarg($sql_root['user']) . ' ' . $row['databasename'] . ' > ' . FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'), $bool_false, [
|
||||
'>'
|
||||
]);
|
||||
$has_dbs = true;
|
||||
$current_dbserver = $row['dbserver'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($has_dbs) {
|
||||
$create_export_tar_data .= './mysql ';
|
||||
|
||||
@@ -176,15 +176,19 @@ class Core
|
||||
$filename = "/tmp/froxlor_backup_" . date('YmdHi') . ".sql";
|
||||
|
||||
// look for mysqldump
|
||||
$section = 'mysqldump';
|
||||
if (file_exists("/usr/bin/mysqldump")) {
|
||||
$mysql_dump = '/usr/bin/mysqldump';
|
||||
} elseif (file_exists("/usr/local/bin/mysqldump")) {
|
||||
$mysql_dump = '/usr/local/bin/mysqldump';
|
||||
} elseif (file_exists("/usr/bin/mariadb-dump")) {
|
||||
$mysql_dump = '/usr/bin/mariadb-dump';
|
||||
$section = 'mariadb-dump';
|
||||
}
|
||||
|
||||
// create temporary .cnf file
|
||||
$cnffilename = "/tmp/froxlor_dump.cnf";
|
||||
$dumpcnf = "[mysqldump]" . PHP_EOL . "password=\"" . $this->validatedData['mysql_root_pass'] . "\"" . PHP_EOL;
|
||||
$dumpcnf = "[".$section."]" . PHP_EOL . "password=\"" . $this->validatedData['mysql_root_pass'] . "\"" . PHP_EOL;
|
||||
file_put_contents($cnffilename, $dumpcnf);
|
||||
|
||||
// make the backup
|
||||
@@ -195,7 +199,7 @@ class Core
|
||||
@unlink($cnffilename);
|
||||
if (stristr(implode(" ", $output), "error")) {
|
||||
throw new Exception(lng('install.errors.mysqldump_backup_failed'));
|
||||
} else if (!file_exists($filename)) {
|
||||
} elseif (!file_exists($filename)) {
|
||||
throw new Exception(lng('install.errors.sql_backup_file_missing'));
|
||||
}
|
||||
} else {
|
||||
@@ -379,7 +383,7 @@ class Core
|
||||
$this->updateSetting($upd_stmt, 1, 'system', 'leenabled');
|
||||
$this->updateSetting($upd_stmt, 1, 'system', 'le_froxlor_enabled');
|
||||
}
|
||||
$this->updateSetting($upd_stmt, $this->validatedData['servername'], 'system', 'hostname');
|
||||
$this->updateSetting($upd_stmt, strtolower($this->validatedData['servername']), 'system', 'hostname');
|
||||
$this->updateSetting($upd_stmt, 'en', 'panel', 'standardlanguage'); // TODO: set language
|
||||
$this->updateSetting($upd_stmt, $this->validatedData['mysql_access_host'], 'system', 'mysql_access_host');
|
||||
$this->updateSetting($upd_stmt, $this->validatedData['webserver'], 'system', 'webserver');
|
||||
|
||||
Reference in New Issue
Block a user