HEX
Server: LiteSpeed
System: Linux srv146.niagahoster.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: kodi1989 (1633)
PHP: 8.1.34
Disabled: symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/dns/__pycache__/inet.cpython-37.pyc
B

��f��@s�dZddlmZmZmZddlZddlZddlZej	Z	ej
Z
eee
d�dd�Zee
ed�dd	�Zeed
�dd�Zeed
�d
d�Zeed
�dd�Zdeeefeeed�dd�ZdS)z*Generic Internet address helper functions.�)�Any�Optional�TupleN)�family�text�returncCs2|tkrtj�|�S|tkr*tj�|d�St�dS)aConvert 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``.
    TN)�AF_INET�dns�ipv4�	inet_aton�AF_INET6�ipv6�NotImplementedError)rr�r�9/opt/alt/python37/lib/python3.7/site-packages/dns/inet.py�	inet_pton#s

r)r�addressrcCs0|tkrtj�|�S|tkr(tj�|�St�dS)a0Convert 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``.
    N)rr	r
�	inet_ntoarr
r)rrrrr�	inet_ntop8s

r)rrcCsVytj�|�tStk
rPytj�|d�tStk
rJt�YnXYnXdS)z�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``.
    TN)r	r
rr�	Exceptionr
r�
ValueError)rrrr�af_for_addressMsrcCsny tj�|�d}|dko |dkStk
rhytj�|d�d}|dkStk
rbt�YnXYnXdS)z�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``.
    r����T�N)r	r
rrr
r)r�firstrrr�is_multicastcsrcCsRytj�|�dStk
rLytj�|d�dStk
rFdSXYnXdS)z{Is the specified string an IPv4 or IPv6 address?

    *text*, a ``str``, the textual address.

    Returns a ``bool``.
    TFN)r	r
rrr
)rrrr�
is_addressysr)�
high_tuple�afrc
Cs�|\}}|dkrt|�}|tkr(||fS|tkr�|�d�}|dkrN||ddfS|d|�}||dd�}|��r�||dt|�fSy||dt�|�fStk
r�tj	}tj
|||d�^�^}}	}|	SXntd|����dS)aXGiven 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.
    N�%r�)�flagszunknown address family )rrr�find�isdigit�int�socket�if_nametoindex�AttributeError�AI_NUMERICHOST�getaddrinfor)
rrr�port�iZaddrpartZscopeZai_flags�_�tuprrr�low_level_address_tuple�s(
r/)N)�__doc__�typingrrrr&Zdns.ipv4r	Zdns.ipv6rrr%�str�bytesrrr�boolrrr/rrrr�<module>s