From 5f0a37ff3bc666e581d3fbfe0f837684fb87818e Mon Sep 17 00:00:00 2001
From: Dominik
Date: Mon, 24 Mar 2014 20:04:29 +0100
Subject: [PATCH] added backup-functions to Remote-API (FS#2832)
---
interface/lib/classes/remote.d/sites.inc.php | 60 ++++++++++++++++++-
interface/web/sites/lib/remote.conf.php | 1 +
remoting_client/API-docs/navigation.html | 2 +
.../API-docs/sites_web_domain_backup.html | 26 ++++++++
.../sites_web_domain_backup_list.html | 26 ++++++++
5 files changed, 114 insertions(+), 1 deletion(-)
create mode 100644 remoting_client/API-docs/sites_web_domain_backup.html
create mode 100644 remoting_client/API-docs/sites_web_domain_backup_list.html
diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index 2574ee8a4..98c5bf632 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -893,7 +893,65 @@ class remoting_sites extends remoting {
$all = $app->db->queryAllRecords($sql);
return $all;
}
-
+
+ //** backup functions -----------------------------------------------------------------------------------
+ public function sites_web_domain_backup_list($session_id, $site_id = null)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_web_domain_backup')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+
+ $result = $app->db->queryAllRecords("SELECT * FROM web_backup".(($site_id != null)?' WHERE parent_domain_id = ?':''), $app->functions->intval($site_id));
+ return $result;
+ }
+
+ //* Backup download and restoration by Abdi Joseph
+ public function sites_web_domain_backup($session_id, $primary_id, $action_type)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_web_domain_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 `web_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' and $action_type != 'backup_restore') {
+ $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`= ? and `action_type`= ? and `action_state`= ?", $primary_id, $action_type, '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` = ?, `tstamp` = ?, `action_type` = ?, `action_param` = ?, `action_state` = ?", $server_id, $tstamp, $action_type, $primary_id, $action_state)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
//** quota functions -----------------------------------------------------------------------------------
public function quota_get_by_user($session_id, $client_id)
{
diff --git a/interface/web/sites/lib/remote.conf.php b/interface/web/sites/lib/remote.conf.php
index 10a464013..30e41b929 100644
--- a/interface/web/sites/lib/remote.conf.php
+++ b/interface/web/sites/lib/remote.conf.php
@@ -5,6 +5,7 @@ $function_list['sites_web_folder_get,sites_web_folder_add,sites_web_folder_updat
$function_list['sites_ftp_user_get,sites_ftp_user_server_get,sites_ftp_user_add,sites_ftp_user_update,sites_ftp_user_delete'] = 'Sites FTP-User functions';
$function_list['sites_shell_user_get,sites_shell_user_add,sites_shell_user_update,sites_shell_user_delete'] = 'Sites Shell-User functions';
$function_list['sites_web_domain_get,sites_web_domain_add,sites_web_domain_update,sites_web_domain_delete,sites_web_domain_set_status'] = 'Sites Domain functions';
+$function_list['sites_web_domain_backup'] = 'Sites Backup functions';
$function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions';
$function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions';
diff --git a/remoting_client/API-docs/navigation.html b/remoting_client/API-docs/navigation.html
index 27f9f244e..e0eebb000 100644
--- a/remoting_client/API-docs/navigation.html
+++ b/remoting_client/API-docs/navigation.html
@@ -226,6 +226,8 @@
sites_web_domain_get
sites_web_domain_set_status
sites_web_domain_update
+ p>sites_web_domain_backup_list
+sites_web_domain_backup
sites_web_subdomain_add
sites_web_subdomain_delete
sites_web_subdomain_get
diff --git a/remoting_client/API-docs/sites_web_domain_backup.html b/remoting_client/API-docs/sites_web_domain_backup.html
new file mode 100644
index 000000000..96ddba696
--- /dev/null
+++ b/remoting_client/API-docs/sites_web_domain_backup.html
@@ -0,0 +1,26 @@
+
+ISCPConfig 3 API Functions
+
+
+
+
+
+
+
+
+
+
+
+
sites_web_domain_backup($session_id, $primary_id, $action_type);
+
+
Description:
+
Adds a new backup / restore task. Please note: $action_type is either backup_download or backup_restore
+
+
Input Variables:
+
$session_id, $primary_id, $action_type
+
Output:
+
Returns TRUE if successfull or FALSE if failure.
+
+
+
diff --git a/remoting_client/API-docs/sites_web_domain_backup_list.html b/remoting_client/API-docs/sites_web_domain_backup_list.html
new file mode 100644
index 000000000..7498900d8
--- /dev/null
+++ b/remoting_client/API-docs/sites_web_domain_backup_list.html
@@ -0,0 +1,26 @@
+
+ISCPConfig 3 API Functions
+
+
+
+
+
+
+
+
+
+
+
+
sites_web_domain_backup_list($session_id, $site_id);
+
+
Description:
+
Gets list of all available backups. If no $site_id given, all backups available on this server are read.
+
+
Input Variables:
+
$session_id, $site_id
+
Output:
+
Returns array of all available backups.
+
+
+
--
GitLab