From c1253836d48b6d20ecfeffb1594dc0dd1db567fa Mon Sep 17 00:00:00 2001 From: tomash Date: Thu, 9 Nov 2006 14:38:59 +0000 Subject: [PATCH] #1704 restoreBackup XMLRPC fixed --- .../src/modules/storageServer/var/LocStor.php | 44 ++++++++++--- .../src/modules/storageServer/var/Restore.php | 3 +- .../storageServer/var/xmlrpc/XR_LocStor.php | 62 ++++++++++++++++--- .../storageServer/var/xmlrpc/xrLocStor.php | 1 + .../storageServer/var/xmlrpc/xr_cli_test.php | 4 +- 5 files changed, 96 insertions(+), 18 deletions(-) diff --git a/campcaster/src/modules/storageServer/var/LocStor.php b/campcaster/src/modules/storageServer/var/LocStor.php index c80147f67..61ba72aef 100644 --- a/campcaster/src/modules/storageServer/var/LocStor.php +++ b/campcaster/src/modules/storageServer/var/LocStor.php @@ -1194,26 +1194,54 @@ class LocStor extends BasicStor { /* ------------------------------------------------------ restore methods */ /** - * Restore a beckup file (open handle) + * Restore a backup file (open handle) * * @param string $sessid - session id - * @param string $filename - backup file path + * @param string $chsum, md5 checksum of imported file + * @return array + * array with: + * url string: writable URL + * fname string: writable local filename + * token string: PUT token + */ + function restoreBackupOpen($sessid, $chsum) + { + $userid = $r =$this->getSessUserId($sessid); + if ($this->dbc->isError($r)) { + return $r; + } + $r = $this->bsOpenPut($chsum, NULL, $userid); + if (PEAR::isError($r)) { + return $r; + } + return $r; + } + + + /** + * Restore a backup file (close put handle) + * + * @param string $sessid - session id + * @param string $token - put token * @return string $token - restore token */ - function restoreBackupOpen($sessid, $filename) - { + function restoreBackupClosePut($sessid, $token) { + $arr = $r = $this->bsClosePut($token); + if (PEAR::isError($r)) { + return $r; + } + $fname = $arr['fname']; require_once 'Restore.php'; $rs = new Restore($this); if (PEAR::isError($rs)) { return $rs; } - return $rs->openRestore($sessid,$filename); + return $rs->openRestore($sessid, $fname); } - /** - * Restore a beckup file (check state) - * + * Restore a backup file (check state) + * * @param string $token - restore token * @return array status - fields: * token: string - restore token diff --git a/campcaster/src/modules/storageServer/var/Restore.php b/campcaster/src/modules/storageServer/var/Restore.php index 8ada5f8be..d0f599195 100644 --- a/campcaster/src/modules/storageServer/var/Restore.php +++ b/campcaster/src/modules/storageServer/var/Restore.php @@ -119,8 +119,9 @@ class Restore { $r['status'] = $stat; if ($stat=='fault') { $r['faultString'] = $message; + } else { + $r['faultString'] = ''; } - // $r['token'] = $token; return $r; } else { return PEAR::raiseError('Restore::checkRestore: invalid token!'); diff --git a/campcaster/src/modules/storageServer/var/xmlrpc/XR_LocStor.php b/campcaster/src/modules/storageServer/var/xmlrpc/XR_LocStor.php index df01a5ed9..6280d1974 100644 --- a/campcaster/src/modules/storageServer/var/xmlrpc/XR_LocStor.php +++ b/campcaster/src/modules/storageServer/var/xmlrpc/XR_LocStor.php @@ -1935,11 +1935,12 @@ class XR_LocStor extends LocStor{ * fields: * * * On success, returns a XML-RPC struct with following fields: * * @@ -1961,16 +1962,61 @@ class XR_LocStor extends LocStor{ { list($ok, $r) = $this->_xr_getPars($input); if(!$ok) return $r; - $res = $this->restoreBackupOpen($r['sessid'], $r['filename']); + $res = $this->restoreBackupOpen($r['sessid'], $r['chsum']); if(PEAR::isError($res)){ return new XML_RPC_Response(0, 805, "xr_restoreBackupOpen: ".$res->getMessage(). " ".$res->getUserInfo() ); } - return new XML_RPC_Response(XML_RPC_encode(array( - 'token'=>$res['token'], - ))); + unset($res['fname']); + return new XML_RPC_Response(XML_RPC_encode($res)); + } + + /** + * Close writable URL for restore a backup file and start the restore + * process + * + * The XML-RPC name of this method is "locstor.restoreBackupClosePut". + * + * The input parameters are an XML-RPC struct with the following + * fields: + * + * + * On success, returns a XML-RPC struct with following fields: + * + * + * On errors, returns an XML-RPC error response. + * The possible error codes and error message are: + * + * + * @param input XMLRPC struct + * @return XMLRPC struct + * @see LocStor::restoreBackupClosePut + */ + function xr_restoreBackupClosePut($input) + { + list($ok, $r) = $this->_xr_getPars($input); + if(!$ok) return $r; + $res = $this->restoreBackupClosePut($r['sessid'], $r['token']); + if(PEAR::isError($res)){ + return new XML_RPC_Response(0, 805, + "xr_restoreBackupClosePut: ".$res->getMessage(). + " ".$res->getUserInfo() + ); + } + return new XML_RPC_Response(XML_RPC_encode($res)); } /** @@ -1981,7 +2027,7 @@ class XR_LocStor extends LocStor{ * The input parameters are an XML-RPC struct with the following * fields: * * * On success, returns a XML-RPC struct with following fields: @@ -2022,14 +2068,14 @@ class XR_LocStor extends LocStor{ } /** - * Close writable URL for restore a backup file and restore the backup file + * Close the restore process * * The XML-RPC name of this method is "locstor.restoreBackupClose". * * The input parameters are an XML-RPC struct with the following * fields: * * * On success, returns a XML-RPC struct with following fields: diff --git a/campcaster/src/modules/storageServer/var/xmlrpc/xrLocStor.php b/campcaster/src/modules/storageServer/var/xmlrpc/xrLocStor.php index 247cf9c9b..5b32b48e7 100644 --- a/campcaster/src/modules/storageServer/var/xmlrpc/xrLocStor.php +++ b/campcaster/src/modules/storageServer/var/xmlrpc/xrLocStor.php @@ -131,6 +131,7 @@ $methods = array( 'createBackupClose' => 'Create backup of storage (close handle)', 'restoreBackupOpen' => 'Restore a backup file (open handle)', + 'restoreBackupClosePut' => 'Restore a backup file (close PUT handle)', 'restoreBackupCheck' => 'Restore a backup file (check results)', 'restoreBackupClose' => 'Restore a backup file (close handle)', diff --git a/campcaster/src/modules/storageServer/var/xmlrpc/xr_cli_test.php b/campcaster/src/modules/storageServer/var/xmlrpc/xr_cli_test.php index f6aa48fca..497a2e191 100644 --- a/campcaster/src/modules/storageServer/var/xmlrpc/xr_cli_test.php +++ b/campcaster/src/modules/storageServer/var/xmlrpc/xr_cli_test.php @@ -187,7 +187,9 @@ $infos = array( "createBackupClose" => array('m'=>"locstor.createBackupClose", 'p'=>array('token'), 'r'=>array('status')), "restoreBackupOpen" => array('m'=>"locstor.restoreBackupOpen", - 'p'=>array('sessid', 'filename'), 'r'=>array('token')), + 'p'=>array('sessid', 'filename'), 'r'=>array('url', 'token')), + "restoreBackupClosePut" => array('m'=>"locstor.restoreBackupClosePut", + 'p'=>array('sessid', 'token'), 'r'=>array('token')), "restoreBackupCheck" => array('m'=>"locstor.restoreBackupCheck", 'p'=>array('token'), 'r'=>array('status', 'faultString')), "restoreBackupClose" => array('m'=>"locstor.restoreBackupClose",