SILENT KILLERPanel

Current Path: > > opt > hc_python > > lib64 > > python3.12 > site-packages > dns


Operation   : Linux premium131.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
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/hc_python//lib64//python3.12/site-packages/dns

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
dnssecalgs Directory - -
quic Directory - -
rdtypes Directory - -
__init__.py File 1663 bytes April 04 2025 08:02:26.
_asyncbackend.py File 2396 bytes April 04 2025 08:02:26.
_asyncio_backend.py File 9051 bytes April 04 2025 08:02:26.
_ddr.py File 5247 bytes April 04 2025 08:02:26.
_features.py File 2492 bytes April 04 2025 08:02:26.
_immutable_ctx.py File 2459 bytes April 04 2025 08:02:26.
_trio_backend.py File 8473 bytes April 04 2025 08:02:26.
asyncbackend.py File 2796 bytes April 04 2025 08:02:26.
asyncquery.py File 30821 bytes April 04 2025 08:02:26.
asyncresolver.py File 17852 bytes April 04 2025 08:02:26.
dnssec.py File 41717 bytes April 04 2025 08:02:26.
dnssectypes.py File 1799 bytes April 04 2025 08:02:26.
e164.py File 3978 bytes April 04 2025 08:02:26.
edns.py File 17089 bytes April 04 2025 08:02:26.
entropy.py File 4242 bytes April 04 2025 08:02:26.
enum.py File 3691 bytes April 04 2025 08:02:26.
exception.py File 5953 bytes April 04 2025 08:02:26.
flags.py File 2750 bytes April 04 2025 08:02:26.
grange.py File 2144 bytes April 04 2025 08:02:26.
immutable.py File 2017 bytes April 04 2025 08:02:26.
inet.py File 5772 bytes April 04 2025 08:02:26.
ipv4.py File 2552 bytes April 04 2025 08:02:26.
ipv6.py File 6554 bytes April 04 2025 08:02:26.
message.py File 68185 bytes April 04 2025 08:02:26.
name.py File 42778 bytes April 04 2025 08:02:26.
namedict.py File 4000 bytes April 04 2025 08:02:26.
nameserver.py File 10115 bytes April 04 2025 08:02:26.
node.py File 12663 bytes April 04 2025 08:02:26.
opcode.py File 2730 bytes April 04 2025 08:02:26.
py.typed File 0 bytes April 04 2025 08:02:26.
query.py File 56298 bytes April 04 2025 08:02:26.
rcode.py File 4156 bytes April 04 2025 08:02:26.
rdata.py File 31022 bytes April 04 2025 08:02:26.
rdataclass.py File 2984 bytes April 04 2025 08:02:26.
rdataset.py File 16664 bytes April 04 2025 08:02:26.
rdatatype.py File 7448 bytes April 04 2025 08:02:26.
renderer.py File 11254 bytes April 04 2025 08:02:26.
resolver.py File 73730 bytes April 04 2025 08:02:26.
reversename.py File 3828 bytes April 04 2025 08:02:26.
rrset.py File 9170 bytes April 04 2025 08:02:26.
serial.py File 3606 bytes April 04 2025 08:02:26.
set.py File 9213 bytes April 04 2025 08:02:26.
tokenizer.py File 23583 bytes April 04 2025 08:02:26.
transaction.py File 22589 bytes April 04 2025 08:02:26.
tsig.py File 11413 bytes April 04 2025 08:02:26.
tsigkeyring.py File 2633 bytes April 04 2025 08:02:26.
ttl.py File 2977 bytes April 04 2025 08:02:26.
update.py File 12243 bytes April 04 2025 08:02:26.
version.py File 1926 bytes April 04 2025 08:02:26.
versioned.py File 11765 bytes April 04 2025 08:02:26.
win32util.py File 8874 bytes April 04 2025 08:02:26.
wire.py File 2830 bytes April 04 2025 08:02:26.
xfr.py File 13271 bytes April 04 2025 08:02:26.
zone.py File 52086 bytes April 04 2025 08:02:26.
zonefile.py File 27926 bytes April 04 2025 08:02:26.
zonetypes.py File 690 bytes April 04 2025 08:02:26.

Reading File: //opt/hc_python//lib64//python3.12/site-packages/dns/nameserver.py

from typing import Optional, Union
from urllib.parse import urlparse

import dns.asyncbackend
import dns.asyncquery
import dns.inet
import dns.message
import dns.query


class Nameserver:
    def __init__(self):
        pass

    def __str__(self):
        raise NotImplementedError

    def kind(self) -> str:
        raise NotImplementedError

    def is_always_max_size(self) -> bool:
        raise NotImplementedError

    def answer_nameserver(self) -> str:
        raise NotImplementedError

    def answer_port(self) -> int:
        raise NotImplementedError

    def query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        raise NotImplementedError

    async def async_query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        backend: dns.asyncbackend.Backend,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        raise NotImplementedError


class AddressAndPortNameserver(Nameserver):
    def __init__(self, address: str, port: int):
        super().__init__()
        self.address = address
        self.port = port

    def kind(self) -> str:
        raise NotImplementedError

    def is_always_max_size(self) -> bool:
        return False

    def __str__(self):
        ns_kind = self.kind()
        return f"{ns_kind}:{self.address}@{self.port}"

    def answer_nameserver(self) -> str:
        return self.address

    def answer_port(self) -> int:
        return self.port


