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/rospirotorg.ru/bitrix/modules/mail/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/mail/classes/general/yandex2.php
<?php

IncludeModuleLangFile(__FILE__);

class CMailYandex2
{

	public function __construct()
	{
	}

	public static function getImapData()
	{
		return array(
			'server' => 'imap.yandex.ru',
			'port'   => 993,
			'secure' => true,
		);
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/domain/register
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 */
	public static function addDomain($token, $domain, &$error)
	{
		$result = self::post('https://pddimp.yandex.ru/api2/admin/domain/register', array(
			'token'  => $token,
			'domain' => $domain
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result;

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/domain/status
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 */
	public static function getDomainStatus($token, $domain, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/domain/details', array(
			'token'  => $token,
			'domain' => $domain
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result;

		self::setError($result, $error);
		return false;
	}

	/**
	 * http://pddimp.yandex.ru/api2/admin/domain/registration_status
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 */
	public static function checkDomainStatus($token, $domain, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/domain/registration_status', array(
			'token'  => $token,
			'domain' => $domain
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result;

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/domain/delete
	 *
	 * unknown - временный сбой, либо неопознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * not_master_admin - эта операция разрешена только основному администратору домена
	 */
	public static function deleteDomain($token, $domain, &$error)
	{
		$result = self::post('https://pddimp.yandex.ru/api2/admin/domain/delete', array(
			'token'  => $token,
			'domain' => $domain
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return true;

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/details
	 *
	 * unknown - временный сбой, либо неопознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * no_uid_or_login - не передан ни login, ни uid
	 * account_not_found - аккаунт не найден
	 */
	public static function checkUser($token, $domain, $login, &$error)
	{
		if (in_array(mb_strtolower($login), array('abuse', 'postmaster')))
			return 'exists';

		$result = self::get('https://pddimp.yandex.ru/api2/admin/email/details', array(
			'token'  => $token,
			'domain' => $domain,
			'login'  => $login
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return 'exists';
		else if (isset($result['error']) && $result['error'] == 'account_not_found')
			return 'nouser';

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/add
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * no_login - отсутствует обязательный параметр login
	 * no_password - отсутствует обязательный параметр login
	 * occupied - такой ящик уже существует
	 * login_reserved - данное имя является служебным, можно создать только рассылку с таким именем и подписаться на нее
	 * login-empty - пустой логин
	 * passwd-empty - пустой пароль
	 * login-toolong - логин больше 30 символов
	 * badlogin - логин содержит запрещенные символы
	 * passwd-tooshort - пароль короче 6 символов
	 * passwd-toolong - пароль длиннее 20 символов
	 * badpasswd - пароль содержит запрещенные символы
	 */
	public static function addUser($token, $domain, $login, $password, &$error)
	{
		$result = self::post('https://pddimp.yandex.ru/api2/admin/email/add', array(
			'token'    => $token,
			'domain'   => $domain,
			'login'    => $login,
			'password' => $password
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result['uid'];

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/get_oauth_token
	 *
	 * unknown - временный сбой, либо неопознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * no_uid_or_login - не передан ни login, ни uid ящика
	 * user_blocked - аккаунт заблокирован, обратитесь в службу поддержки
	 * account_not_found - аккаунт не найден
	 */
	public static function getOAuthToken($token, $domain, $login, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/email/get_oauth_token', array(
			'token'  => $token,
			'domain' => $domain,
			'login'  => $login
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result['oauth-token'];

		self::setError($result, $error);
		return false;
	}

	public static function passport($country, $oauthToken, $errorUrl)
	{
		switch ($country)
		{
			case 'ru':
			case 'ua':
				$passportZone = 'ru'; break;
			case 'en':
			case 'de':
				$passportZone = 'com'; break;
			default:
				$passportZone = 'com';
		}

		return sprintf(
			'https://passport.yandex.%s/passport?mode=oauth&type=trusted-pdd-partner&error_retpath=%s&access_token=%s',
			$passportZone, urlencode($errorUrl), urlencode($oauthToken)
		);
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/del
	 *
	 *
	 */
	public static function getMailInfo($token, $domain, $login, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/email/counters', array(
			'token'  => $token,
			'domain' => $domain,
			'login'  => $login
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result['counters']['unread'];

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/del
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * no_uid_or_login - не передан ни login, ни uid
	 * user_blocked - аккаунт заблокирован, обратитесь в службу поддержки
	 * account_not_found - аккаунт не найден
	 */
	public static function deleteUser($token, $domain, $login, &$error)
	{
		$result = self::post('https://pddimp.yandex.ru/api2/admin/email/del', array(
			'token'    => $token,
			'domain'   => $domain,
			'login'    => $login
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return true;

		self::setError($result, $error);
		return false;
	}

	/**
	 * https://pddimp.yandex.ru/api2/admin/email/edit
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 * no_uid_or_login - не передан ни login, ни uid
	 * passwd-tooshort - пароль короче 6 символов
	 * passwd-toolong - пароль длиннее 30 символов
	 * badpasswd - пароль содержит запрещенные символы
	 * user_blocked - аккаунт заблокирован, обратитесь в службу поддержки
	 * account_not_found - аккаунт не найден
	 */
	public static function editUser($token, $domain, $login, $data, &$error)
	{
		$postData = array(
			'token'  => $token,
			'domain' => $domain,
			'login'  => $login
		);

		foreach ($data as $key => $value)
		{
			switch ($key)
			{
				case 'password':
				case 'iname':
				case 'fname':
				case 'hintq':
				case 'hinta':
				case 'birth_date':
					$postData[$key] = (string) $value;
					break;
				case 'enabled':
					$postData[$key] = (boolean) $value;
					break;
				case 'sex':
					$postData[$key] = (integer) $value;
					break;
			}
		}

		$result = self::post('https://pddimp.yandex.ru/api2/admin/email/edit', $postData);

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result['uid'];

		self::setError($result, $error);
		return false;
	}

	/**
	 * http://pddimp.yandex.ru/api2/admin/email/list
	 *
	 * unknown - временный сбой, либо не опознанная ошибка на нашей стороне (попробуйте еще раз или напишите в службу поддержки)
	 * no_token, no_domain, no_ip - отсутсвуют обязательные параметры
	 * bad_domain - пустое или не соответствующее RFC доменное имя
	 * prohibited - использовано запрещенное доменное имя
	 * bad_token - такого токена не существет, или этот токен не валиден для этого домена
	 * no_auth - не переданы аутентификационные и авторизационные данные (пользовательский token или OAuth токен + токен регистратора)
	 * bad_oauth - OAuth токен не прошел проверку
	 * not_allowed - этому администратору запрещена такая операция с данным доменом, или этот администратор не является администратором данного домена
	 * blocked - этот домен заблокирован
	 */
	public static function getDomainUsers($token, $domain, $per_page = 30, $page = 0, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/email/list', array(
			'token'   => $token,
			'domain'  => $domain,
			'on_page' => $per_page,
			'page'    => $page
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result;

		self::setError($result, $error);
		return false;
	}

	public static function checkLogo($token, $domain, &$error)
	{
		$result = self::get('https://pddimp.yandex.ru/api2/admin/domain/logo/check', array(
			'token'  => $token,
			'domain' => $domain
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return $result['logo-url'];

		self::setError($result, $error);
		return false;
	}

	public static function setLogo($token, $domain, $file, &$error)
	{
		$http = new \Bitrix\Main\Web\HttpClient();

		$boundary = 'CMY2' . md5(rand().time());

		$data = '';

		$data .= '--' . $boundary . "\r\n";
		$data .= 'Content-Disposition: form-data; name="token"' . "\r\n\r\n";
		$data .= $token . "\r\n";

		$data .= '--' . $boundary . "\r\n";
		$data .= 'Content-Disposition: form-data; name="domain"' . "\r\n\r\n";
		$data .= $domain . "\r\n";

		$data .= '--' . $boundary . "\r\n";
		$data .= 'Content-Disposition: form-data; name="file"; filename="logo"' . "\r\n";
		$data .= 'Content-Type: application/octet-stream' . "\r\n\r\n";
		$data .= file_get_contents($file) . "\r\n";

		$data .= '--' . $boundary . "--\r\n";

		$http->setHeader('Content-type', 'multipart/form-data; boundary='.$boundary);
		$http->setHeader('Content-length', strlen($data));

		$response = $http->post('https://pddimp.yandex.ru/api2/admin/domain/logo/set', $data);
		$result   = json_decode($response, true);

		if (isset($result['success']) && $result['success'] == 'ok')
			return true;

		self::setError($result, $error);
		return false;
	}

	public static function setCountry($token, $domain, $country, &$error)
	{
		$result = self::post('https://pddimp.yandex.ru/api2/admin/domain/settings/set_country', array(
			'token'   => $token,
			'domain'  => $domain,
			'country' => $country
		));

		if (isset($result['success']) && $result['success'] == 'ok')
			return true;

		self::setError($result, $error);
		return false;
	}

	private static function post($url, $data)
	{
		$http = new \Bitrix\Main\Web\HttpClient();

		if (!empty($data['token']))
		{
			$http->setHeader('PddToken', $data['token']);
		}

		$response = $http->post($url, $data);
		$result   = json_decode($response, true);

		return $result;
	}

	private static function get($url, $data)
	{
		$http = new \Bitrix\Main\Web\HttpClient();

		if (!empty($data['token']))
		{
			$http->setHeader('PddToken', $data['token']);
		}

		$response = $http->get($url.'?'.http_build_query($data));
		$result   = json_decode($response, true);

		return $result;
	}

	private static function setError($result, &$error)
	{
		$error = empty($result['error'])
			? 'unknown'
			: $result['error'];
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit