Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
StreamEncryption.php
Содержимое
<?php namespace React\Socket; use React\EventLoop\LoopInterface; use React\Promise\Deferred; use RuntimeException; use UnexpectedValueException; /** * This class is considered internal and its API should not be relied upon * outside of Socket. * * @internal */ class StreamEncryption { private $loop; private $method; private $server; private $errstr; private $errno; public function __construct(LoopInterface $loop, $server = true) { $this->loop = $loop; $this->server = $server; // support TLSv1.0+ by default and exclude legacy SSLv2/SSLv3. // PHP 5.6+ supports bitmasks, legacy PHP only supports predefined // constants, so apply accordingly below. // Also, since PHP 5.6.7 up until before PHP 7.2.0 the main constant did // only support TLSv1.0, so we explicitly apply all versions. // @link http://php.net/manual/en/migration56.openssl.php#migration56.openssl.crypto-method // @link https://3v4l.org/plbFn if ($server) { $this->method = STREAM_CRYPTO_METHOD_TLS_SERVER; if (defined('STREAM_CRYPTO_METHOD_TLSv1_0_SERVER')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_0_SERVER; } if (defined('STREAM_CRYPTO_METHOD_TLSv1_1_SERVER')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_1_SERVER; } if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_SERVER')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_2_SERVER; } } else { $this->method = STREAM_CRYPTO_METHOD_TLS_CLIENT; if (defined('STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT; } if (defined('STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; } if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { $this->method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; } } } public function enable(Connection $stream) { return $this->toggle($stream, true); } public function disable(Connection $stream) { return $this->toggle($stream, false); } public function toggle(Connection $stream, $toggle) { // pause actual stream instance to continue operation on raw stream socket $stream->pause(); // TODO: add write() event to make sure we're not sending any excessive data $deferred = new Deferred(function ($_, $reject) use ($toggle) { // cancelling this leaves this stream in an inconsistent state… $reject(new RuntimeException('Cancelled toggling encryption ' . $toggle ? 'on' : 'off')); }); // get actual stream socket from stream instance $socket = $stream->stream; // get crypto method from context options or use global setting from constructor $method = $this->method; $context = stream_context_get_options($socket); if (isset($context['ssl']['crypto_method'])) { $method = $context['ssl']['crypto_method']; } $that = $this; $toggleCrypto = function () use ($socket, $deferred, $toggle, $method, $that) { $that->toggleCrypto($socket, $deferred, $toggle, $method); }; $this->loop->addReadStream($socket, $toggleCrypto); if (!$this->server) { $toggleCrypto(); } $loop = $this->loop; return $deferred->promise()->then(function () use ($stream, $socket, $loop, $toggle) { $loop->removeReadStream($socket); $stream->encryptionEnabled = $toggle; $stream->resume(); return $stream; }, function($error) use ($stream, $socket, $loop) { $loop->removeReadStream($socket); $stream->resume(); throw $error; }); } public function toggleCrypto($socket, Deferred $deferred, $toggle, $method) { set_error_handler(array($this, 'handleError')); $result = stream_socket_enable_crypto($socket, $toggle, $method); restore_error_handler(); if (true === $result) { $deferred->resolve(); } else if (false === $result) { $deferred->reject(new UnexpectedValueException( sprintf("Unable to complete SSL/TLS handshake: %s", $this->errstr), $this->errno )); } else { // need more data, will retry } } public function handleError($errno, $errstr) { $this->errstr = str_replace(array("\r", "\n"), ' ', $errstr); $this->errno = $errno; } }
/cron/instagram/vendor/react/socket/src/
Имя
Дата
Размер
..
2019-01-15
Connection.php
2019-01-15
6 кб.
ConnectionInterface.php
2019-01-15
4 кб.
Connector.php
2019-01-15
4 кб.
ConnectorInterface.php
2019-01-15
2 кб.
DnsConnector.php
2019-01-15
4 кб.
FixedUriConnector.php
2019-01-15
1 кб.
LimitingServer.php
2019-01-15
6 кб.
SecureConnector.php
2019-01-15
2 кб.
SecureServer.php
2019-01-15
6 кб.
Server.php
2019-01-15
2 кб.
ServerInterface.php
2019-01-15
5 кб.
StreamEncryption.php
2019-01-15
5 кб.
TcpConnector.php
2019-01-15
4 кб.
TcpServer.php
2019-01-15
7 кб.
TimeoutConnector.php
2019-01-15
570 байт
UnixConnector.php
2019-01-15
1 кб.
UnixServer.php
2019-01-15
3 кб.
/cron/instagram/vendor/react/socket/src
Загрузить файлы
Файл 1
Файл 2
Файл 3