404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.223.3.50: ~ $
<?php

namespace React\Socket;

use React\Dns\Resolver\Resolver;
use React\Promise;
use React\Promise\CancellablePromiseInterface;
use InvalidArgumentException;
use RuntimeException;

final class DnsConnector implements ConnectorInterface
{
    private $connector;
    private $resolver;

    public function __construct(ConnectorInterface $connector, Resolver $resolver)
    {
        $this->connector = $connector;
        $this->resolver = $resolver;
    }

    public function connect($uri)
    {
        if (strpos($uri, '://') === false) {
            $parts = parse_url('tcp://' . $uri);
            unset($parts['scheme']);
        } else {
            $parts = parse_url($uri);
        }

        if (!$parts || !isset($parts['host'])) {
            return Promise\reject(new InvalidArgumentException('Given URI "' . $uri . '" is invalid'));
        }

        $host = trim($parts['host'], '[]');
        $connector = $this->connector;

        // skip DNS lookup / URI manipulation if this URI already contains an IP
        if (false !== filter_var($host, FILTER_VALIDATE_IP)) {
            return $connector->connect($uri);
        }

        return $this
            ->resolveHostname($host)
            ->then(function ($ip) use ($connector, $host, $parts) {
                $uri = '';

                // prepend original scheme if known
                if (isset($parts['scheme'])) {
                    $uri .= $parts['scheme'] . '://';
                }

                if (strpos($ip, ':') !== false) {
                    // enclose IPv6 addresses in square brackets before appending port
                    $uri .= '[' . $ip . ']';
                } else {
                    $uri .= $ip;
                }

                // append original port if known
                if (isset($parts['port'])) {
                    $uri .= ':' . $parts['port'];
                }

                // append orignal path if known
                if (isset($parts['path'])) {
                    $uri .= $parts['path'];
                }

                // append original query if known
                if (isset($parts['query'])) {
                    $uri .= '?' . $parts['query'];
                }

                // append original hostname as query if resolved via DNS and if
                // destination URI does not contain "hostname" query param already
                $args = array();
                parse_str(isset($parts['query']) ? $parts['query'] : '', $args);
                if ($host !== $ip && !isset($args['hostname'])) {
                    $uri .= (isset($parts['query']) ? '&' : '?') . 'hostname=' . rawurlencode($host);
                }

                // append original fragment if known
                if (isset($parts['fragment'])) {
                    $uri .= '#' . $parts['fragment'];
                }

                return $connector->connect($uri);
            });
    }

    private function resolveHostname($host)
    {
        $promise = $this->resolver->resolve($host);

        return new Promise\Promise(
            function ($resolve, $reject) use ($promise) {
                // resolve/reject with result of DNS lookup
                $promise->then($resolve, $reject);
            },
            function ($_, $reject) use ($promise) {
                // cancellation should reject connection attempt
                $reject(new RuntimeException('Connection attempt cancelled during DNS lookup'));

                // (try to) cancel pending DNS lookup
                if ($promise instanceof CancellablePromiseInterface) {
                    $promise->cancel();
                }
            }
        );
    }
}

Filemanager

Name Type Size Permission Actions
Connection.php File 5.61 KB 0644
ConnectionInterface.php File 4.32 KB 0644
Connector.php File 4.2 KB 0644
ConnectorInterface.php File 2.01 KB 0644
DnsConnector.php File 3.6 KB 0644
FixedUriConnector.php File 1.02 KB 0644
LimitingServer.php File 6.39 KB 0644
SecureConnector.php File 2.21 KB 0644
SecureServer.php File 6.45 KB 0644
Server.php File 1.83 KB 0644
ServerInterface.php File 5.13 KB 0644
StreamEncryption.php File 4.69 KB 0644
TcpConnector.php File 4.16 KB 0644
TcpServer.php File 7.39 KB 0644
TimeoutConnector.php File 570 B 0644
UnixConnector.php File 1.11 KB 0644
UnixServer.php File 3.48 KB 0644