diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php index e579fb67ff7dec16757f6547bb2b815443c19926..29ff0d83b5cc80e13e00655aad3e888c0163d0ae 100644 --- a/interface/lib/classes/remote.d/mail.inc.php +++ b/interface/lib/classes/remote.d/mail.inc.php @@ -309,6 +309,71 @@ class remoting_mail extends remoting { // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_delete',$this); return $affected_rows; } + + // Mail backup list function by Dominik Müller, info@profi-webdesign.net + public function mail_user_backup_list($session_id, $primary_id = null) + { + global $app; + + if(!$this->checkPerm($session_id, 'mail_user_backup')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + if ($site_id != null) { + $sql = "SELECT * FROM mail_backup WHERE parent_domain_id = ".$app->functions->intval($site_id); + } + else { + $sql = "SELECT * FROM mail_backup"; + } + + $result = $app->db->queryAllRecords($sql); + return $result; + } + + // Mail backup restore/download functions by Dominik Müller, info@profi-webdesign.net + public function mail_user_backup($session_id, $primary_id, $action_type) + { + global $app; + + if(!$this->checkPerm($session_id, 'mail_user_backup')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + //*Set variables + $backup_record = $app->db->queryOneRecord("SELECT * FROM `mail_backup` WHERE `backup_id`='$primary_id'"); + $server_id = $backup_record['server_id']; + + //*Set default action state + $action_state = "pending"; + $tstamp = time(); + + //* Basic validation of variables + if ($server_id <= 0) { + $this->server->fault('invalid_backup_id', "Invalid or non existant backup_id $primary_id"); + return false; + } + + if (/*$action_type != 'backup_download_mail' and*/ $action_type != 'backup_restore_mail') { + $this->server->fault('invalid_action', "Invalid action_type $action_type"); + return false; + } + + //* Validate instance + $instance_record = $app->db->queryOneRecord("SELECT * FROM `sys_remoteaction` WHERE `action_param`='$primary_id' and `action_type`='$action_type' and `action_state`='pending'"); + if ($instance_record['action_id'] >= 1) { + $this->server->fault('duplicate_action', "There is already a pending $action_type action"); + return false; + } + + //* Save the record + if ($app->db->query("INSERT INTO `sys_remoteaction` SET `server_id` = '$server_id', `tstamp` = '$tstamp', `action_type` = '$action_type', `action_param` = '$primary_id', `action_state` = '$action_state'")) { + return true; + } else { + return false; + } + } //* Get alias details public function mail_alias_get($session_id, $primary_id) diff --git a/interface/web/mail/lib/remote.conf.php b/interface/web/mail/lib/remote.conf.php index 5ddec4edcc6589e3e828a540d7b02072754d2caa..ae03e9992aa99374c163fe0e2876189e8b9644ec 100644 --- a/interface/web/mail/lib/remote.conf.php +++ b/interface/web/mail/lib/remote.conf.php @@ -17,6 +17,7 @@ $function_list['mail_fetchmail_get,mail_fetchmail_add,mail_fetchmail_update,mail $function_list['mail_spamfilter_whitelist_get,mail_spamfilter_whitelist_add,mail_spamfilter_whitelist_update,mail_spamfilter_whitelist_delete'] = 'Mail spamfilter whitelist functions'; $function_list['mail_spamfilter_blacklist_get,mail_spamfilter_blacklist_add,mail_spamfilter_blacklist_update,mail_spamfilter_blacklist_delete'] = 'Mail spamfilter blacklist functions'; $function_list['mail_user_filter_get,mail_user_filter_add,mail_user_filter_update,mail_user_filter_delete'] = 'Mail user filter functions'; +$function_list['mail_user_backup'] = 'Mail Backup functions'; $function_list['mail_filter_get,mail_filter_add,mail_filter_update,mail_filter_delete'] = 'Mail filter functions'; diff --git a/remoting_client/API-docs/mail_user_backup.html b/remoting_client/API-docs/mail_user_backup.html new file mode 100644 index 0000000000000000000000000000000000000000..896ed9219097e5687964c1ad72c2b6bfcb3051af --- /dev/null +++ b/remoting_client/API-docs/mail_user_backup.html @@ -0,0 +1,26 @@ + +
Description:
+Adds a new backup / restore task. Please note: $action_type must be backup_restore_mail
+Input Variables:
+$session_id, $primary_id, $action_type
+Output:
+Returns TRUE if successfull or FALSE if failure.
+Description:
+Gets list of all available mail backups. If no $primary_id (mail-domain-id) is given, all mail backups available on this server are read.
+Input Variables:
+$session_id, $primary_id (mail-domain-id)
+Output:
+Returns array of all available backups.
+