Server IP : 85.193.89.191 / Your IP : 3.138.135.56 Web Server : Apache System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64 User : bitrix ( 600) PHP Version : 8.1.27 Disable Function : NONE MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/bitrix/www/bitrix/modules/mail/lib/registrar/ |
Upload File : |
<?php namespace Bitrix\Mail\Registrar; use \Bitrix\Main\Text\Encoding; class RegRu extends Registrar { /** * Checks domain available. * @param string $user User name. * @param string $password User password. * @param string $domain Domain name. * @param string|null &$error Error message if occurred. * @return bool|null Returns true if domain exists. */ public static function checkDomain(string $user, string $password, string $domain, ?string &$error): ?bool { $domain = mb_strtolower($domain); $domain = Encoding::convertEncoding($domain, SITE_CHARSET, 'UTF-8'); $result = \CMailRegru::checkDomain($user, $password, $domain, $error); if ($result !== false) { if ( isset($result['domains'][0]['dname']) && $result['domains'][0]['dname'] == $domain ) { $result = $result['domains'][0]; if ($result['result'] == 'Available') { return false; } else if ($result['error_code'] == 'DOMAIN_ALREADY_EXISTS') { return true; } $error = $result['error_code']; } else { $error = 'unknown'; } } return null; } /** * Suggests domains by query words. * @param string $user User name. * @param string $password User password. * @param string $word1 Query word 1. * @param string $word2 Query word 2. * @param array $tlds Query tlds. * @param string|null &$error Error message if occurred. * @return array|null */ public static function suggestDomain(string $user, string $password, string $word1, string $word2, array $tlds, ?string &$error): ?array { $word1 = Encoding::convertEncoding($word1, SITE_CHARSET, 'UTF-8'); $word2 = Encoding::convertEncoding($word2, SITE_CHARSET, 'UTF-8'); foreach ($tlds as &$v) { $v = Encoding::convertEncoding($v, SITE_CHARSET, 'UTF-8'); } $result = \CMailRegru::suggestDomain($user, $password, $word1, $word2, $tlds, $error); if ($result !== false) { $suggestions = array(); if (!empty($result['suggestions']) && is_array($result['suggestions'])) { foreach ($result['suggestions'] as $entry) { foreach ($entry['avail_in'] as $tlds) { $suggestions[] = Encoding::convertEncoding( sprintf('%s.%s', $entry['name'], $tlds), 'UTF-8', SITE_CHARSET ); } } } return $suggestions; } return null; } /** * Creates new domain. * @param string $user User name. * @param string $password User password. * @param string $domain Domain name. * @param array $params Additional params. * @param string|null &$error Error message if occurred. * @return bool|null Returns true on success. */ public static function createDomain(string $user, string $password, string $domain, array $params, ?string &$error): ?bool { $domain = mb_strtolower($domain); $params = array_merge( $params, array( 'period' => 1, 'nss' => array( 'ns0' => 'ns1.reg.ru.', 'ns1' => 'ns2.reg.ru.' ), ) ); if (array_key_exists('ip', $params)) { $params['enduser_ip'] = $params['ip']; } $domain = Encoding::convertEncoding($domain, SITE_CHARSET, 'UTF-8'); $params = Encoding::convertEncoding($params, SITE_CHARSET, 'UTF-8'); $result = \CMailRegru::createDomain($user, $password, $domain, $params, $error); if ($result !== false) { if (isset($result['dname']) && $result['dname'] == $domain) { return true; } else { $error = $result['error_code'] ?? 'unknown'; } } return null; } /** * Renews exists domain. * @param string $user User name. * @param string $password User password. * @param string $domain Domain name. * @param string|null &$error Error message if occurred. * @return bool|null Returns true on success. */ public static function renewDomain(string $user, string $password, string $domain, ?string &$error): ?bool { $domain = Encoding::convertEncoding($domain, SITE_CHARSET, 'UTF-8'); $result = \CMailRegru::renewDomain($user, $password, $domain, ['period' => 1], $error); if ($result !== false) { if (isset($result['dname']) && mb_strtolower($result['dname']) == mb_strtolower($domain)) { return true; } else { $error = 'unknown'; } } return null; } /** * Updates domain DNS. * @param string $user User name. * @param string $password User password. * @param string $domain Domain name. * @param array $params Additional params. * @param string|null &$error Error message if occurred. * @return bool|null Returns true on success. */ public static function updateDns(string $user, string $password, string $domain, array $params, ?string &$error): ?bool { $domain = mb_strtolower($domain); $domain = Encoding::convertEncoding($domain, SITE_CHARSET, 'UTF-8'); $params = Encoding::convertEncoding($params, SITE_CHARSET, 'UTF-8'); foreach ($params as $k => $record) { switch ($record['type']) { case 'a': $params[$k] = array( 'action' => 'add_alias', 'subdomain' => '@', 'ipaddr' => $record['value'] ); break; case 'alias': $params[$k] = array( 'action' => 'add_alias', 'subdomain' => $record['name'], 'ipaddr' => $record['value'] ); break; case 'cname': $params[$k] = array( 'action' => 'add_cname', 'subdomain' => $record['name'], 'canonical_name' => $record['value'] ); break; case 'mx': $params[$k] = array( 'action' => 'add_mx', 'subdomain' => $record['name'], 'mail_server' => $record['value'], 'priority' => $record['priority'] ); break; } } $result = \CMailRegru::updateDns($user, $password, $domain, $params, $error); if ($result !== false) { if (isset($result['dname']) && $result['dname'] == $domain) { if (isset($result['result']) && $result['result'] == 'success') { return true; } else { $error = $result['error_code'] ?? 'unknown'; } } else { $error = 'unknown'; } } return null; } /** * Returns domain's list. * @param string $user User name. * @param string $password User password. * @param string|null &$error Error message if occurred. * @return array|null */ public static function getDomainsList(string $user, string $password, ?string &$error): ?array { $result = \CMailRegru::getDomainsList($user, $password, $error); if ($result !== false) { $list = []; foreach ($result as $domain) { if (!empty($domain['dname'])) { $list[$domain['dname']] = [ 'domain_name' => $domain['dname'], 'creation_date' => $domain['creation_date'], 'expiration_date' => $domain['expiration_date'], 'status' => $domain['state'] ]; } } return $list; } return null; } }