GRAYBYTE WORDPRESS FILE MANAGER1211

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/dns/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/dns//_trio_backend.py
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license

"""trio async I/O library query support"""

import socket

import trio
import trio.socket  # type: ignore

import dns._asyncbackend
import dns._features
import dns.exception
import dns.inet

if not dns._features.have("trio"):
    raise ImportError("trio not found or too old")


def _maybe_timeout(timeout):
    if timeout is not None:
        return trio.move_on_after(timeout)
    else:
        return dns._asyncbackend.NullContext()


# for brevity
_lltuple = dns.inet.low_level_address_tuple

# pylint: disable=redefined-outer-name


class DatagramSocket(dns._asyncbackend.DatagramSocket):
    def __init__(self, sock):
        super().__init__(sock.family, socket.SOCK_DGRAM)
        self.socket = sock

    async def sendto(self, what, destination, timeout):
        with _maybe_timeout(timeout):
            if destination is None:
                return await self.socket.send(what)
            else:
                return await self.socket.sendto(what, destination)
        raise dns.exception.Timeout(
            timeout=timeout
        )  # pragma: no cover  lgtm[py/unreachable-statement]

    async def recvfrom(self, size, timeout):
        with _maybe_timeout(timeout):
            return await self.socket.recvfrom(size)
        raise dns.exception.Timeout(timeout=timeout)  # lgtm[py/unreachable-statement]

    async def close(self):
        self.socket.close()

    async def getpeername(self):
        return self.socket.getpeername()

    async def getsockname(self):
        return self.socket.getsockname()

    async def getpeercert(self, timeout):
        raise NotImplementedError


class StreamSocket(dns._asyncbackend.StreamSocket):
    def __init__(self, family, stream, tls=False):
        super().__init__(family, socket.SOCK_STREAM)
        self.stream = stream
        self.tls = tls

    async def sendall(self, what, timeout):
        with _maybe_timeout(timeout):
            return await self.stream.send_all(what)
        raise dns.exception.Timeout(timeout=timeout)  # lgtm[py/unreachable-statement]

    async def recv(self, size, timeout):
        with _maybe_timeout(timeout):
            return await self.stream.receive_some(size)
        raise dns.exception.Timeout(timeout=timeout)  # lgtm[py/unreachable-statement]

    async def close(self):
        await self.stream.aclose()

    async def getpeername(self):
        if self.tls:
            return self.stream.transport_stream.socket.getpeername()
        else:
            return self.stream.socket.getpeername()

    async def getsockname(self):
        if self.tls:
            return self.stream.transport_stream.socket.getsockname()
        else:
            return self.stream.socket.getsockname()

    async def getpeercert(self, timeout):
        if self.tls:
            with _maybe_timeout(timeout):
                await self.stream.do_handshake()
            return self.stream.getpeercert()
        else:
            raise NotImplementedError


