Current Path: > > opt > hc_python > > lib > 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 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__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. |
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license # Copyright (C) 2003-2017 Nominum, Inc. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose with or without fee is hereby granted, # provided that the above copyright notice and this permission notice # appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. """Generic Internet address helper functions.""" import socket from typing import Any, Optional, Tuple import dns.ipv4 import dns.ipv6 # We assume that AF_INET and AF_INET6 are always defined. We keep # these here for the benefit of any old code (unlikely though that # is!). AF_INET = socket.AF_INET AF_INET6 = socket.AF_INET6 def inet_pton(family: int, text: str) -> bytes: """Convert the textual form of a network address into its binary form. *family* is an ``int``, the address family. *text* is a ``str``, the textual address. Raises ``NotImplementedError`` if the address family specified is not implemented. Returns a ``bytes``. """ if family == AF_INET: return dns.ipv4.inet_aton(text) elif family == AF_INET6: return dns.ipv6.inet_aton(text, True) else: raise NotImplementedError def inet_ntop(family: int, address: bytes) -> str: """Convert the binary form of a network address into its textual form. *family* is an ``int``, the address family. *address* is a ``bytes``, the network address in binary form. Raises ``NotImplementedError`` if the address family specified is not implemented. Returns a ``str``. """ if family == AF_INET: return dns.ipv4.inet_ntoa(address) elif family == AF_INET6: return dns.ipv6.inet_ntoa(address) else: raise NotImplementedError def af_for_address(text: str) -> int: """Determine the address family of a textual-form network address. *text*, a ``str``, the textual address. Raises ``ValueError`` if the address family cannot be determined from the input. Returns an ``int``. """ try: dns.ipv4.inet_aton(text) return AF_INET except Exception: try: dns.ipv6.inet_aton(text, True) return AF_INET6 except Exception: raise ValueError def is_multicast(text: str) -> bool: """Is the textual-form network address a multicast address? *text*, a ``str``, the textual address. Raises ``ValueError`` if the address family cannot be determined from the input. Returns a ``bool``. """ try: first = dns.ipv4.inet_aton(text)[0] return first >= 224 and first <= 239 except Exception: try: first = dns.ipv6.inet_aton(text, True)[0] return first == 255 except Exception: raise ValueError def is_address(text: str) -> bool: """Is the specified string an IPv4 or IPv6 address? *text*, a ``str``, the textual address. Returns a ``bool``. """ try: dns.ipv4.inet_aton(text) return True except Exception: try: dns.ipv6.inet_aton(text, True) return True except Exception: return False def low_level_address_tuple( high_tuple: Tuple[str, int], af: Optional[int] = None ) -> Any: """Given a "high-level" address tuple, i.e. an (address, port) return the appropriate "low-level" address tuple suitable for use in socket calls. If an *af* other than ``None`` is provided, it is assumed the address in the high-level tuple is valid and has that af. If af is ``None``, then af_for_address will be called. """ address, port = high_tuple if af is None: af = af_for_address(address) if af == AF_INET: return (address, port) elif af == AF_INET6: i = address.find("%") if i < 0: # no scope, shortcut! return (address, port, 0, 0) # try to avoid getaddrinfo() addrpart = address[:i] scope = address[i + 1 :] if scope.isdigit(): return (addrpart, port, 0, int(scope)) try: return (addrpart, port, 0, socket.if_nametoindex(scope)) except AttributeError: # pragma: no cover (we can't really test this) ai_flags = socket.AI_NUMERICHOST ((*_, tup), *_) = socket.getaddrinfo(address, port, flags=ai_flags) return tup else: raise NotImplementedError(f"unknown address family {af}") def any_for_af(af): """Return the 'any' address for the specified address family.""" if af == socket.AF_INET: return "0.0.0.0" elif af == socket.AF_INET6: return "::" raise NotImplementedError(f"unknown address family {af}") def canonicalize(text: str) -> str: """Verify that *address* is a valid text form IPv4 or IPv6 address and return its canonical text form. IPv6 addresses with scopes are rejected. *text*, a ``str``, the address in textual form. Raises ``ValueError`` if the text is not valid. """ try: return dns.ipv6.canonicalize(text) except Exception: try: return dns.ipv4.canonicalize(text) except Exception: raise ValueError
SILENT KILLER Tool