/** * Returns proxy class instance (singleton pattern) * * @return CBitrixCloudBackup * */ public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new CBitrixCloudBackup(); } return self::$instance; }
echo EndNote(); ?> </td> </tr> <?php } if ($bBitrixCloud) { ?> <tr> <td class="adm-detail-valign-top" width="40%"><?php echo GetMessage('DUMP_MAIN_BITRIX_CLOUD_DESC'); ?> <span class="required"><sup>1</sup></span>:</td> <td width="60%"> <?php $backup = CBitrixCloudBackup::getInstance(); CAdminMessage::ShowMessage(array("TYPE" => "PROGRESS", "DETAILS" => GetMessage("BCL_BACKUP_USAGE", array("#QUOTA#" => CFile::FormatSize($quota = $backup->getQuota()), "#USAGE#" => CFile::FormatSize($usage = $backup->getUsage()))) . '#PROGRESS_BAR#', "HTML" => false, "PROGRESS_TOTAL" => $quota, "PROGRESS_VALUE" => $usage)); ?> </td> </tr> <?php } ?> <tr> <td class="adm-detail-valign-top" width=40%><?php echo GetMessage('MAIN_DUMP_ARC_LOCATION'); ?> </td> <td> <div><input type=radio name=dump_bucket_id value="-1" <?php echo $bBitrixCloud ? "checked" : "";
$arWeekDays = array(0, 2, 4, 6); } break; case 3: $arWeekDays = array($w, ($w + 3) % 7); sort($arWeekDays); break; default: // 7 $arWeekDays = array($w); } $strMessage = GetMessage("MAIN_DUMP_SHED_CLOSEST_TIME_" . $day) . FormatDate('FULL', strtotime(date('Y-m-d ' . sprintf('%02d:%02d', floor($t / 60), $t % 60), $start_time))) . ' ' . GetMessage('DUMP_LOCAL_TIME'); if ($dump_auto_set == 2) { $backup_secret_key = randString(16); CPasswordStorage::Set('backup_secret_key', $backup_secret_key); $strError = CBitrixCloudBackup::getInstance()->addBackupJob($backup_secret_key, $url, $sec, $arWeekDays); $strMessage .= '<br>' . GetMessage('DUMP_CHECK_BITRIXCLOUD', array('#LINK#' => '/bitrix/admin/bitrixcloud_backup_job.php?lang=' . LANGUAGE_ID)); } } elseif ($_REQUEST['dump_auto_green_button']) { $strError = GetMessage('DUMP_WARN_NO_BITRIXCLOUD'); } else { $strMessage = GetMessage('DUMP_SAVED_DISABLED'); } if (!$strError) { IntOptionSet("dump_auto_enable", $dump_auto_set); $dump_auto_enable = $dump_auto_set; } IntOptionSet("dump_delete_old", $_REQUEST['dump_delete_old']); IntOptionSet("dump_old_time", $_REQUEST['dump_old_time']); IntOptionSet("dump_old_cnt", $_REQUEST['dump_old_cnt']); IntOptionSet("dump_old_size", $_REQUEST['dump_old_size']);
if($obUpload->Finish($obBucket)) { if ($NS['BUCKET_ID'] != -1) { $oBucket = new CCloudStorageBucket($NS['BUCKET_ID']); $oBucket->IncFileCounter($file_size); } if (file_exists($arc_name = CTar::getNextName($NS['arc_name']))) { unset($NS['obBucket']); $NS['arc_name'] = $arc_name; } else { CBitrixCloudBackup::clearOptions(); if ($arParams['dump_delete_old'] == 1) { $name = CTar::getFirstName($NS['arc_name']); while(file_exists($name)) { $size = filesize($name); if (unlink($name) && IntOption("disk_space") > 0) CDiskQuota::updateDiskQuota("file",$size , "del"); $name = CTar::getNextName($name); } } break; } }
function CheckBackup() { $arCount = 0; $arResult = array(); $arResult["STATUS"] = false; $bMcrypt = function_exists('mcrypt_encrypt'); $bBitrixCloud = $bMcrypt && CModule::IncludeModule('bitrixcloud') && CModule::IncludeModule('clouds'); $site = CSite::GetSiteByFullPath(DOCUMENT_ROOT); $path = BX_ROOT . "/backup"; $arTmpFiles = array(); $arFilter = array(); GetDirList(array($site, $path), $arDir, $arTmpFiles, $arFilter, array('sort' => 'asc'), "F"); foreach ($arTmpFiles as $ar) { if (strpos($ar['NAME'], ".enc.gz") || strpos($ar['NAME'], ".tar.gz") || strpos($ar['NAME'], ".tar") || strpos($ar['NAME'], ".enc")) { $arCount++; } } if ($bBitrixCloud) { $backup = CBitrixCloudBackup::getInstance(); try { foreach ($backup->listFiles() as $ar) { if (strpos($ar['FILE_NAME'], ".enc.gz") || strpos($ar['FILE_NAME'], ".tar.gz") || strpos($ar['FILE_NAME'], ".tar") || strpos($ar['FILE_NAME'], ".enc")) { $arCount++; } } } catch (Exception $e) { } } if ($arCount > 0) { $arResult["STATUS"] = true; $arResult["MESSAGE"]["PREVIEW"] = GetMessage("CL_FOUND_BACKUP", array("#count#" => $arCount)); } else { $arResult["MESSAGE"]["PREVIEW"] = GetMessage("CL_NOT_FOUND_BACKUP"); } return $arResult; }
$backup_secret_key = CPasswordStorage::Get('backup_secret_key'); if (strlen($backup_secret_key) <= 0) { $backup_secret_key = randString(10); CPasswordStorage::Set('backup_secret_key', $backup_secret_key); } $time = 0; if (preg_match("/^(\\d{1,2}):(\\d{1,2})\$/", $_POST["TIME"], $match)) { $time = $match[1] * 3600 + $match[2] * 60; } $strError = CBitrixCloudBackup::getInstance()->addBackupJob($backup_secret_key, $_POST["URL"], $time, $_POST["WEEK_DAYS"]); if ($strError == "") { LocalRedirect("/bitrix/admin/bitrixcloud_backup_job.php?lang=" . LANGUAGE_ID); } } $arHeaders = array(array("id" => "URL", "content" => GetMessage("BCL_BACKUP_JOB_URL"), "default" => true), array("id" => "TIME", "content" => GetMessage("BCL_BACKUP_JOB_TIME"), "align" => "right", "default" => true), array("id" => "WEEK_DAYS", "content" => GetMessage("BCL_BACKUP_JOB_WEEK_DAYS"), "default" => true), array("id" => "STATUS", "content" => GetMessage("BCL_BACKUP_JOB_STATUS"), "default" => true), array("id" => "FINISH_TIME", "content" => GetMessage("BCL_BACKUP_JOB_FINISH_TIME"), "align" => "right", "default" => true)); $arJobs = CBitrixCloudBackup::getInstance()->getBackupJob(); if (is_string($arJobs)) { throw new CBitrixCloudException($arJobs); } $lAdmin->AddHeaders($arHeaders); $rsData = new CDBResult(); $rsData->InitFromArray($arJobs); $rsData = new CAdminResult($rsData, $sTableID); while ($arRes = $rsData->GetNext()) { $row = $lAdmin->AddRow($arRes["URL"], $arRes); if ($arRes["STATUS"] == "") { $status = GetMessage("BCL_BACKUP_JOB_NEVER"); } else { $status = $arRes["STATUS"]; } $row->AddViewField("STATUS", $status);