if dns._features.have("doh"):
    import httpcore
    import httpcore._backends.trio
    import httpx

    _CoreAsyncNetworkBackend = httpcore.AsyncNetworkBackend
    _CoreTrioStream = httpcore._backends.trio.TrioStream

    from dns.query import _compute_times, _expiration_for_this_attempt, _remaining

    class _NetworkBackend(_CoreAsyncNetworkBackend):
        def __init__(self, resolver, local_port, bootstrap_address, family):
            super().__init__()
            self._local_port = local_port
            self._resolver = resolver
            self._bootstrap_address = bootstrap_address
            self._family = family

        async def connect_tcp(
            self, host, port, timeout, local_address, socket_options=None
        ):  # pylint: disable=signature-differs
            addresses = []
            _, expiration = _compute_times(timeout)
            if dns.inet.is_address(host):
                addresses.append(host)
            elif self._bootstrap_address is not None:
                addresses.append(self._bootstrap_address)
            else:
                timeout = _remaining(expiration)
                family = self._family
                if local_address:
                    family = dns.inet.af_for_address(local_address)
                answers = await self._resolver.resolve_name(
                    host, family=family, lifetime=timeout
                )
                addresses = answers.addresses()
            for address in addresses:
                try:
                    af = dns.inet.af_for_address(address)
                    if local_address is not None or self._local_port != 0:
                        source = (local_address, self._local_port)
                    else:
                        source = None
                    destination = (address, port)
                    attempt_expiration = _expiration_for_this_attempt(2.0, expiration)
                    timeout = _remaining(attempt_expiration)
                    sock = await Backend().make_socket(
                        af, socket.SOCK_STREAM, 0, source, destination, timeout
                    )
                    return _CoreTrioStream(sock.stream)
                except Exception:
                    continue
            raise httpcore.ConnectError

        async def connect_unix_socket(
            self, path, timeout, socket_options=None
        ):  # pylint: disable=signature-differs
            raise NotImplementedError

        async def sleep(self, seconds):  # pylint: disable=signature-differs
            await trio.sleep(seconds)

    class _HTTPTransport(httpx.AsyncHTTPTransport):
        def __init__(
            self,
            *args,
            local_port=0,
            bootstrap_address=None,
            resolver=None,
            family=socket.AF_UNSPEC,
            **kwargs,
        ):
            if resolver is None and bootstrap_address is None:
                # pylint: disable=import-outside-toplevel,redefined-outer-name
                import dns.asyncresolver

                resolver = dns.asyncresolver.Resolver()
            super().__init__(*args, **kwargs)
            self._pool._network_backend = _NetworkBackend(
                resolver, local_port, bootstrap_address, family
            )

else:
    _HTTPTransport = dns._asyncbackend.NullTransport  # type: ignore


