403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/bitrixcloud/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/bitrixcloud/classes/general/monitoring_result.php
<?php

interface CBitrixCloudMonitoring_Access extends Iterator, ArrayAccess
{
	// new stuff
}

class CBitrixCloudMonitoringTest
{
	private $name = '';
	private $status = '';
	private $time = 0;
	private $uptime = '';
	private $result = '';

	/**
	 *
	 * @param string $name
	 * @param string $status
	 * @param int $time UTC timestamp
	 * @param string $result
	 * @return void
	 *
	 */
	public function __construct($name, $status, $time, $uptime, $result)
	{
		$this->name = $name;
		$this->status = $status;
		$this->time = $time;
		$this->uptime = $uptime;
		$this->result = $result;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getName()
	{
		return $this->name;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getStatus()
	{
		return $this->status;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getResult()
	{
		return $this->result;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getUptime()
	{
		return $this->uptime;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getTime()
	{
		return $this->time;
	}

	/**
	 *
	 * @param CDataXMLNode $node
	 * @return CBitrixCloudMonitoringTest
	 *
	 */
	public static function fromXMLNode(CDataXMLNode $node)
	{
		return new CBitrixCloudMonitoringTest(
			$node->getAttribute('id'),
			$node->getAttribute('status') == 2 ? CBitrixCloudMonitoringResult::RED_LAMP : CBitrixCloudMonitoringResult::GREEN_LAMP,
			strtotime($node->getAttribute('time')),
			$node->getAttribute('uptime'),
			$node->textContent()
		);
	}
}

class CBitrixCloudMonitoringDomainResult implements CBitrixCloudMonitoring_Access
{
	/** @var string $name */
	private $name = '';
	/** @var array[int]CBitrixCloudMonitoringTest $tests */
	private $tests = /*.(array[int]CBitrixCloudMonitoringTest.*/
		[];

	/**
	 *
	 * @return string
	 *
	 */
	public function getName()
	{
		return $this->name;
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getStatus()
	{
		/* @var CBitrixCloudMonitoringTest $testResult */
		foreach ($this->tests as $testResult)
		{
			if ($testResult->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP)
			{
				return CBitrixCloudMonitoringResult::RED_LAMP;
			}
		}
		return CBitrixCloudMonitoringResult::GREEN_LAMP;
	}

	/**
	 *
	 * @param string $name
	 * @param array [int]CBitrixCloudMonitoringTest $tests
	 * @return void
	 *
	 */
	public function __construct($name, array $tests)
	{
		$this->name = $name;
		$this->setTests($tests);
	}

	/**
	 *
	 * @param string $testName
	 * @return CBitrixCloudMonitoringTest
	 *
	 */
	public function getTestByName($testName)
	{
		return $this->tests[$testName];
	}

	/**
	 *
	 * @return array[int]CBitrixCloudMonitoringTest
	 *
	 */
	public function getTests()
	{
		return $this->tests;
	}

	/**
	 *
	 * @param array [int]CBitrixCloudMonitoringTest $tests
	 * @return CBitrixCloudMonitoringDomainResult
	 *
	 */
	public function setTests(array $tests)
	{
		foreach ($tests as $test)
		{
			if (
				is_object($test)
				&& $test instanceof CBitrixCloudMonitoringTest
			)
			{
				$this->tests[$test->getName()] = $test;
			}
		}
		return $this;
	}

	public function saveToOptions(CBitrixCloudOption $option)
	{
		$tests = [];
		/* @var CBitrixCloudMonitoringTest $testResult */
		foreach ($this->tests as $testName => $testResult)
		{
			$tests[$testName] = serialize([
				'status' => $testResult->getStatus(),
				'time' => $testResult->getTime(),
				'uptime' => $testResult->getUptime(),
				'result' => $testResult->getResult(),
			]);
		}
		$option->setArrayValue($tests);
	}

	public static function loadFromOptions($name, CBitrixCloudOption $option)
	{
		$tests = [];
		foreach ($option->getArrayValue() as $testName => $testResult)
		{
			$testResult = unserialize($testResult, ['allowed_classes' => false]);
			if (is_array($testResult))
			{
				$test = new CBitrixCloudMonitoringTest(
					$testName,
					$testResult['status'],
					$testResult['time'],
					$testResult['uptime'],
					$testResult['result']
				);
				$tests[$test->getName()] = $test;
			}
		}
		return new CBitrixCloudMonitoringDomainResult($name, $tests);
	}

	/**
	 *
	 * @param CDataXMLNode $node
	 * @return CBitrixCloudMonitoringDomainResult
	 *
	 */
	public static function fromXMLNode(CDataXMLNode $node)
	{
		$name = $node->getAttribute('name');
		$tests = [];
		foreach ($node->children() as $nodeTest)
		{
			$tests[] = CBitrixCloudMonitoringTest::fromXMLNode($nodeTest);
		}
		return new CBitrixCloudMonitoringDomainResult($name, $tests);
	}

	public function rewind()
	{
		reset($this->tests);
	}

	public function current()
	{
		return current($this->tests);
	}

	public function key()
	{
		return key($this->tests);
	}

	public function next()
	{
		next($this->tests);
	}

	public function valid()
	{
		return key($this->tests) !== null;
	}

	public function offsetSet($offset, $value)
	{
		if (is_null($offset))
		{
			$this->tests[] = $value;
		}
		else
		{
			$this->tests[$offset] = $value;
		}
	}

	public function offsetExists($offset)
	{
		return isset($this->tests[$offset]);
	}

	public function offsetUnset($offset)
	{
		unset($this->tests[$offset]);
	}

	public function offsetGet($offset)
	{
		return $this->tests[$offset] ?? null;
	}
}

class CBitrixCloudMonitoringResult implements CBitrixCloudMonitoring_Access
{
	const GREEN_LAMP = 'green';
	const RED_LAMP = 'red';

	private $domains = /*.(array[string]CBitrixCloudMonitoringDomainResult).*/
		[];

	/**
	 *
	 * @param CBitrixCloudMonitoringDomainResult $domainResult
	 * @return CBitrixCloudMonitoringResult
	 *
	 */
	public function addDomainResult(CBitrixCloudMonitoringDomainResult $domainResult)
	{
		$this->domains[$domainResult->getName()] = $domainResult;
		return $this;
	}

	/**
	 *
	 * @param string $domainName
	 * @return CBitrixCloudMonitoringDomainResult
	 *
	 */
	public function getResultByDomainName($domainName)
	{
		return $this->domains[$domainName];
	}

	/**
	 *
	 * @return string
	 *
	 */
	public function getStatus()
	{
		foreach ($this->domains as $domainResult)
		{
			if ($domainResult->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP)
			{
				return CBitrixCloudMonitoringResult::RED_LAMP;
			}
		}
		return CBitrixCloudMonitoringResult::GREEN_LAMP;
	}

	public static function isExpired()
	{
		$time = CBitrixCloudOption::getOption('monitoring_expire_time')->getIntegerValue();
		return ($time < time());
	}

	public static function getExpirationTime()
	{
		return CBitrixCloudOption::getOption('monitoring_expire_time')->getIntegerValue();
	}

	public static function setExpirationTime($time)
	{
		$time = intval($time);
		CBitrixCloudOption::getOption('monitoring_expire_time')->setStringValue($time);
		return $time;
	}

	public static function loadFromOptions()
	{
		$domains = new CBitrixCloudMonitoringResult;
		foreach (CBitrixCloudOption::getOption('monitoring_result')->getArrayValue() as $i => $domainName)
		{
			$domains->addDomainResult(CBitrixCloudMonitoringDomainResult::loadFromOptions(
				$domainName,
				CBitrixCloudOption::getOption("monitoring_result_" . $i)
			));
		}
		return $domains;
	}

	public function saveToOptions()
	{
		$domainNames = array_keys($this->domains);
		CBitrixCloudOption::getOption('monitoring_result')->setArrayValue($domainNames);
		foreach ($domainNames as $i => $domainName)
		{
			$this->domains[$domainName]->saveToOptions(
				CBitrixCloudOption::getOption("monitoring_result_" . $i)
			);
		}
	}

	/**
	 *
	 * @param CDataXMLNode $node
	 * @return CBitrixCloudMonitoringResult
	 *
	 */
	public static function fromXMLNode(CDataXMLNode $node)
	{
		$domains = new CBitrixCloudMonitoringResult;
		if (is_array($node->children()))
		{
			foreach ($node->children() as $sub_node)
			{
				$domains->addDomainResult(CBitrixCloudMonitoringDomainResult::fromXMLNode($sub_node));
			}
		}
		return $domains;
	}

	public function rewind()
	{
		reset($this->domains);
	}

	public function current()
	{
		return current($this->domains);
	}

	public function key()
	{
		return key($this->domains);
	}

	public function next()
	{
		next($this->domains);
	}

	public function valid()
	{
		return key($this->domains) !== null;
	}

	public function offsetSet($offset, $value)
	{
		if (is_null($offset))
		{
			$this->domains[] = $value;
		}
		else
		{
			$this->domains[$offset] = $value;
		}
	}

	public function offsetExists($offset)
	{
		return isset($this->domains[$offset]);
	}

	public function offsetUnset($offset)
	{
		unset($this->domains[$offset]);
	}

	public function offsetGet($offset)
	{
		return $this->domains[$offset] ?? null;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit