uawdijnntqw1x1x1
IP : 3.147.67.34
Hostname : axolotl
Kernel : Linux axolotl 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 (2020-07-05) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
www
/
axolotl
/
data
/
www
/
kirov.axolotls.ru
/
bitrix
/
components
/
bitrix
/
main.mail.confirm
/
ajax.php
/
/
<?php use Bitrix\Main; use Bitrix\Main\Localization\Loc; define('PUBLIC_AJAX_MODE', true); define('NOT_CHECK_PERMISSIONS', true); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); Loc::loadMessages(__DIR__.'/class.php'); class MainMailConfirmAjax { public static function execute() { global $USER; $result = array(); $error = false; if (!is_object($USER) || !$USER->isAuthorized()) $error = getMessage('MAIN_MAIL_CONFIRM_AUTH'); \CUtil::jsPostUnescape(); if ($error === false) { $act = isset($_REQUEST['act']) ? $_REQUEST['act'] : null; switch ($act) { case 'add': $result = (array) self::executeAdd($error); break; case 'delete': case 'deleteSender': $result = (array) self::executeDelete($error); break; default: $error = getMessage('MAIN_MAIL_CONFIRM_AJAX_ERROR'); } } self::returnJson(array_merge(array( 'result' => $error === false ? 'ok' : 'error', 'error' => $error ), $result)); } private static function executeAdd(&$error) { global $USER; $error = false; $isAdmin = Main\Loader::includeModule('bitrix24') ? \CBitrix24::isPortalAdmin($USER->getId()) : $USER->isAdmin(); $name = trim($_REQUEST['name']); $email = strtolower(trim($_REQUEST['email'])); $smtp = $_REQUEST['smtp']; $code = strtolower(trim($_REQUEST['code'])); $public = $isAdmin && $_REQUEST['public'] == 'Y'; if (!check_email($email, true)) { $error = getMessage(empty($email) ? 'MAIN_MAIL_CONFIRM_EMPTY_EMAIL' : 'MAIN_MAIL_CONFIRM_INVALID_EMAIL'); return; } if (!empty($smtp)) { if (!is_array($smtp)) { $error = getMessage('MAIN_MAIL_CONFIRM_AJAX_ERROR'); return; } $smtp = array( 'server' => strtolower(trim($smtp['server'])), 'port' => strtolower(trim($smtp['port'])), 'protocol' => 'Y' == $smtp['ssl'] ? 'smtps' : 'smtp', 'login' => $smtp['login'], 'password' => $smtp['password'], ); if (!preg_match('/^([a-z0-9-]+\.)+[a-z0-9-]{2,20}$/i', $smtp['server'])) { $error = getMessage( empty($smtp['server']) ? 'MAIN_MAIL_CONFIRM_EMPTY_SMTP_SERVER' : 'MAIN_MAIL_CONFIRM_INVALID_SMTP_SERVER' ); return; } if (!preg_match('/^[0-9]+$/i', $smtp['port']) || $smtp['port'] < 1 || $smtp['port'] > 65535) { $error = getMessage( empty($smtp['port']) ? 'MAIN_MAIL_CONFIRM_EMPTY_SMTP_PORT' : 'MAIN_MAIL_CONFIRM_INVALID_SMTP_PORT' ); return; } if (empty($smtp['login'])) { $error = getMessage('MAIN_MAIL_CONFIRM_EMPTY_SMTP_LOGIN'); return; } if (empty($smtp['password'])) { $error = getMessage('MAIN_MAIL_CONFIRM_EMPTY_SMTP_PASSWORD'); return; } else if (preg_match('/^\^/', $smtp['password'])) { $error = getMessage('MAIN_MAIL_CONFIRM_INVALID_SMTP_PASSWORD_CARET'); return; } else if (preg_match('/\x00/', $smtp['password'])) { $error = getMessage('MAIN_MAIL_CONFIRM_INVALID_SMTP_PASSWORD_NULL'); return; } } $pending = array(); $expires = array(); $res = Main\Mail\Internal\SenderTable::getList(array( 'filter' => array( '=USER_ID' => $USER->getId(), array( 'LOGIC' => 'OR', 'IS_CONFIRMED' => false, 'EMAIL' => $email, ), ), )); while ($item = $res->fetch()) { if ($item['IS_CONFIRMED']) { if ($item['EMAIL'] == $email) { $alreadyConfirmed = true; } } else { if (time() - $item['OPTIONS']['confirm_time'] > 60*60*24*7) { $expires[] = $item['ID']; } else { if (!array_key_exists($item['EMAIL'], $pending)) { $pending[$item['EMAIL']] = array(); } $pending[$item['EMAIL']][$item['ID']] = strtolower($item['OPTIONS']['confirm_code']); } } } Main\Mail\Sender::delete($expires); if (empty($code)) { $fields = array( 'NAME' => $name, 'EMAIL' => $email, 'USER_ID' => $USER->getId(), 'IS_CONFIRMED' => false, 'IS_PUBLIC' => $public, 'OPTIONS' => array( 'source' => 'main.mail.confirm', ), ); if (!empty($smtp)) { $fields['OPTIONS']['smtp'] = $smtp; } $result = Main\Mail\Sender::add($fields); if (!empty($result['error'])) { $error = $result['error']; return; } return $result; } else { if (!in_array($code, $pending[$email])) { $error = getMessage('MAIN_MAIL_CONFIRM_INVALID_CODE'); return; } Main\Mail\Sender::confirm(array_keys($pending[$email], $code)); return array(); } } private static function executeDelete(&$error) { global $USER; $error = false; $isAdmin = Main\Loader::includeModule('bitrix24') ? \CBitrix24::isPortalAdmin($USER->getId()) : $USER->isAdmin(); $senderId = Main\Application::getInstance()->getContext()->getRequest()->getPost('senderId'); $item = Main\Mail\Internal\SenderTable::getList(array( 'filter' => array( '=ID' => $senderId, ), ))->fetch(); if (empty($item)) { $error = getMessage('MAIN_MAIL_CONFIRM_AJAX_ERROR'); return; } if ($USER->getId() != $item['USER_ID'] && !($item['IS_PUBLIC'] && $isAdmin)) { $error = getMessage('MAIN_MAIL_CONFIRM_AJAX_ERROR'); return; } Main\Mail\Sender::delete([$senderId]); return []; } private static function returnJson($data) { global $APPLICATION; $APPLICATION->restartBuffer(); header('Content-Type: application/x-javascript; charset=UTF-8'); echo Main\Web\Json::encode($data); } } MainMailConfirmAjax::execute(); require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php';
/var/www/axolotl/data/www/kirov.axolotls.ru/bitrix/components/bitrix/main.mail.confirm/ajax.php