public function SendCDNRequest($settings, $verb, $bucket, $file_name = '', $params = '', $content = false, $additional_headers = array()) { $arToken = $this->_GetToken($settings["HOST"], $settings["USER"], $settings["KEY"]); if (!$arToken) { return false; } if (isset($arToken["X-CDN-Management-Url"])) { if (preg_match("#^http://(.*?)(|:\\d+)(/.*)\$#", $arToken["X-CDN-Management-Url"], $arCDN)) { $Host = $arCDN[1]; $Port = $arCDN[2] ? substr($arCDN[2], 1) : 80; $Urn = $arCDN[3]; $Proto = ""; } elseif (preg_match("#^https://(.*?)(|:\\d+)(/.*)\$#", $arToken["X-CDN-Management-Url"], $arCDN)) { $Host = $arCDN[1]; $Port = $arCDN[2] ? substr($arCDN[2], 1) : 443; $Urn = $arCDN[3]; $Proto = "ssl://"; } else { return false; } } else { return false; } $obRequest = new CHTTP(); $obRequest->additional_headers["X-Auth-Token"] = $arToken["X-Auth-Token"]; foreach ($additional_headers as $key => $value) { $obRequest->additional_headers[$key] = $value; } $obRequest->Query($verb, $Host, $Port, $Urn . CCloudUtil::URLEncode("/" . $bucket . $file_name . $params, "UTF-8"), $content, $Proto); return $obRequest; }
function SendRequest($access_key, $secret_key, $verb, $bucket, $file_name = '/', $params = '') { global $APPLICATION; $this->status = 0; $RequestMethod = $verb; $RequestHost = "sts.amazonaws.com"; $RequestURI = "/"; $RequestParams = ""; $params['SignatureVersion'] = 2; $params['SignatureMethod'] = 'HmacSHA1'; $params['AWSAccessKeyId'] = $access_key; $params['Timestamp'] = gmdate('Y-m-d') . 'T' . gmdate('H:i:s'); //.preg_replace("/(\d\d)\$/", ":\\1", date("O")); $params['Version'] = '2011-06-15'; ksort($params); foreach ($params as $name => $value) { if ($RequestParams != '') { $RequestParams .= '&'; } $RequestParams .= urlencode($name) . "=" . urlencode($value); } $StringToSign = "{$RequestMethod}\n" . "{$RequestHost}\n" . "{$RequestURI}\n" . "{$RequestParams}"; $Signature = urlencode(base64_encode($this->hmacsha1($StringToSign, $secret_key))); $obRequest = new CHTTP(); $obRequest->Query($RequestMethod, $RequestHost, 443, $RequestURI . "?{$RequestParams}&Signature={$Signature}", false, 'ssl://'); $this->status = $obRequest->status; $this->headers = $obRequest->headers; $this->errno = $obRequest->errno; $this->errstr = $obRequest->errstr; $this->result = $obRequest->result; if ($obRequest->status == 200) { if ($obRequest->result) { $obXML = new CDataXML(); $text = preg_replace("/<" . "\\?XML.*?\\?" . ">/i", "", $obRequest->result); if ($obXML->LoadString($text)) { $arXML = $obXML->GetArray(); if (is_array($arXML)) { return $arXML; } } //XML parse error $APPLICATION->ThrowException(GetMessage('CLO_SECSERV_S3_XML_PARSE_ERROR', array('#errno#' => 1))); return false; } else { //Empty success result return array(); } } elseif ($obRequest->status > 0) { if ($obRequest->result) { $APPLICATION->ThrowException(GetMessage('CLO_SECSERV_S3_XML_ERROR', array('#errmsg#' => $obRequest->result))); return false; } $APPLICATION->ThrowException(GetMessage('CLO_SECSERV_S3_XML_PARSE_ERROR', array('#errno#' => 2))); return false; } else { $APPLICATION->ThrowException(GetMessage('CLO_SECSERV_S3_XML_PARSE_ERROR', array('#errno#' => 3))); return false; } }
function GetBoardFromSite($queryParameters) { global $APPLICATION; $result = array(); $ob = new CHTTP(); $ob->http_timeout = 60; $ob->Query("GET", "old.vnukovo.ru", 80, "/rus/for-passengers/board1/data.wbp?" . $queryParameters . '&ts=' . mktime(), false, "", "N"); $result["ERROR"]["CODE"] = $ob->errno; $result["ERROR"]["MESSAGE"] = $ob->errstr; if (!intval($result["ERROR"]["CODE"])) { $res = $APPLICATION->ConvertCharset($ob->result, "UTF-8", SITE_CHARSET); //trace($res); $xml = new CDataXML(); if ($xml->LoadString($res) && ($node = $xml->SelectNodes("/responce/rows"))) { $rows = $node->elementsByName("row"); $akNames = array(); $akCodes = array(); $departures = array(); $arrivals = array(); $terminals = array(); foreach ($rows as $row) { $cells = $row->elementsByName("cell"); // Определяем код авиакомпании и номер рейса preg_match_all("/([A-Za-zА-Яа-я0-9]{2})[\\s]*([0-9]+)/", $cells[0]->content, $flightNumber, PREG_PATTERN_ORDER); $result["FLIGHTS"][] = array("FLIGHT" => array("AK_CODE" => $flightNumber[1][0], "NUMBER" => $flightNumber[2][0]), "AK_NAME" => htmlspecialcharsEx($cells[1]->content), "DEPARTURE" => htmlspecialcharsEx($cells[2]->content), "ARRIVAL" => htmlspecialcharsEx($cells[3]->content), "STATUS" => CAirportBoard::GetStatusInfo($cells[4]->content), "TIME" => array("PLANNED" => CAirportBoard::GetDateTimeArray($cells[5]->content), "ESTIMATED" => CAirportBoard::GetDateTimeArray($cells[6]->content), "ACTUAL" => CAirportBoard::GetDateTimeArray($cells[7]->content)), "TERMINAL" => htmlspecialcharsEx($cells[8]->content)); // Формируем список уникальных авиакомпаний, терминалов и пунктов вылета и прилета для фильтра if (!in_array(htmlspecialcharsEx($cells[1]->content), $akNames)) { $akNames[] = htmlspecialcharsEx($cells[1]->content); } if (!in_array($flightNumber[1][0], $akCodes)) { $akCodes[] = $flightNumber[1][0]; } if (!in_array(htmlspecialcharsEx($cells[2]->content), $departures)) { $departures[] = htmlspecialcharsEx($cells[2]->content); } if (!in_array(htmlspecialcharsEx($cells[3]->content), $arrivals)) { $arrivals[] = htmlspecialcharsEx($cells[3]->content); } if (!in_array(htmlspecialcharsEx($cells[8]->content), $terminals)) { $terminals[] = htmlspecialcharsEx($cells[8]->content); } } sort($akNames); sort($akCodes); sort($departures); sort($arrivals); sort($terminals); $result["AK_NAMES"] = $akNames; $result["AK_CODES"] = $akCodes; $result["DEPARTURES"] = $departures; $result["ARRIVALS"] = $arrivals; $result["TERMINALS"] = $terminals; } } return $result; }
/** * Returns action response XML * * @param string $action * @return CDataXML * @throws CBitrixCloudException */ protected function action($action) { /** @global CMain $APPLICATION */ global $APPLICATION; $url = $this->getActionURL(array("action" => $action, "debug" => $this->debug ? "y" : "n")); $server = new CHTTP(); $strXML = $server->Get($url); if ($strXML === false) { $e = $APPLICATION->GetException(); if (is_object($e)) { throw new CBitrixCloudException($e->GetString(), ""); } else { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array("#STATUS#" => "-1")), ""); } } if ($server->status != 200) { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array("#STATUS#" => (string) $server->status)), ""); } $obXML = new CDataXML(); if (!$obXML->LoadString($strXML)) { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_XML_PARSE", array("#CODE#" => "1")), ""); } $node = $obXML->SelectNodes("/error/code"); if (is_object($node)) { $error_code = $node->textContent(); $message_id = "BCL_CDN_WS_" . $error_code; /* GetMessage("BCL_CDN_WS_LICENSE_EXPIRE"); GetMessage("BCL_CDN_WS_LICENSE_NOT_FOUND"); GetMessage("BCL_CDN_WS_QUOTA_EXCEEDED"); GetMessage("BCL_CDN_WS_CMS_LICENSE_NOT_FOUND"); GetMessage("BCL_CDN_WS_DOMAIN_NOT_REACHABLE"); GetMessage("BCL_CDN_WS_LICENSE_DEMO"); GetMessage("BCL_CDN_WS_LICENSE_NOT_ACTIVE"); GetMessage("BCL_CDN_WS_NOT_POWERED_BY_BITRIX_CMS"); GetMessage("BCL_CDN_WS_WRONG_DOMAIN_SPECIFIED"); */ $debug_content = ""; $node = $obXML->SelectNodes("/error/debug"); if (is_object($node)) { $debug_content = $node->textContent(); } //if (HasMessage($message_id)) // throw new CBitrixCloudException(GetMessage($message_id), $error_code, $debug_content); //else // throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array( // "#STATUS#" => $error_code, // )), $error_code, $debug_content); } return $obXML; }
public static function AddByChannel($channelId, $arMessage) { global $DB; if (strlen($arMessage['module_id'])<=0 || strlen($arMessage['command'])<=0) return false; $arData = Array( 'module_id' => $arMessage['module_id'], 'command' => $arMessage['command'], 'params' => is_array($arMessage['params'])?$arMessage['params']: Array(), ); if (CPullOptions::GetNginxStatus()) { $message = CUtil::PhpToJsObject(Array('CHANNEL_ID' => $channelId, 'MESSAGE' => Array($arData), 'ERROR' => '')); if (!defined('BX_UTF') || !BX_UTF) $message = $GLOBALS['APPLICATION']->ConvertCharset($message, SITE_CHARSET,'utf-8'); $CHTTP = new CHTTP(); $CHTTP->http_timeout = 10; if ($CHTTP->HTTPQuery('POST', CPullOptions::GetPublishUrl($channelId), str_replace("\n", " ", $message))) $result = $CHTTP->result; } else { $arParams = Array( 'CHANNEL_ID' => $channelId, 'MESSAGE' => str_replace("\n", " ", serialize($arData)), '~DATE_CREATE' => $DB->CurrentTimeFunction(), ); $id = IntVal($DB->Add("b_pull_stack", $arParams, Array("MESSAGE"))); $result = $id? '{"channel": "'.$channelId.'", "id": "'.$id.'"}': false; } if (isset($arMessage['push_text']) && strlen($arMessage['push_text'])>0 && isset($arMessage['push_user']) && intval($arMessage['push_user'])>0) { $CPushManager = new CPushManager(); $CPushManager->AddQueue(Array( 'USER_ID' => $arMessage['push_user'], 'MESSAGE' => str_replace("\n", " ", $arMessage['push_text']), 'PARAMS' => $arMessage['push_params'], 'TAG' => isset($arMessage['push_tag'])? $arMessage['push_tag']: '', )); } return $result; }
function GetOneBoardFromSite($queryParameters, $addQueryParameters) { global $APPLICATION; $ob = new CHTTP(); $ob->http_timeout = 60; $ob->Query("GET", "www.pulkovoairport.ru", 80, "/online_serves/online_timetable/" . $queryParameters . '?ts=' . mktime() . (strlen($addQueryParameters) ? '&' . $addQueryParameters : ''), false, "", "N"); $res = $APPLICATION->ConvertCharset($ob->result, "KOI8-R", SITE_CHARSET); $res = str_replace('<table class="tablo tabloBigNew bigTableZebra" border="0">', "++++", $res); $res = str_replace('</div> <!-- / gridTbox -->', "++++", $res); $explode = explode("++++", $res); $res = $explode[1]; $res = substr($res, 0, strlen($res) - 22); return array("ERROR" => array("CODE" => $ob->errno, "MESSAGE" => $ob->errstr), "HTML" => $res); unset($explode, $res); }
function __MPF_ImageResizeHandler(&$arCustomFile, $params = array(), $result = array()) { static $arParams = array(); if (!empty($params)) { $arParams = $params; } static $arResult = array(); if (!empty($result)) { $arResult = $result; } $fileIdForDelete = 0; $arFields = array(); foreach (array("MELODY_WELCOME", "MELODY_WAIT", "MELODY_HOLD", "MELODY_VOICEMAIL") as $controlID => $inputName) { if ($_REQUEST["controlID"] == "voximplant" . $controlID) { $fileIdForDelete = $arResult["ITEM"][$inputName]; $arFields = array($inputName => $arCustomFile["fileID"]); break; } } if (!empty($arFields)) { $arFile = CFile::GetFileArray($arCustomFile['fileID']); $arCustomFile["fileURL"] = CHTTP::URN2URI($arFile["SRC"]); Bitrix\Voximplant\ConfigTable::update($arParams["ID"], $arFields); CFile::Delete($fileIdForDelete); } }
public function getFriendsList($limit, &$next) { if (IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME')) { $redirect_uri = static::CONTROLLER_URL . "/redirect.php"; } else { $redirect_uri = \CHTTP::URN2URI("/bitrix/tools/oauth/google.php"); } $ob = $this->getEntityOAuth(); if ($ob->GetAccessToken($redirect_uri) !== false) { $res = $ob->getCurrentUserFriends($limit, $next); foreach ($res["items"] as $key => $contact) { $contact["uid"] = $contact["id"]; if (array_key_exists("name", $contact)) { $contact["first_name"] = $contact["name"]["givenName"]; $contact["last_name"] = $contact["name"]["familyName"]; } else { list($contact["first_name"], $contact["last_name"]) = explode(" ", $contact["displayName"], 2); } if (array_key_exists("image", $contact)) { $contact["picture"] = preg_replace("/\\?.*\$/", "", $contact["image"]["url"]); } $res["items"][$key] = $contact; } return $res["items"]; } return false; }
function GetOneBoardFromSite($queryParameters, $addQueryParameters) { global $APPLICATION; $ob = new CHTTP(); $ob->http_timeout = 60; $ob->Query("GET", "www.domodedovo.ru", 80, "/onlinetablo/?" . $queryParameters . (strlen($addQueryParameters) ? '&' . $addQueryParameters : '') . '&ts=' . mktime(), false, "", "N"); $res = $APPLICATION->ConvertCharset($ob->result, "UTF-8", SITE_CHARSET); $res = str_replace('<table cellspacing="1" cellpadding="3" width="100%" border="0" id="onlinetablo" >', "++++", $res); $res = str_replace('</form>', "++++", $res); $explode = explode("++++", $res); $res = $explode[1]; $res = str_replace('</table>', "++++", $res); $explode = explode("++++", $res); $res = $explode[0]; return array("ERROR" => array("CODE" => $ob->errno, "MESSAGE" => $ob->errstr), "HTML" => $res); unset($explode, $res); }
public static function Add($userId) { global $DB, $APPLICATION; $channelId = md5(uniqid() . $_SERVER["REMOTE_ADDR"] . $_SERVER["SERVER_NAME"] . (is_object($APPLICATION) ? $APPLICATION->GetServerUniqID() : '')); $arParams = array('USER_ID' => intval($userId), 'CHANNEL_ID' => $channelId, 'LAST_ID' => 0, '~DATE_CREATE' => $DB->CurrentTimeFunction()); $result = IntVal($DB->Add("b_pull_channel", $arParams, array())); if (CPullOptions::GetNginxStatus()) { $result = false; $arData = array('module_id' => 'pull', 'command' => 'open', 'params' => array()); $CHTTP = new CHTTP(); $CHTTP->http_timeout = 10; if ($CHTTP->HTTPQuery('POST', CPullOptions::GetPublishUrl($channelId), CUtil::PhpToJsObject(array('MESSAGE' => array($arData), 'ERROR' => '')))) { $result = $CHTTP->result; } } return $result ? $channelId : false; }
function MultySend($arNumbers, $message) { if (!empty($arNumbers)) { if (!defined("BX_UTF")) { $message = iconv("windows-1251", "utf-8", $message); } $res = new CHTTP(); $token = $res->Get("http://sms.ru/auth/get_token"); $arrep = array(" ", ",", "(", ")", "-"); foreach ($arNumbers as $k => $v) { $arNumbers[$k] = str_replace($arrep, "", $v); } $arr = array("login" => COption::GetOptionString("echogroup.smsru", "LOGIN"), "sha512" => hash("sha512", COption::GetOptionString("echogroup.smsru", "PASSWORD") . $token . COption::GetOptionString("echogroup.smsru", "API_KEY")), "token" => $token, "to" => implode($arNumbers, $number), "text" => $message); $html = $res->Post("http://sms.ru/sms/send", $arr); return $html; } }
function Redirect404() { if (!defined('ADMIN_SECTION') && defined('ERROR_404')) { global $APPLICATION; $APPLICATION->RestartBuffer(); CHTTP::SetStatus('404 Not Found'); $tplPath = BASE_PATH . '/local/templates/404/'; include "{$tplPath}/header.php"; include "{$tplPath}/footer.php"; } }
/** * Returns URL to backup webservice * * @param array[string]string $arParams * @return string * */ protected function getActionURL($arParams = array()) { $arParams["license"] = md5(LICENSE_KEY); $arParams["spd"] = $this->spd; $arParams["lang"] = LANGUAGE_ID; $arParams["file_name"] = $this->file_name; $arParams["check_word"] = $this->check_word; $url = COption::GetOptionString("bitrixcloud", "backup_policy_url"); $url = CHTTP::urlAddParams($url, $arParams, array("encode" => true)); return $url; }
/** * Returns URL to backup webservice * * @param array[string]string $arParams * @return string * */ protected function getActionURL($arParams = array()) { $arParams["license"] = md5(LICENSE_KEY); $arParams["spd"] = CUpdateClient::getSpd(); foreach ($this->addParams as $key => $value) { $arParams[$key] = $value; } $url = COption::GetOptionString("bitrixcloud", "monitoring_policy_url"); $url = CHTTP::urlAddParams($url, $arParams, array("encode" => true)) . $this->addStr; return $url; }
static function getRightsLinks($arPage) { global $arParams, $APPLICATION; if (!is_array($arPage)) { $arPage = array($arPage); } $arLinks = array(); $arParams['ELEMENT_NAME'] = htmlspecialcharsback($arParams['ELEMENT_NAME']); $arParams['ELEMENT_NAME'] = urlencode($arParams['ELEMENT_NAME']); if (in_array('categories', $arPage)) { return array(); } if (in_array('article', $arPage) && !in_array('add', $arPage)) { $arLinks['article'] = array('NAME' => GetMessage('PAGE_ARTICLE'), 'TITLE' => GetMessage('PAGE_ARTICLE_TITLE'), 'CURRENT' => in_array('article', $arPage), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), 'ID' => 'article', 'TYPE' => 'page', 'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'); } if (self::IsWriteable() && ((!in_array('history', $arPage) || in_array('history_diff', $arPage)) && (!in_array('add', $arPage) && !in_array('edit', $arPage) && !in_array('delete', $arPage) && !in_array('rename', $arPage)))) { if (IsModuleInstalled('bizproc')) { $arLinks['history'] = array('NAME' => GetMessage('PAGE_HISTORY'), 'TITLE' => GetMessage('PAGE_HISTORY_TITLE'), 'CURRENT' => in_array('history', $arPage), 'LINK' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_HISTORY'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'history') : array()), 'ID' => 'history', 'TYPE' => 'page', 'IS_RED' => 'N'); } } if ($arParams['USE_REVIEW'] == 'Y') { $arLinks['discussion'] = array('NAME' => GetMessage('PAGE_DISCUSSION'), 'TITLE' => GetMessage('PAGE_DISCUSSION_TITLE'), 'CURRENT' => in_array('discussion', $arPage), 'LINK' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DISCUSSION'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'discussion') : array()), 'ID' => 'discussion', 'TYPE' => 'page', 'IS_RED' => 'N'); } if (self::IsWriteable() && (!in_array('history', $arPage) && !in_array('history_diff', $arPage))) { $arLinks['add'] = array('NAME' => GetMessage('PAGE_ADD'), 'TITLE' => GetMessage('PAGE_ADD_TITLE'), 'CURRENT' => in_array('add', $arPage), 'LINK' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => GetMessage('WIKI_NEW_PAGE_TITLE'), 'group_id' => CWikiSocnet::$iSocNetId)), array($arParams['OPER_VAR'] => 'add')), 'ID' => 'add', 'TYPE' => 'edit', 'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'); if (!in_array('add', $arPage)) { $arLinks['edit'] = array('NAME' => GetMessage('PAGE_EDIT'), 'TITLE' => GetMessage('PAGE_EDIT_TITLE'), 'CURRENT' => in_array('edit', $arPage), 'LINK' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => 'edit') : array()), 'ID' => 'edit', 'TYPE' => 'edit', 'IS_RED' => in_array('add', $arPage) ? 'Y' : 'N'); $url = $APPLICATION->GetPopupLink(array('URL' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), array($arParams['OPER_VAR'] => 'rename')), 'PARAMS' => array('width' => 400, 'height' => 150, 'resizable' => false))); $arLinks['rename'] = array('NAME' => GetMessage('WIKI_PAGE_RENAME'), 'TITLE' => GetMessage('WIKI_PAGE_RENAME_TITLE'), 'CURRENT' => in_array('rename', $arPage), 'LINK' => 'javascript:' . $url, 'ID' => 'rename', 'TYPE' => 'page'); if (self::IsDeleteable()) { $url = $APPLICATION->GetPopupLink(array('URL' => CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => $arParams['ELEMENT_ID'], 'group_id' => CWikiSocnet::$iSocNetId)), array($arParams['OPER_VAR'] => 'delete')), 'PARAMS' => array('width' => 400, 'height' => 150, 'resizable' => false))); $arLinks['delete'] = array('NAME' => GetMessage('PAGE_DELETE'), 'TITLE' => GetMessage('PAGE_DELETE_TITLE'), 'CURRENT' => in_array('delete', $arPage), 'LINK' => 'javascript:' . $url, 'ID' => 'delete', 'TYPE' => 'edit', 'IS_RED' => 'N'); } } /** $arLinks['access'] = array( 'NAME' => GetMessage('PAGE_ACCESS'), 'TITLE' => GetMessage('PAGE_ACCESS_TITLE'), 'CURRENT' => in_array('access', $arPage), 'LINK' => CHTTP::urlAddParams( CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array( 'wiki_name' => $arParams['ELEMENT_NAME'], 'group_id' => CWikiSocnet::$iSocNetId ) ), array($arParams['OPER_VAR'] => 'access') ), 'ID' => 'access', 'TYPE' => 'edit', 'IS_RED' => 'N' ); **/ } return $arLinks; }
/** * Returns URL to backup webservice * * @param array[string]string $arParams * @return string * */ protected function getActionURL($arParams = 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; }
function findCorrectFile($path, &$strWarn, $warning = false) { $arUrl = CHTTP::ParseURL($path); if ($arUrl && is_array($arUrl)) { if (isset($arUrl['host'], $arUrl['scheme'])) { if (strpos($arUrl['host'], 'xn--') !== false) { // Do nothing } else { $originalPath = $path; $path = $arUrl['scheme'] . '://' . $arUrl['host']; $arErrors = array(); if (defined("BX_UTF")) { $punicodedPath = CBXPunycode::ToUnicode($path, $arErrors); } else { $punicodedPath = CBXPunycode::ToASCII($path, $arErrors); } if ($punicodedPath == $path) { return $originalPath; } else { $path = $punicodedPath; } if ($arUrl['port'] && ($arUrl['port'] != 80 && $arUrl['port'] != 443)) { $path .= ':' . $arUrl['port']; } $path .= $arUrl['path_query']; } } else { $DOC_ROOT = $_SERVER["DOCUMENT_ROOT"]; $path = Rel2Abs("/", $path); $path_ = $path; $io = CBXVirtualIo::GetInstance(); if (!$io->FileExists($DOC_ROOT . $path)) { if (CModule::IncludeModule('clouds')) { $path = CCloudStorage::FindFileURIByURN($path, "component:player"); if ($path == "") { if ($warning) { $strWarn .= $warning . "<br />"; } $path = $path_; } } else { if ($warning) { $strWarn .= $warning . "<br />"; } $path = $path_; } } } } return $path; }
/** * Returns action response XML * * @param string $action * @return CDataXML * */ protected function action($action) { global $APPLICATION; $url = $this->getActionURL(array("action" => $action)); $server = new CHTTP(); $strXML = $server->Get($url); if ($strXML === false) { $e = $APPLICATION->GetException(); if (is_object($e)) { throw new CBitrixCloudException($e->GetString(), ""); } else { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array("#STATUS#" => "-1")), ""); } } if ($server->status != 200) { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array("#STATUS#" => (string) $server->status)), ""); } $obXML = new CDataXML(); if (!$obXML->LoadString($strXML)) { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_XML_PARSE", array("#CODE#" => "1")), ""); } $node = $obXML->SelectNodes("/error/code"); if (is_object($node)) { $error_code = $node->textContent(); $message_id = "BCL_CDN_WS_" . $error_code; /* GetMessage("BCL_CDN_WS_LICENSE_EXPIRE"); GetMessage("BCL_CDN_WS_LICENSE_NOT_FOUND"); GetMessage("BCL_CDN_WS_QUOTA_EXCEEDED"); */ if (HasMessage($message_id)) { throw new CBitrixCloudException(GetMessage($message_id), $error_code); } else { throw new CBitrixCloudException(GetMessage("BCL_CDN_WS_SERVER", array("#STATUS#" => $error_code)), $error_code); } } return $obXML; }
public static function AddByChannel($channelId, $arMessage) { global $DB; if (strlen($arMessage['module_id']) <= 0 || strlen($arMessage['command']) <= 0) { return false; } $arData = array('module_id' => $arMessage['module_id'], 'command' => $arMessage['command'], 'params' => is_array($arMessage['params']) ? $arMessage['params'] : array()); if (CPullOptions::GetNginxStatus()) { $CHTTP = new CHTTP(); $CHTTP->http_timeout = 10; if ($CHTTP->HTTPQuery('POST', CPullOptions::GetPublishUrl($channelId), str_replace("\n", " ", CUtil::PhpToJsObject(array('CHANNEL_ID' => $channelId, 'MESSAGE' => array($arData), 'ERROR' => ''))))) { $result = $CHTTP->result; } } else { $arParams = array('CHANNEL_ID' => $channelId, 'MESSAGE' => str_replace("\n", " ", serialize($arData)), '~DATE_CREATE' => $DB->CurrentTimeFunction()); $id = IntVal($DB->Add("b_pull_stack", $arParams, array("MESSAGE"))); $result = $id ? '{"channel": "' . $channelId . '", "id": "' . $id . '"}' : false; } if (isset($arMessage['push_text']) && strlen($arMessage['push_text']) > 0 && isset($arMessage['push_user']) && intval($arMessage['push_user']) > 0) { $CPushManager = new CPushManager(); $CPushManager->AddQueue(array('USER_ID' => $arMessage['push_user'], 'MESSAGE' => str_replace("\n", " ", $arMessage['push_text']), 'PARAMS' => $arMessage['push_params'], 'TAG' => isset($arMessage['push_tag']) ? $arMessage['push_tag'] : '')); } return $result; }
/** * Returns URL to update policy * * @param array[string]string $arParams * @return string * */ protected function getActionURL($arParams = array()) { $arErrors = array(); $domainTmp = CBXPunycode::ToASCII($this->domain, $arErrors); if (strlen($domainTmp) > 0) { $domain = $domainTmp; } else { $domain = $this->domain; } $arParams["license"] = md5(LICENSE_KEY); $arParams["domain"] = $domain; $url = COption::GetOptionString("bitrixcloud", "cdn_policy_url"); $url = CHTTP::urlAddParams($url, $arParams, array("encode" => true)); return $url; }
function hrefHtml() { $result = ''; $params = array(); $key = ''; $argNum = func_num_args(); for ($i = 0; $i < $argNum; $i++) { if ($i == 0) { $result = func_get_arg($i); } elseif ($i % 2) { $key = func_get_arg($i); } else { $params[$key] = func_get_arg($i); } } $result = CHTTP::urlAddParams($result, $params, array("encode" => true)); return htmlspecialcharsbx($result); }
/** * Returns script filename by URL * * @param string $site Site ID. * @param string $url URL. * @return string|null */ public static function getRealPath($site, $url) { $docRoot = rtrim(\Bitrix\Main\SiteTable::getDocumentRoot($site), '/'); $url = str_replace('\\', '/', $url); $url = \CHTTP::urnEncode($url); $uri = new Web\Uri($url); $path = \CHTTP::urnDecode($uri->getPath()); if (substr($path, -1, 1) == '/') { $path .= 'index.php'; } $file = new IO\File($docRoot . $path); if ($file->isExists()) { return substr($file->getPath(), strlen($docRoot)); } if ($rewriteRules = AdminHelper::getRewriteRules($site)) { $pathQuery = \CHTTP::urnDecode($uri->getPathQuery()); foreach ($rewriteRules as &$item) { if (preg_match($item['CONDITION'], $pathQuery)) { $url = empty($item['PATH']) && !empty($item['RULE']) ? preg_replace($item['CONDITION'], $item['RULE'], $pathQuery) : $item['PATH']; $url = \CHTTP::urnEncode($url); $uri = new Web\Uri($url); $path = \CHTTP::urnDecode($uri->getPath()); $file = new IO\File($docRoot . $path); if ($file->isExists()) { $pathTmp = str_replace('.', '', strtolower(ltrim($path, '/\\'))); $pathTmp7 = substr($pathTmp, 0, 7); if ($pathTmp7 == 'upload/' || $pathTmp7 == 'bitrix/') { continue; } if ($file->getExtension() != 'php') { continue; } return substr($file->getPath(), strlen($docRoot)); } } } } return null; }
/** * Performs actions enabled by its parameters. * * @param string $message Message to show with bitrix:system.show_message component. * @param bool $defineConstant If true then ERROR_404 constant defined. * @param bool $setStatus If true sets http response status. * @param bool $showPage If true then work area will be cleaned and /404.php will be included. * @param string $pageFile Alternative file to /404.php. * * @return void */ public static function process404($message = "", $defineConstant = true, $setStatus = true, $showPage = false, $pageFile = "") { /** @global \CMain $APPLICATION */ global $APPLICATION; if ($message != "") { $APPLICATION->includeComponent("bitrix:system.show_message", ".default", array("MESSAGE" => $message, "STYLE" => "errortext"), null, array("HIDE_ICONS" => "Y")); } if ($defineConstant && !defined("ERROR_404")) { define("ERROR_404", "Y"); } if ($setStatus) { \CHTTP::setStatus("404 Not Found"); } if ($showPage) { if ($APPLICATION->RestartWorkarea()) { if ($pageFile) { require \Bitrix\Main\Application::getDocumentRoot() . rel2abs("/", "/" . $pageFile); } else { require \Bitrix\Main\Application::getDocumentRoot() . "/404.php"; } die; } } }
function NewMediaObject($params) { global $USER, $DB; $blogId = IntVal(CBlogMetaWeblog::DecodeParams($params[0]["#"]["value"][0]["#"])); $user = CBlogMetaWeblog::DecodeParams($params[1]["#"]["value"][0]["#"]); $password = CBlogMetaWeblog::DecodeParams($params[2]["#"]["value"][0]["#"]); $arImage = $params[3]["#"]["value"][0]["#"]["struct"][0]["#"]["member"]; foreach ($arImage as $val) { $arImageInfo[$val["#"]["name"][0]["#"]] = CBlogMetaWeblog::DecodeParams($val["#"]["value"][0]["#"]); } if (CBlogMetaWeblog::Authorize($user, $password)) { $result = ''; $userId = $USER->GetID(); if (IntVal($blogId) > 0) { $dbBlog = CBlog::GetList(array(), array("GROUP_SITE_ID" => SITE_ID, "ACTIVE" => "Y", "ID" => $blogId), false, false, array("ID", "URL", "NAME")); if ($arBlog = $dbBlog->GetNext()) { $filename = trim(str_replace("\\", "/", trim($arImageInfo["name"])), "/"); $DIR_NAME = CTempFile::GetDirectoryName(12); $FILE_NAME = rel2abs($DIR_NAME, "/" . $filename); if (strlen($FILE_NAME) > 1 && $FILE_NAME === "/" . $filename) { $ABS_FILE_NAME = $DIR_NAME . $FILE_NAME; } else { $ABS_FILE_NAME = ""; } CheckDirPath($DIR_NAME); if (strlen($ABS_FILE_NAME) > 0 && ($fp = fopen($ABS_FILE_NAME, "ab"))) { $result = fwrite($fp, $arImageInfo["bits"]); if ($result !== (function_exists("mb_strlen") ? mb_strlen($arImageInfo["bits"], 'latin1') : strlen($arImageInfo["bits"]))) { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>Error on saving media object</string></value> </member> </struct> </value> </fault>'; } fclose($fp); } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>Error on saving media object</string></value> </member> </struct> </value> </fault>'; } $arFields = array("BLOG_ID" => $arBlog["ID"], "USER_ID" => $userId, "=TIMESTAMP_X" => $DB->GetNowFunction(), "FILE_ID" => array("name" => $arImageInfo["name"], "tmp_name" => $ABS_FILE_NAME, "MODULE_ID" => "blog", "type" => $arImageInfo["type"])); $imageId = CBlogImage::Add($arFields); $arImg = CBlogImage::GetByID($imageId); $arFile = CFile::GetFileArray($arImg["FILE_ID"]); $path = $arFile["SRC"]; $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); } } if (strlen($path) > 0) { return '<params> <param> <value> <struct> <member> <name>url</name> <value> <string>' . CHTTP::URN2URI($path, $serverName) . '</string> </value> </member> </struct> </value> </param> </params>'; } } } return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>Error on saving media object</string></value> </member> </struct> </value> </fault>'; } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>' . $arAuthResult["MESSAGE"] . '</string></value> </member> </struct> </value> </fault>'; } }
protected function unEscape($data) { global $APPLICATION; if (is_array($data)) { $res = array(); foreach ($data as $k => $v) { $k = $APPLICATION->ConvertCharset(\CHTTP::urnDecode($k), "UTF-8", LANG_CHARSET); $res[$k] = $this->unEscape($v); } } else { $res = $APPLICATION->ConvertCharset(\CHTTP::urnDecode($data), "UTF-8", LANG_CHARSET); } return $res; }
$arResult["CURRENT"]["COUNT"] = CIBlockElement::GetList(array(), $arFilter, array()); foreach ($arResult["NEXT"] as $key => $value) { $arResult["NEXT"][$key]["PICTURE"] = CFile::GetFileArray($value["PREVIEW_PICTURE"]); } foreach ($arResult["PREV"] as $key => $value) { $arResult["PREV"][$key]["PICTURE"] = CFile::GetFileArray($value["PREVIEW_PICTURE"]); } //echo "<pre>",htmlspecialcharsbx(print_r($arResult,true)),"</pre>"; $this->SetResultCacheKeys(array("ID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "LIST_PAGE_URL", "PROPERTIES", "NAME", "SECTION")); $this->IncludeComponentTemplate(); } else { $this->AbortResultCache(); ShowError(GetMessage("PHOTO_ELEMENT_NOT_FOUND")); @define("ERROR_404", "Y"); if ($arParams["SET_STATUS_404"] === "Y") { CHTTP::SetStatus("404 Not Found"); } } } /************************************************************************* Any actions without cache (if there was some to display) *************************************************************************/ if (isset($arResult["ID"])) { $arTitleOptions = null; if (CModule::IncludeModule("iblock")) { CIBlockElement::CounterInc($arResult["ID"]); if ($USER->IsAuthorized()) { if ($APPLICATION->GetShowIncludeAreas() || $arParams["SET_TITLE"] || isset($arResult[$arParams["BROWSER_TITLE"]])) { $arReturnUrl = array("add_element" => CIBlock::GetArrayByID($arResult["IBLOCK_ID"], "DETAIL_PAGE_URL"), "delete_element" => isset($arResult["SECTION"]) ? $arResult["SECTION"]["SECTION_PAGE_URL"] : $arResult["LIST_PAGE_URL"]); $arButtons = CIBlock::GetPanelButtons($arResult["IBLOCK_ID"], $arResult["ID"], $arResult["IBLOCK_SECTION_ID"], array("RETURN_URL" => $arReturnUrl)); if ($APPLICATION->GetShowIncludeAreas()) {
} } } // obtain a list of pictures page $arResult['IMAGES'] = array(); if (!empty($arResult['ELEMENT']['IMAGES'])) { foreach ($arResult['ELEMENT']['IMAGES'] as $_imgID) { $rsFile = CFile::GetByID($_imgID); $arFile = $rsFile->Fetch(); $aImg = array(); $aImg['ID'] = $_imgID; $aImg['ORIGINAL_NAME'] = $arFile['ORIGINAL_NAME']; $aImg['FILE_SHOW'] = CFile::ShowImage($_imgID, 100, 100, "id=\"{$_imgID}\" border=\"0\" style=\"cursor:pointer;\" onclick=\"doInsert('[File:" . CUtil::JSEscape(htmlspecialcharsbx($arFile['ORIGINAL_NAME'])) . "]','',false, '{$_imgID}')\" title='" . GetMessage('WIKI_IMAGE_INSERT') . "'"); $arResult['IMAGES'][] = $aImg; } } include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/wiki/include/nav.php'; $arResult['PATH_TO_POST_EDIT'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_POST_EDIT'], array('wiki_name' => urlencode($arParams['ELEMENT_NAME']), 'group_id' => CWikiSocnet::$iSocNetId)), $arParams['IN_COMPLEX'] == 'Y' && $arParams['SEF_MODE'] == 'N' ? array($arParams['OPER_VAR'] => $arResult['WIKI_oper']) : array()); $arResult['~PATH_TO_POST_EDIT'] = urldecode($arResult['PATH_TO_POST_EDIT']); //because it can change the page name, and hence the path for the parameter "Action" in tag "Form" if (strpos(POST_FORM_ACTION_URI, 'SEF_APPLICATION_CUR_PAGE_URL=') !== false) { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = CHTTP::urlAddParams(CHTTP::urlDeleteParams(POST_FORM_ACTION_URI, array('SEF_APPLICATION_CUR_PAGE_URL')), array('SEF_APPLICATION_CUR_PAGE_URL' => urlencode($arResult['~PATH_TO_POST_EDIT']))); } else { $arResult['PATH_TO_POST_EDIT_SUBMIT'] = $arResult['PATH_TO_POST_EDIT']; } $sCatName = ''; $arResult["IS_CATEGORY_PAGE"] = CWikiUtils::IsCategoryPage($arResult['ELEMENT']['NAME_LOCALIZE'], $sCatName); } } $this->IncludeComponentTemplate(); unset($GLOBALS['arParams']);
} } $arInputNames["set_filter"] = true; $arInputNames["del_filter"] = true; $arSkip = array("AUTH_FORM" => true, "TYPE" => true, "USER_LOGIN" => true, "USER_CHECKWORD" => true, "USER_PASSWORD" => true, "USER_CONFIRM_PASSWORD" => true, "USER_EMAIL" => true, "captcha_word" => true, "captcha_sid" => true, "login" => true, "Login" => true, "backurl" => true, "ajax" => true, "mode" => true, "bxajaxid" => true, "AJAX_CALL" => true); $arResult["FORM_ACTION"] = $clearURL; $arResult["HIDDEN"] = array(); foreach (array_merge($_GET, $_POST) as $key => $value) { if (!isset($arInputNames[$key]) && !isset($arSkip[$key]) && !is_array($value)) { $arResult["HIDDEN"][] = array("CONTROL_ID" => htmlspecialcharsbx($key), "CONTROL_NAME" => htmlspecialcharsbx($key), "HTML_VALUE" => htmlspecialcharsbx($value)); } } if ($arParams["XML_EXPORT"] === "Y" && $arResult["SECTION"] && $arResult["SECTION"]["RIGHT_MARGIN"] - $arResult["SECTION"]["LEFT_MARGIN"] === 1) { $exportUrl = CHTTP::urlAddParams($clearURL, array("mode" => "xml")); $APPLICATION->AddHeadString('<meta property="ya:interaction" content="XML_FORM" />'); $APPLICATION->AddHeadString('<meta property="ya:interaction:url" content="' . CHTTP::urn2uri($exportUrl) . '" />'); } if ($arParams["XML_EXPORT"] === "Y" && $_REQUEST["mode"] === "xml") { $this->setFrameMode(false); ob_start(); $this->IncludeComponentTemplate("xml"); $xml = ob_get_contents(); $APPLICATION->RestartBuffer(); while (ob_end_clean()) { } header("Content-Type: text/xml; charset=utf-8"); echo $APPLICATION->convertCharset($xml, LANG_CHARSET, "utf-8"); require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php"; die; } elseif (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "y") { $this->setFrameMode(false);
private function _query($method, $params = array()) { global $APPLICATION; if ($this->arLink) { if (!$method) $method = 'lead.add'; $arPostFields = array( 'method' => $method ); if ($this->arAuth) { $arPostFields['LOGIN'] = $this->arAuth['LOGIN']; $arPostFields['PASSWORD'] = $this->arAuth['PASSWORD']; } else { $arPostFields['AUTH'] = $this->arLink['AUTH_HASH']; } $arPostFields = array_merge($params, $arPostFields); $arPostFields = $APPLICATION->ConvertCharsetArray($arPostFields, LANG_CHARSET, 'UTF-8'); $obHTTP = new CHTTP(); $result_text = $obHTTP->Post($this->arLink['URL'], $arPostFields); $version_header = $obHTTP->headers['X-CRM-Version']; if (strlen($version_header) <= 0 || version_compare($version_header, "11.5.0") < 0) { $result_text = '{"error":"500","error_message":"'.GetMessage('FORM_CRM_VERSION_FAILURE').'"}'; } else { $result_text = $APPLICATION->ConvertCharset($result_text, 'UTF-8', LANG_CHARSET); } $this->lastResult = new _CFormCrmSenderResult($result_text); if ($this->lastResult->field('AUTH')) { $this->_setAuthHash($this->lastResult->field('AUTH')); } return $this->lastResult; } return false; }
public function GetCurrentUser() { if($this->access_token === false) return false; $result = CHTTP::sGet(self::CONTACTS_URL."?access_token=".urlencode($this->access_token)); if(!defined("BX_UTF")) $result = CharsetConverter::ConvertCharset($result, "utf-8", LANG_CHARSET); return CUtil::JsObjectToPhp($result); }