Your IP : 172.70.80.238


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/modules/landing/lib/domain/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/modules/landing/lib/domain/register.php

<?php
namespace Bitrix\Landing\Domain;

use \Bitrix\Landing\Manager;
use \Bitrix\Main\Web\HttpClient;

class Register
{
	/**
	 * B24 service for detect IP for current lang zone.
	 */
	const B24_SERVICE_DETECT_IP = 'https://ip.bitrix24.site/getipforzone/?bx24_zone=';

	/**
	 * B24 service for detect that domain is available.
	 */
	const B24_SERVICE_DETECT_DOMAIN = 'https://ip.bitrix24.site/getdomainstatus/?bx24_site_domain=';

	/**
	 * Default IP for DNS.
	 */
	const B24_DEFAULT_DNS_IP = '52.59.124.117';

	/**
	 * Default CNAME for DNS.
	 */
	const B24_DEFAULT_DNS_CNAME = 'lb.bitrix24.site.';

	/**
	 * Finds registrator instance and returns it.
	 * @return Provider|null
	 */
	public static function getInstance(): ?Provider
	{
		return new Provider\Bitrix24();
	}

	/**
	 * Returns IP for A record DNS.
	 * @param string|null $tld Top level domain.
	 * @return string
	 */
	protected static function getINA(?string $tld = null): string
	{
		$http = new HttpClient;
		$zone = ($tld == 'kz') ? 'kz' : Manager::getZone();
		$ip = $http->get(self::B24_SERVICE_DETECT_IP . $zone);
		$ip = \CUtil::jsObjectToPhp($ip);

		return isset($ip['IP']) ? $ip['IP'] : self::B24_DEFAULT_DNS_IP;
	}

	/**
	 * Returns INA && CNAME records value for domain registration.
	 * @param string|null $tld Top level domain.
	 * @return array
	 */
	public static function getDNSRecords(?string $tld = null): array
	{
		static $result = null;

		if ($result !== null)
		{
			return $result;
		}

		$result = [
			'INA' => self::getINA($tld),
			'CNAME' => self::B24_DEFAULT_DNS_CNAME
		];

		return $result;
	}

	/**
	 * Returns true if domain is enabled and active now.
	 * @param string $domainName Domain name.
	 * @return bool
	 */
	public static function isDomainActive(string $domainName): bool
	{
		$http = new HttpClient;
		$status = $http->get(self::B24_SERVICE_DETECT_DOMAIN . $domainName);
		$status = \CUtil::jsObjectToPhp($status);
		// protect from bad answer
		if (!isset($status['status']))
		{
			return true;
		}
		return $status['status'] === 'ready';
	}
}