%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/mail/classes/general/ |
| Current File : //home/bitrix/www/bitrix/modules/mail/classes/general/domain_registrar.php |
<?php
class CMailDomainRegistrar
{
public function __construct()
{
}
public static function isDomainExists($user, $password, $domain, &$error)
{
$domain = CharsetConverter::ConvertCharset($domain, SITE_CHARSET, 'UTF-8');
$result = CMailRegru::checkDomain($user, $password, $domain, $error);
if ($result !== false)
{
if (isset($result['domains'][0]['dname']) && strtolower($result['domains'][0]['dname']) == strtolower($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';
}
}
$error = self::getErrorCode($error);
return null;
}
public static function suggestDomain($user, $password, $word1, $word2, $tlds, &$error)
{
$word1 = CharsetConverter::ConvertCharset($word1, SITE_CHARSET, 'UTF-8');
$word2 = CharsetConverter::ConvertCharset($word2, SITE_CHARSET, 'UTF-8');
foreach ($tlds as &$v)
$v = CharsetConverter::ConvertCharset($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[] = CharsetConverter::ConvertCharset(
sprintf('%s.%s', $entry['name'], $tlds),
'UTF-8', SITE_CHARSET
);
}
}
}
return $suggestions;
}
$error = self::getErrorCode($error);
return null;
}
public static function createDomain($user, $password, $domain, $params, &$error)
{
$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 = \Bitrix\Main\Text\Encoding::convertEncoding($domain, SITE_CHARSET, 'UTF-8');
$params = \Bitrix\Main\Text\Encoding::convertEncoding($params, SITE_CHARSET, 'UTF-8');
$result = CMailRegru::createDomain($user, $password, $domain, $params, $error);
if ($result !== false)
{
if (isset($result['dname']) && strtolower($result['dname']) == strtolower($domain))
return true;
else
$error = 'unknown';
}
$error = self::getErrorCode($result['error_code']);
return null;
}
public static function checkDomain($user, $password, $domain, &$error)
{
$domain = CharsetConverter::convertCharset($domain, SITE_CHARSET, 'UTF-8');
$result = CMailRegru::checkDomainInfo($user, $password, $domain, $error);
if ($result !== false)
{
if (isset($result['dname']) && strtolower($result['dname']) == strtolower($domain))
return $result;
else
$error = 'unknown';
}
$error = self::getErrorCode($result['error_code']);
return null;
}
public static function renewDomain($user, $password, $domain, &$error)
{
$domain = CharsetConverter::convertCharset($domain, SITE_CHARSET, 'UTF-8');
$result = CMailRegru::renewDomain($user, $password, $domain, array('period' => 1), $error);
if ($result !== false)
{
if (isset($result['dname']) && strtolower($result['dname']) == strtolower($domain))
return true;
else
$error = 'unknown';
}
$error = self::getErrorCode($result['error_code']);
return null;
}
public static function updateDns($user, $password, $domain, $params, &$error)
{
foreach ($params as &$record)
{
switch ($record['type'])
{
case 'cname':
$record = array(
'action' => 'add_cname',
'subdomain' => $record['name'],
'canonical_name' => $record['value']
);
break;
case 'mx':
$record = 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']) && strtolower($result['dname']) == strtolower($domain))
{
if (isset($result['result']) && $result['result'] == 'success')
return true;
else
return false;
}
else
{
$error = 'unknown';
}
}
$error = self::getErrorCode($result['error_code']);
return null;
}
public static function getDomainsList($user, $password, $filter = array(), &$error)
{
$result = CMailRegru::getDomainsList($user, $password, $error);
if ($result !== false)
{
$list = array();
foreach ($result as $domain)
{
if (!empty($domain['dname']))
{
$list[$domain['dname']] = array(
'creation_date' => $domain['creation_date'],
'expiration_date' => $domain['expiration_date'],
'status' => $domain['state'],
);
}
}
return $list;
}
$error = self::getErrorCode($result['error_code']);
return null;
}
private static function getErrorCode($error)
{
$errorsList = array(
'unknown' => CMail::ERR_API_DEFAULT,
'INVALID_DOMAIN_NAME_PUNYCODE' => CMail::ERR_API_DEFAULT,
'TLD_DISABLED' => CMail::ERR_API_DEFAULT,
'DOMAIN_BAD_NAME' => CMail::ERR_API_DEFAULT,
'INVALID_DOMAIN_NAME_FORMAT' => CMail::ERR_API_DEFAULT,
'DOMAIN_INVALID_LENGTH' => CMail::ERR_API_DEFAULT,
'HAVE_MIXED_CODETABLES' => CMail::ERR_API_DEFAULT
);
return array_key_exists($error, $errorsList) ? $errorsList[$error] : CMail::ERR_API_DEFAULT;
}
}