class Do53Nameserver(AddressAndPortNameserver):
    def __init__(self, address: str, port: int = 53):
        super().__init__(address, port)

    def kind(self):
        return "Do53"

    def query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        if max_size:
            response = dns.query.tcp(
                request,
                self.address,
                timeout=timeout,
                port=self.port,
                source=source,
                source_port=source_port,
                one_rr_per_rrset=one_rr_per_rrset,
                ignore_trailing=ignore_trailing,
            )
        else:
            response = dns.query.udp(
                request,
                self.address,
                timeout=timeout,
                port=self.port,
                source=source,
                source_port=source_port,
                raise_on_truncation=True,
                one_rr_per_rrset=one_rr_per_rrset,
                ignore_trailing=ignore_trailing,
                ignore_errors=True,
                ignore_unexpected=True,
            )
        return response

    async def async_query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        backend: dns.asyncbackend.Backend,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        if max_size:
            response = await dns.asyncquery.tcp(
                request,
                self.address,
                timeout=timeout,
                port=self.port,
                source=source,
                source_port=source_port,
                backend=backend,
                one_rr_per_rrset=one_rr_per_rrset,
                ignore_trailing=ignore_trailing,
            )
        else:
            response = await dns.asyncquery.udp(
                request,
                self.address,
                timeout=timeout,
                port=self.port,
                source=source,
                source_port=source_port,
                raise_on_truncation=True,
                backend=backend,
                one_rr_per_rrset=one_rr_per_rrset,
                ignore_trailing=ignore_trailing,
                ignore_errors=True,
                ignore_unexpected=True,
            )
        return response


class DoHNameserver(Nameserver):
    def __init__(
        self,
        url: str,
        bootstrap_address: Optional[str] = None,
        verify: Union[bool, str] = True,
        want_get: bool = False,
        http_version: dns.query.HTTPVersion = dns.query.HTTPVersion.DEFAULT,
    ):
        super().__init__()
        self.url = url
        self.bootstrap_address = bootstrap_address
        self.verify = verify
        self.want_get = want_get
        self.http_version = http_version

    def kind(self):
        return "DoH"

    def is_always_max_size(self) -> bool:
        return True

    def __str__(self):
        return self.url

    def answer_nameserver(self) -> str:
        return self.url

    def answer_port(self) -> int:
        port = urlparse(self.url).port
        if port is None:
            port = 443
        return port

    def query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool = False,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return dns.query.https(
            request,
            self.url,
            timeout=timeout,
            source=source,
            source_port=source_port,
            bootstrap_address=self.bootstrap_address,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            verify=self.verify,
            post=(not self.want_get),
            http_version=self.http_version,
        )

    async def async_query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        backend: dns.asyncbackend.Backend,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return await dns.asyncquery.https(
            request,
            self.url,
            timeout=timeout,
            source=source,
            source_port=source_port,
            bootstrap_address=self.bootstrap_address,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            verify=self.verify,
            post=(not self.want_get),
            http_version=self.http_version,
        )


class DoTNameserver(AddressAndPortNameserver):
    def __init__(
        self,
        address: str,
        port: int = 853,
        hostname: Optional[str] = None,
        verify: Union[bool, str] = True,
    ):
        super().__init__(address, port)
        self.hostname = hostname
        self.verify = verify

    def kind(self):
        return "DoT"

    def query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool = False,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return dns.query.tls(
            request,
            self.address,
            port=self.port,
            timeout=timeout,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            server_hostname=self.hostname,
            verify=self.verify,
        )

    async def async_query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        backend: dns.asyncbackend.Backend,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return await dns.asyncquery.tls(
            request,
            self.address,
            port=self.port,
            timeout=timeout,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            server_hostname=self.hostname,
            verify=self.verify,
        )


class DoQNameserver(AddressAndPortNameserver):
    def __init__(
        self,
        address: str,
        port: int = 853,
        verify: Union[bool, str] = True,
        server_hostname: Optional[str] = None,
    ):
        super().__init__(address, port)
        self.verify = verify
        self.server_hostname = server_hostname

    def kind(self):
        return "DoQ"

    def query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool = False,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return dns.query.quic(
            request,
            self.address,
            port=self.port,
            timeout=timeout,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            verify=self.verify,
            server_hostname=self.server_hostname,
        )

    async def async_query(
        self,
        request: dns.message.QueryMessage,
        timeout: float,
        source: Optional[str],
        source_port: int,
        max_size: bool,
        backend: dns.asyncbackend.Backend,
        one_rr_per_rrset: bool = False,
        ignore_trailing: bool = False,
    ) -> dns.message.Message:
        return await dns.asyncquery.quic(
            request,
            self.address,
            port=self.port,
            timeout=timeout,
            one_rr_per_rrset=one_rr_per_rrset,
            ignore_trailing=ignore_trailing,
            verify=self.verify,
            server_hostname=self.server_hostname,
        )

SILENT KILLER Tool