From ef7da5380659c0208600db6a537b744f200a8472 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Thu, 28 Apr 2016 10:42:23 +0200 Subject: [PATCH] change directory before creating tarball to avoid having complete paths in it Signed-off-by: Michael Kaufmann (d00p) --- .../filedir/function.createCustomerBackup.php | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/functions/filedir/function.createCustomerBackup.php b/lib/functions/filedir/function.createCustomerBackup.php index 20cff168..64f277e7 100644 --- a/lib/functions/filedir/function.createCustomerBackup.php +++ b/lib/functions/filedir/function.createCustomerBackup.php @@ -32,7 +32,7 @@ function createCustomerBackup($data = null, $customerdocroot = null, &$cronlog) $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'Creating tmp-folder "'.$tmpdir.'"'); $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> mkdir -p ' . escapeshellarg($tmpdir)); safe_exec('mkdir -p ' . escapeshellarg($tmpdir)); - $create_backup_tar = false; + $create_backup_tar_data = ""; // MySQL databases if ($data['backup_dbs'] == 1) { @@ -52,11 +52,16 @@ function createCustomerBackup($data = null, $customerdocroot = null, &$cronlog) $sql_root = Database::getSqlData(); Database::needRoot(false); + $has_dbs = false; while ($row = $sel_stmt->fetch()) { $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> mysqldump -u ' . escapeshellarg($sql_root['user']) . ' -pXXXXX ' . $row['databasename'] . ' > ' . makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql')); $bool_false = false; safe_exec('mysqldump -u ' . escapeshellarg($sql_root['user']) . ' -p' . $sql_root['passwd'] . ' ' . $row['databasename'] . ' > ' . makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'), $bool_false, array('>')); - $create_backup_tar = true; + $has_dbs = true; + } + + if ($has_dbs) { + $create_backup_tar_data .= makeCorrectDir($tmpdir . '/mysql'); } unset($sql_root); @@ -80,9 +85,9 @@ function createCustomerBackup($data = null, $customerdocroot = null, &$cronlog) } if (! empty($tar_file_list)) { - $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar cfvz ' . escapeshellarg(makeCorrectFile($tmpdir . '/mail/' . $data['loginname'] . '-mail.tar.gz')) . ' ' . escapeshellarg(trim($tar_file_list))); - safe_exec('tar cfz ' . escapeshellarg(makeCorrectFile($tmpdir . '/mail/' . $data['loginname'] . '-mail.tar.gz')) . ' ' . escapeshellarg(trim($tar_file_list))); - $create_backup_tar = true; + $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar -C '.escapeshellarg($tmpdir).' cfvz ' . escapeshellarg(makeCorrectFile($tmpdir . '/mail/' . $data['loginname'] . '-mail.tar.gz')) . ' ' . escapeshellarg(trim($tar_file_list))); + safe_exec('tar -C '.escapeshellarg($tmpdir).' cfz ' . escapeshellarg(makeCorrectFile($tmpdir . '/mail/' . $data['loginname'] . '-mail.tar.gz')) . ' ' . escapeshellarg(trim($tar_file_list))); + $create_backup_tar_data .= makeCorrectDir($tmpdir . '/mail'); } } @@ -91,18 +96,18 @@ function createCustomerBackup($data = null, $customerdocroot = null, &$cronlog) $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'Creating web-folder "'.makeCorrectDir($tmpdir . '/web').'"'); safe_exec('mkdir -p ' . escapeshellarg(makeCorrectDir($tmpdir . '/web'))); - $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar cfvz ' . escapeshellarg(makeCorrectFile($tmpdir . '/web/' . $data['loginname'] . '-web.tar.gz')) . ' --exclude ' . escapeshellarg($tmpdir) .' ' . escapeshellarg($customerdocroot)); - safe_exec('tar cfz ' . escapeshellarg(makeCorrectFile($tmpdir . '/web/' . $data['loginname'] . '-web.tar.gz')) . ' --exclude ' . escapeshellarg($tmpdir) .' ' . escapeshellarg($customerdocroot)); - $create_backup_tar = true; + $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar -C '.escapeshellarg($tmpdir).' cfz ' . escapeshellarg(makeCorrectFile($tmpdir . '/web/' . $data['loginname'] . '-web.tar.gz')) . ' --exclude ' . escapeshellarg($tmpdir) .' ' . escapeshellarg($customerdocroot)); + safe_exec('tar -C '.escapeshellarg($tmpdir).' cfz ' . escapeshellarg(makeCorrectFile($tmpdir . '/web/' . $data['loginname'] . '-web.tar.gz')) . ' --exclude ' . escapeshellarg($tmpdir) .' ' . escapeshellarg($customerdocroot)); + $create_backup_tar_data .= makeCorrectDir($tmpdir . '/web'); } - if ($create_backup_tar) + if (!empty($create_backup_tar_data)) { $backup_file = makeCorrectFile($tmpdir . '/' . $data['loginname'] . '-backup_' . date('YmdHi', time()) . '.tar.gz'); $cronlog->logAction(CRON_ACTION, LOG_INFO, 'Creating backup-file "'.$backup_file.'"'); // pack all archives in tmp-dir to one - $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar cfvz ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($tmpdir)); - safe_exec('tar cfz ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($tmpdir)); + $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> tar -C '.escapeshellarg($tmpdir).' cfz ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($create_backup_tar_data)); + safe_exec('tar -C '.escapeshellarg($tmpdir).' cfz ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($create_backup_tar_data)); // move to destination directory $cronlog->logAction(CRON_ACTION, LOG_DEBUG, 'shell> mv ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($data['destdir'])); safe_exec('mv ' . escapeshellarg($backup_file) . ' ' . escapeshellarg($data['destdir']));