From 7ee336c7ccb5f8d35b8eb05cf5e812a42154cbc2 Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Wed, 15 Apr 2015 09:19:30 -0400 Subject: [PATCH] - ported some patches --- server/plugins-available/backup_plugin.inc.php | 53 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 35 insertions(+), 18 deletions(-) diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php index 863ac98..975a5dd 100644 --- a/server/plugins-available/backup_plugin.inc.php +++ b/server/plugins-available/backup_plugin.inc.php @@ -53,7 +53,9 @@ //* Register for actions $app->plugins->registerAction('backup_download', $this->plugin_name, 'backup_action'); $app->plugins->registerAction('backup_restore', $this->plugin_name, 'backup_action'); - + //$app->plugins->registerAction('backup_download_mail', $this->plugin_name, 'backup_action_mail'); + $app->plugins->registerAction('backup_restore_mail', $this->plugin_name, 'backup_action_mail'); + } //* Do a backup action @@ -61,14 +63,13 @@ global $app, $conf; $backup_id = intval($data); - $backup = $app->dbmaster->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = $backup_id"); - $mail_backup = $app->dbmaster->queryOneRecord("SELECT * FROM mail_backup WHERE backup_id = $backup_id"); + $backup = $app->dbmaster->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id); if(is_array($backup)) { $app->uses('ini_parser,file,getconf,system'); - $web = $app->dbmaster->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$backup['parent_domain_id']); + $web = $app->dbmaster->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $backup['parent_domain_id']); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id']; @@ -155,41 +156,55 @@ } } } + if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir); } else { $app->log('Backup directory not ready.', LOGLEVEL_DEBUG); } - //* Restore a mail backup - florian@schaal-24.de - } elseif (is_array($mail_backup) && $action_name == 'backup_restore') { - $app->uses('ini_parser,file,getconf'); + } else { + $app->log('No backup with ID '.$backup_id.' found.', LOGLEVEL_DEBUG); + } + return 'ok'; + } + + //* Restore a mail backup - florian@schaal-24.de + public function backup_action_mail($action_name, $data) { + global $app, $conf; + + $backup_id = intval($data); + $mail_backup = $app->dbmaster->queryOneRecord("SELECT * FROM mail_backup WHERE backup_id = ?", $backup_id); + + if (is_array($mail_backup) && $action_name == 'backup_restore_mail') { + $app->uses('ini_parser,file,getconf'); + $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); $backup_dir = $server_config['backup_dir']; - $backup_dir_is_ready = true; + //* mount backup directory, if necessary if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $backup_dir_is_ready = false; - + if($backup_dir_is_ready){ $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); - $domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain_id = ".intval($mail_backup['parent_domain_id'])); - + $domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain_id = ?", $mail_backup['parent_domain_id']); + $backup_dir = $server_config['backup_dir'].'/mail'.$domain_rec['domain_id']; $mail_backup_file = $backup_dir.'/'.$mail_backup['filename']; - - $sql = "SELECT * FROM mail_user WHERE server_id = '".$conf['server_id']."' AND mailuser_id = ".intval($mail_backup['mailuser_id']); - $record = $app->db->queryOneRecord($sql); - + + $sql = "SELECT * FROM mail_user WHERE server_id = ? AND mailuser_id = ?"; + $record = $app->db->queryOneRecord($sql, $conf['server_id'], $mail_backup['mailuser_id']); + //* strip mailbox from maildir $domain_dir=explode('/',$record['maildir']); $_temp=array_pop($domain_dir);unset($_temp); $domain_dir=implode('/',$domain_dir); - + if(!is_dir($domain_dir)) { mkdir($domain_dir, 0700); //* never create the full path chown($domain_dir, $mail_config['mailuser_name']); chgrp($domain_dir, $mail_config['mailuser_group']); } - + if(file_exists($mail_backup_file) && $record['homedir'] != '' && $record['homedir'] != '/' && !stristr($mail_backup_file,'..') && !stristr($mail_backup_file,'etc') && $mail_config['homedir_path'] == $record['homedir'] && is_dir($domain_dir)) { if($mail_backup['backup_mode'] == 'userzip') { copy($mail_backup_file, $domain_dir.'/'.$mail_backup['filename']); @@ -213,6 +228,7 @@ } } } + if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir); } else { $app->log('Backup directory not ready.', LOGLEVEL_DEBUG); } @@ -222,7 +238,8 @@ return 'ok'; } - + + } // end class ?> -- Gitblit v1.9.1