32 return 'Yandex Object Storage';
41 '' =>
'storage.yandexcloud.net',
56 $arSettings = $_POST[
'SETTINGS'][$this->
GetID()];
60 $arSettings = unserialize($arBucket[
'SETTINGS'], [
'allowed_classes' =>
false]);
63 if (!is_array($arSettings))
65 $arSettings = [
'ACCESS_KEY' =>
'',
'SECRET_KEY' =>
''];
69 $show = (($cur_SERVICE_ID === $this->
GetID()) || !$bServiceSet) ?
'' :
'none';
70 $useHttps = $arSettings[
'USE_HTTPS'] ??
'N';
73 <tr id="SETTINGS_0_' . $htmlID .
'" style="display:' . $show .
'" class="settings-tr adm-detail-required-field">
74 <td>' .
GetMessage(
'CLO_STORAGE_YANDEX_EDIT_ACCESS_KEY') .
':</td>
75 <td><input type="hidden" name="SETTINGS[' . $htmlID .
'][ACCESS_KEY]" id="' . $htmlID .
'ACCESS_KEY" value="' .
htmlspecialcharsbx($arSettings[
'ACCESS_KEY']) .
'"><input type="text" size="55" name="' . $htmlID .
'INP_ACCESS_KEY" id="' . $htmlID .
'INP_ACCESS_KEY" value="' .
htmlspecialcharsbx($arSettings[
'ACCESS_KEY']) .
'" ' . ($arBucket[
'READ_ONLY'] ===
'Y' ?
'"disabled"' :
'') .
' onchange="BX(\'' . $htmlID .
'ACCESS_KEY\').value = this.value"></td>
77 <tr id="SETTINGS_1_' . $htmlID .
'" style="display:' . $show .
'" class="settings-tr adm-detail-required-field">
78 <td>' .
GetMessage(
'CLO_STORAGE_YANDEX_EDIT_SECRET_KEY') .
':</td>
79 <td><input type="hidden" name="SETTINGS[' . $htmlID .
'][SECRET_KEY]" id="' . $htmlID .
'SECRET_KEY" value="' .
htmlspecialcharsbx($arSettings[
'SECRET_KEY']) .
'"><input type="text" size="55" name="' . $htmlID .
'INP_SECRET_KEY" id="' . $htmlID .
'INP_SECRET_KEY" value="' .
htmlspecialcharsbx($arSettings[
'SECRET_KEY']) .
'" autocomplete="off" ' . ($arBucket[
'READ_ONLY'] ===
'Y' ?
'"disabled"' :
'') .
' onchange="BX(\'' . $htmlID .
'SECRET_KEY\').value = this.value">' . (
80 array_key_exists(
'SESSION_TOKEN', $arSettings) ?
81 '<input type="hidden" name="SETTINGS[' . $htmlID .
'][SESSION_TOKEN]" id="' . $htmlID .
'SESSION_TOKEN" value="' .
htmlspecialcharsbx($arSettings[
'SESSION_TOKEN']) .
'">' :
85 <tr id="SETTINGS_3_' . $htmlID .
'" style="display:' . $show .
'" class="settings-tr">
86 <td nowrap>' .
GetMessage(
'CLO_STORAGE_YANDEX_EDIT_USE_HTTPS') .
':</td>
87 <td><input type="hidden" name="SETTINGS[' . $htmlID .
'][USE_HTTPS]" id="' . $htmlID .
'KEY" value="N"><input type="checkbox" name="SETTINGS[' . $htmlID .
'][USE_HTTPS]" id="' . $htmlID .
'USE_HTTPS" value="Y" ' . ($useHttps ==
'Y' ?
'checked="checked"' :
'') .
'></td>
105 'ACCESS_KEY' => is_array($arSettings) ? trim($arSettings[
'ACCESS_KEY']) :
'',
106 'SECRET_KEY' => is_array($arSettings) ? trim($arSettings[
'SECRET_KEY']) :
'',
107 'USE_HTTPS' => is_array($arSettings) && $arSettings[
'USE_HTTPS'] ==
'Y' ?
'Y' :
'N',
109 if (is_array($arSettings) && array_key_exists(
'SESSION_TOKEN', $arSettings))
111 $result[
'SESSION_TOKEN'] = trim($arSettings[
'SESSION_TOKEN']);
114 if ($arBucket[
'READ_ONLY'] !==
'Y' &&
$result[
'ACCESS_KEY'] ===
'')
117 'id' => $this->
GetID() .
'INP_ACCESS_KEY',
118 'text' =>
GetMessage(
'CLO_STORAGE_YANDEX_EMPTY_ACCESS_KEY'),
122 if ($arBucket[
'READ_ONLY'] !==
'Y' &&
$result[
'SECRET_KEY'] ===
'')
125 'id' => $this->
GetID() .
'INP_SECRET_KEY',
126 'text' =>
GetMessage(
'CLO_STORAGE_YANDEX_EMPTY_SECRET_KEY'),
151 $this->new_end_point !==
''
152 && preg_match(
'#^(http|https)://' . preg_quote($bucket,
'#') .
'(.+?)/#', $this->new_end_point, $match) > 0
155 return $bucket . $match[2];
161 return $bucket .
'.storage.yandexcloud.net';
165 return 'storage.yandexcloud.net';
182 $file_name = str_replace(
'+',
'%20', $file_name);
183 if (isset($additional_headers[
'x-amz-copy-source']))
185 $additional_headers[
'x-amz-copy-source'] = str_replace(
'+',
'%20', $additional_headers[
'x-amz-copy-source']);
187 return parent::SendRequest($arSettings,
$verb, $bucket, $file_name,
$params,
$content, $additional_headers);
196 public function GetFileSRC($arBucket, $arFile, $encoded =
true)
199 $request = \Bitrix\Main\Context::getCurrent()->getRequest();
200 $proto =
$request->isHttps() ?
'https' :
'http';
202 if ($arBucket[
'CNAME'] !=
'')
204 $host = $arBucket[
'CNAME'];
207 elseif ($proto ===
'https' && mb_strpos($arBucket[
'BUCKET'],
'.') !==
false)
209 $host =
'storage.yandexcloud.net';
210 $pref = $arBucket[
'BUCKET'];
214 $host = $arBucket[
'BUCKET'] .
'.storage.yandexcloud.net';
218 if (is_array($arFile))
220 $URI = ltrim($arFile[
'SUBDIR'] .
'/' . $arFile[
'FILE_NAME'],
'/');
224 $URI = ltrim($arFile,
'/');
227 if ($arBucket[
'PREFIX'] !=
'')
229 if (mb_substr($URI, 0, mb_strlen($arBucket[
'PREFIX']) + 1) !== $arBucket[
'PREFIX'] .
'/')
231 $URI = $arBucket[
'PREFIX'] .
'/' . $URI;
237 $URI = $pref .
'/' . $URI;
246 return $proto .
'://' .
$host .
'/' . $URI;
262 return parent::DeleteBucket($arBucket);
265 public function FileCopy($arBucket, $arFile, $filePath)
267 $this->streamTimeout = 3600;
268 return parent::FileCopy($arBucket, $arFile, $filePath);
278 $this->streamTimeout = 3600;
279 return parent::CompleteMultipartUpload($arBucket,
$NS);
289 if (
$status == 400 && mb_strpos(
$result,
'ExpiredToken') !==
false)
293 if (
$status == 403 && mb_strpos(
$result,
'The request signature we calculated does not match the signature you provided.') !==
false)
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
GetRequestHost($bucket, $arSettings)
checkForTokenExpiration($status, $result)
GetFileSRC($arBucket, $arFile, $encoded=true)
FileCopy($arBucket, $arFile, $filePath)
CompleteMultipartUpload($arBucket, &$NS)
SendRequest($arSettings, $verb, $bucket, $file_name='/', $params='', $content='', $additional_headers=[])
CheckSettings($arBucket, &$arSettings)
GetSettingsHTML($arBucket, $bServiceSet, $cur_SERVICE_ID, $bVarsFromForm)
static URLEncode($str, $charset, $file_name=false)
if(!defined('NOT_CHECK_PERMISSIONS')) $NS
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']