class Backend(dns._asyncbackend.Backend):
    def name(self):
        return "trio"

    async def make_socket(
        self,
        af,
        socktype,
        proto=0,
        source=None,
        destination=None,
        timeout=None,
        ssl_context=None,
        server_hostname=None,
    ):
        s = trio.socket.socket(af, socktype, proto)
        stream = None
        try:
            if source:
                await s.bind(_lltuple(source, af))
            if socktype == socket.SOCK_STREAM or destination is not None:
                connected = False
                with _maybe_timeout(timeout):
                    await s.connect(_lltuple(destination, af))
                    connected = True
                if not connected:
                    raise dns.exception.Timeout(
                        timeout=timeout
                    )  # lgtm[py/unreachable-statement]
        except Exception:  # pragma: no cover
            s.close()
            raise
        if socktype == socket.SOCK_DGRAM:
            return DatagramSocket(s)
        elif socktype == socket.SOCK_STREAM:
            stream = trio.SocketStream(s)
            tls = False
            if ssl_context:
                tls = True
                try:
                    stream = trio.SSLStream(
                        stream, ssl_context, server_hostname=server_hostname
                    )
                except Exception:  # pragma: no cover
                    await stream.aclose()
                    raise
            return StreamSocket(af, stream, tls)
        raise NotImplementedError(
            "unsupported socket " + f"type {socktype}"
        )  # pragma: no cover

    async def sleep(self, interval):
        await trio.sleep(interval)

    def get_transport_class(self):
        return _HTTPTransport

    async def wait_for(self, awaitable, timeout):
        with _maybe_timeout(timeout):
            return await awaitable
        raise dns.exception.Timeout(
            timeout=timeout
        )  # pragma: no cover  lgtm[py/unreachable-statement]

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:29
root / root
0755
__pycache__
--
April 04 2025 08:00:22
root / root
0755
dnssecalgs
--
April 04 2025 08:00:22
root / root
0755
quic
--
April 04 2025 08:00:22
root / root
0755
rdtypes
--
April 04 2025 08:00:22
root / root
0755
__init__.py
1.624 KB
April 04 2025 08:00:22
root / root
0644
_asyncbackend.py
2.34 KB
April 04 2025 08:00:22
root / root
0644
_asyncio_backend.py
8.839 KB
April 04 2025 08:00:22
root / root
0644
_ddr.py
5.124 KB
April 04 2025 08:00:22
root / root
0644
_features.py
2.434 KB
April 04 2025 08:00:22
root / root
0644
_immutable_ctx.py
2.401 KB
April 04 2025 08:00:22
root / root
0644
_trio_backend.py
8.274 KB
April 04 2025 08:00:22
root / root
0644
asyncbackend.py
2.73 KB
April 04 2025 08:00:22
root / root
0644
asyncquery.py
30.099 KB
April 04 2025 08:00:22
root / root
0644
asyncresolver.py
17.434 KB
April 04 2025 08:00:22
root / root
0644
dnssec.py
40.739 KB
April 04 2025 08:00:22
root / root
0644
dnssectypes.py
1.757 KB
April 04 2025 08:00:22
root / root
0644
e164.py
3.885 KB
April 04 2025 08:00:22
root / root
0644
edns.py
16.688 KB
April 04 2025 08:00:22
root / root
0644
entropy.py
4.143 KB
April 04 2025 08:00:22
root / root
0644
enum.py
3.604 KB
April 04 2025 08:00:22
root / root
0644
exception.py
5.813 KB
April 04 2025 08:00:22
root / root
0644
flags.py
2.686 KB
April 04 2025 08:00:22
root / root
0644
grange.py
2.094 KB
April 04 2025 08:00:22
root / root
0644
immutable.py
1.97 KB
April 04 2025 08:00:22
root / root
0644
inet.py
5.637 KB
April 04 2025 08:00:22
root / root
0644
ipv4.py
2.492 KB
April 04 2025 08:00:22
root / root
0644
ipv6.py
6.4 KB
April 04 2025 08:00:22
root / root
0644
message.py
66.587 KB
April 04 2025 08:00:22
root / root
0644
name.py
41.775 KB
April 04 2025 08:00:22
root / root
0644
namedict.py
3.906 KB
April 04 2025 08:00:22
root / root
0644
nameserver.py
9.878 KB
April 04 2025 08:00:22
root / root
0644
node.py
12.366 KB
April 04 2025 08:00:22
root / root
0644
opcode.py
2.666 KB
April 04 2025 08:00:22
root / root
0644
py.typed
0 KB
April 04 2025 08:00:22
root / root
0644
query.py
54.979 KB
April 04 2025 08:00:22
root / root
0644
rcode.py
4.059 KB
April 04 2025 08:00:22
root / root
0644
rdata.py
30.295 KB
April 04 2025 08:00:22
root / root
0644
rdataclass.py
2.914 KB
April 04 2025 08:00:22
root / root
0644
rdataset.py
16.273 KB
April 04 2025 08:00:22
root / root
0644
rdatatype.py
7.273 KB
April 04 2025 08:00:22
root / root
0644
renderer.py
10.99 KB
April 04 2025 08:00:22
root / root
0644
resolver.py
72.002 KB
April 04 2025 08:00:22
root / root
0644
reversename.py
3.738 KB
April 04 2025 08:00:22
root / root
0644
rrset.py
8.955 KB
April 04 2025 08:00:22
root / root
0644
serial.py
3.521 KB
April 04 2025 08:00:22
root / root
0644
set.py
8.997 KB
April 04 2025 08:00:22
root / root
0644
tokenizer.py
23.03 KB
April 04 2025 08:00:22
root / root
0644
transaction.py
22.06 KB
April 04 2025 08:00:22
root / root
0644
tsig.py
11.146 KB
April 04 2025 08:00:22
root / root
0644
tsigkeyring.py
2.571 KB
April 04 2025 08:00:22
root / root
0644
ttl.py
2.907 KB
April 04 2025 08:00:22
root / root
0644
update.py
11.956 KB
April 04 2025 08:00:22
root / root
0644
version.py
1.881 KB
April 04 2025 08:00:22
root / root
0644
versioned.py
11.489 KB
April 04 2025 08:00:22
root / root
0644
win32util.py
8.666 KB
April 04 2025 08:00:22
root / root
0644
wire.py
2.764 KB
April 04 2025 08:00:22
root / root
0644
xfr.py
12.96 KB
April 04 2025 08:00:22
root / root
0644
zone.py
50.865 KB
April 04 2025 08:00:22
root / root
0644
zonefile.py
27.271 KB
April 04 2025 08:00:22
root / root
0644
zonetypes.py
0.674 KB
April 04 2025 08:00:22
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF