%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/bitrixcloud/classes/general/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/bitrixcloud/classes/general/backup_webservice.php |
<?php IncludeModuleLangFile(__FILE__); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/update_client.php"); class CBitrixCloudBackupWebService extends CBitrixCloudWebService { private $addParams = array(); private $addStr = ""; /** * Returns URL to backup webservice * * @param array[string]string $arParams * @return string * */ protected function getActionURL($arParams = /*.(array[string]string).*/ array()) { $arParams["license"] = md5(LICENSE_KEY); $arParams["lang"] = LANGUAGE_ID; foreach($this->addParams as $key => $value) $arParams[$key] = $value; $url = COption::GetOptionString("bitrixcloud", "backup_policy_url"); $url = CHTTP::urlAddParams($url, $arParams, array( "encode" => true, )).$this->addStr; return $url; } /** * Returns action response XML and check CRC * * @param string $action * @return CDataXML * @throws CBitrixCloudException */ protected function backup_action($action) /*. throws CBitrixCloudException .*/ { $obXML = $this->action($action); $node = $obXML->SelectNodes("/control"); if (is_object($node)) { $spd = $node->getAttribute("crc_code"); if(strlen($spd) > 0) CUpdateClient::setSpd($spd); } else { throw new CBitrixCloudException(GetMessage("BCL_BACKUP_WS_SERVER", array( "#STATUS#" => "-1", )), $this->getServerResult()); } return $obXML; } /** * * @return CDataXML * */ public function actionGetInformation() /*. throws CBitrixCloudException .*/ { $this->addStr = ""; $this->addParams = array(); return $this->backup_action("get_info"); } /** * * @param string $check_word * @param string $file_name * @return CDataXML * */ public function actionReadFile($check_word, $file_name) /*. throws CBitrixCloudException .*/ { $this->addStr = ""; $this->addParams = array( "check_word" => $check_word, "file_name" => $file_name, ); return $this->backup_action("read_file"); } /** * * @param string $check_word * @param string $file_name * @return CDataXML * */ public function actionWriteFile($check_word, $file_name) /*. throws CBitrixCloudException .*/ { $this->addStr = ""; $this->addParams = array( "file_name" => $file_name, "spd" => CUpdateClient::getSpd(), "CHHB" => $_SERVER["HTTP_HOST"], "CSAB" => $_SERVER["SERVER_ADDR"], ); return $this->backup_action("write_file"); } /** * * @param string $secret_key * @param string $url * @param int $time * @param array $weekdays * @return CDataXML * */ public function actionAddBackupJob($secret_key, $url, $time = 0, $weekdays = array()) /*. throws CBitrixCloudException .*/ { if ($secret_key == "") { throw new CBitrixCloudException(GetMessage("BCL_BACKUP_EMPTY_SECRET_KEY"), ""); } $parsedUrl = parse_url($url); if ( !is_array($parsedUrl) || !($parsedUrl["scheme"] === "http" || $parsedUrl["scheme"] === "https") || strlen($parsedUrl["host"]) <= 0 || !(intval($parsedUrl["port"]) == 0 || intval($parsedUrl["port"]) == 80) || strlen($parsedUrl["path"]) > 0 || strlen($parsedUrl["user"]) > 0 || strlen($parsedUrl["pass"]) > 0 || strlen($parsedUrl["query"]) > 0 || strlen($parsedUrl["fragment"]) > 0 ) { throw new CBitrixCloudException(GetMessage("BCL_BACKUP_WRONG_URL"), ""); } $time = intval($time); if ($time < 0 || $time >= 24*3600) { throw new CBitrixCloudException(GetMessage("BCL_BACKUP_WRONG_TIME"), ""); } $weekdaysIsOk = is_array($weekdays); if ($weekdaysIsOk) { foreach ($weekdays as $dow) { if (intval($dow) < 0 || intval($dow) > 6) $weekdaysIsOk = false; } } if (!$weekdaysIsOk) { throw new CBitrixCloudException(GetMessage("BCL_BACKUP_WRONG_WEEKDAYS"), ""); } $h = intval($time/3600); $time -= $h*3600; $m = intval($time/60); $this->addParams = array( "secret_key" => trim($secret_key), "time" => $h.":".$m, "domain" => $parsedUrl["host"], "spd" => CUpdateClient::getSpd(), "CHHB" => $_SERVER["HTTP_HOST"], "CSAB" => $_SERVER["SERVER_ADDR"], ); if ($parsedUrl["scheme"] === "https") { $this->addParams["domain_is_https"] = "Y"; } $this->addStr = ""; foreach ($weekdays as $dow) { $this->addStr .= "&ar_weekdays[]=".intval($dow); } return $this->backup_action("add_backup_job"); } /** * * @return CDataXML * @throws CBitrixCloudException */ public function actionDeleteBackupJob() { $this->addStr = ""; $this->addParams = array( "spd" => CUpdateClient::getSpd(), "CHHB" => $_SERVER["HTTP_HOST"], "CSAB" => $_SERVER["SERVER_ADDR"], ); return $this->backup_action("delete_backup_job"); } /** * * @return CDataXML * @throws CBitrixCloudException */ public function actionGetBackupJob() { $this->addStr = ""; $this->addParams = array( "spd" => CUpdateClient::getSpd(), "CHHB" => $_SERVER["HTTP_HOST"], "CSAB" => $_SERVER["SERVER_ADDR"], ); return $this->backup_action("get_backup_job"); } }