HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/DNS/__pycache__/Base.cpython-310.pyc
o

��h}?�
@s4dZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
zddlmZe�ZWnddlZYGdd�de
�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZddlmZdde
jejddddgd�	ad$dd�Zdd�Zdd�Zdd�ZGd d!�d!�Zd"d#�ZdS)%u<
$Id$

This file is part of the py3dns project.
Homepage: https://launchpad.net/py3dns

This code is covered by the standard Python License. See LICENSE for details.

Changes for Python3 port © 2011-14 Scott Kitterman <scott@kitterman.com>

    Base functionality. Request and Response classes, that sort of thing.
�N�)�Type�Class�Opcode)�SystemRandomc@�eZdZdS)�DNSErrorN��__name__�
__module__�__qualname__�r
r
�>/usr/local/CyberPanel/lib/python3.10/site-packages/DNS/Base.pyr�rc@r)�
ArgumentErrorNr	r
r
r
rrrrc@r)�SocketErrorNr	r
r
r
rr rrc@r)�TimeoutErrorNr	r
r
r
rr!rrc@seZdZdd�ZdS)�ServerErrorcCst�|||�||_||_dS�N)r�__init__�message�rcode)�selfrrr
r
rr$s
zServerError.__init__N)r
rrrr
r
r
rr#src@r)�IncompleteReplyErrorNr	r
r
r
rr)rr)�Lib�udp�5�)	�protocol�port�opcode�qtype�rd�timing�timeout�
server_rotate�server�/etc/resolv.confcCs\zt|d��
}t|�Wd�WS1swYWdSty-td�d�YSw)zCparses the /etc/resolv.conf file and sets defaults for name servers�rNr&z	127.0.0.1)�open�ParseResolvConfFromIterable�FileNotFoundError�defaults�append)�resolv_path�streamr
r
r�ParseResolvConf2s(��r0cCs�|D]V}|��}|r|ddks|ddkrq|��}t|�dkr"q|ddkr4t|�dkr4|dtd<|ddkr;	|ddkrB	|dd	krI	|dd
krXtd�|d�qdS)
zHparses a resolv.conf formatted stream and sets defaults for name serversr�;�#��domainr�search�options�sortlist�
nameserverr&N)�strip�split�lenr,r-)�lines�line�fieldsr
r
rr*;s&��r*cCsHddl}|jdvrddlm}|��td<dS|jdkr!t�dSt�S)Nr)�win32�ntr)�win32dnsr&�darwin)�sys�platform�rA�RegistryResolver,�ParseOSXSysConfigr0)rCrAr
r
r�_DiscoverNameServersPs


rHcCsdS)zbDon't call, only here for backward compatability.  We do discovery for
    you automatically.
    Nr
r
r
r
r�DiscoverNameServersZsrIc@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
DnsRequestz high level Request object cOsJd|_i|_|�||�|j|_d|_d|_t|jd�dkr#td��dS)NrrEr&z"No working name servers discovered)�donefuncr,�argparse�args�tid�
resulttyper;r)r�namerMr
r
rrbs�zDnsRequest.__init__cCs|sd|jvr|jd|d<t|�tust|�tur||d<nt|�dkr/|dr/|d|d<tdrNttd�tjkrNtddd�tddd�td<tt���D]}||vrm||jvrg|j|||<qTt|||<qTt|d�tks~t|d�tkr�|dg|d<||_	dS)NrPrrr%r&)
r,�type�bytes�strr;�types�ListType�list�keysrM)rrPrM�ir
r
rrLls&
$
� 
zDnsRequest.argparsecCst�||�|_dSr)�socket�s)r�a�br
r
r�
socketInit�szDnsRequest.socketInitcCsh|jdkrt�|jggg|j�\}}}t|�std��|j�d�\|_|_t��|_	|j
|jd<|��S)Nr�Timeout�r&)
r$�selectrZr;r�recvfrom�reply�from_address�time�time_finish�nsrM�processReply)rr(�w�er
r
r�processUDPReply�s

zDnsRequest.processUDPReplycCs�|�|�}t|�|krG|jdkr(|j|jt��}|dkr"td��|j�|�|�|t|��}|s=tdt|�|f��||7}t|�|ks|S)Nrr^z incomplete reply - %d of %d read)�readr;r$�
time_startrdrrZ�
settimeout)r�f�count�res�rem�bufr
r
r�_readall�s

�
zDnsRequest._readallcCs�|jdkr
|j�|j�n|j�d�|j�d�}z|�|d�}t�|�}|�||�|_W|��n|��wt	�	�|_
|j|jd<|�
�S)Nr�rbr3r&)r$rZrm�makefilersr�unpack16bitrb�closerdrerfrMrg)rrn�headerror
r
r�processTCPReply�s


zDnsRequest.processTCPReplycCs�|j|jd|jd<|jst�|j�}n7|jdkr!t�|j�}n+|jdkr-t�|j�}n|jdkr9t�	|j�}n|jdkrEt�
|j�}ntd|j��t�||j�}|j|_|S)Ni��elapsed�default�binary�text�integerzUnknown resulttype: )
rerlrMrOr�	Munpackerrb�MunpackerDefault�MunpackerBinary�
MunpackerText�MunpackerInteger�SyntaxError�	DnsResult)r�ur(r
r
rrg�s



zDnsRequest.processReplyc
Cs\	zt�dd�}|j�d|f�WdStjy,}z
|jtjkr"�WYd}~nd}~wwq)z<Pick random source port to avoid DNS cache poisoning attack.Tir_rEN)�random�randintrZ�bindrY�error�errno�
EADDRINUSE)r�source_port�msgr
r
r�	getSource�s���zDnsRequest.getSourcecCs |��|j�|j|jf�dSr)r�rZ�connectrfr)rr
r
r�conn�szDnsRequest.conncOs�	|�||�|jd}|jd|_t�dd�|_|jd|_|jd}|jd}|jd}d	|jvr:|jd	|_nd
|_t|jd�t	ksOt|jd�t
krizttt
|jd�
���}Wntyhtd��w|jd}d
|jvr|t|j�td��|jd
}|tjkr�|dkr�td�d}t��}	|	�|jd|dd|ddddddd�
|	�||tj�|	��|_z|dkr�|�|�W|jS|�|�W|jStjy�}
zt|
��d}
~
ww)aW
        Request function for the DnsRequest class.  In addition to standard
        DNS args, the special pydns arg 'resulttype' can optionally be passed.
        Valid resulttypes are 'default', 'text', 'decimal', and 'binary'.

        Defaults are configured to be compatible with pydns:
        AAAA: decimal
        Others: text
        rrrr_r$r r"r&rOr{r!�unknown query typerP�nothing to lookup�tcp�'Query type AXFR, protocol forced to TCPrrN) rLrMrr�r�rNr$rOrQrRrS�getattrr�upper�AttributeErrorr�print�AXFRr�Mpacker�	addHeader�addQuestionr�IN�getbuf�request�sendUDPRequest�sendTCPRequestrYr�r�response�rrPrMrr r"r&r!�qname�m�reasonr
r
r�qry�sV





$�



�
����zDnsRequest.qrycOs�|�||�z|jdrtd�|jd���WnY|jd}|jd|_t�dd�|_|jd|_|jd}|jd	}|jd
}t	|jd�t
ksUt	|jd�tkroztt
t|jd����}Wntyntd��w|jd}d
|jvr�t|j�td��|jd
}|t
jkr�|dkr�td�d}t��}	|	�|jd|dd|ddddddd�
|	�||tj�|	��|_z|dkr�|�|�W|jS|�|�W|jStjy�}
zt|
��d}
~
ww)z needs a refactoring rOzERestulttype {0} set with DNS.req, use DNS.qry to specify result type.rrrr_r$r r"r&r!r�rPr�r�r�rrN) rLrMr�formatrr�r�rNr$rQrRrSr�rr�r�r�r�rr�r�r�rr�r�r�r�r�rYr�rr�r�r
r
r�reqsZ
�



$�



�
����zDnsRequest.reqcCshd}d|_|D]�|_zl|j�d�r$ttd�r"tjr"|�tjtj�n
Wq|�tj	tj�zBt
�
�|_|��|j
�|j�|��}|jd|jksQ|jd|jkre|��}|jd|jksQ|jd|jksQ||_W|j
��n|j
��wWn,tjy�}z
|p�|}WYd}~qd}~wty�}z
|p�|}WYd}~qd}~ww|jr�nq|js�|r�|�dSdS)zrefactor meN�:�has_ipv6�idr)r�rfro�hasattrrYr�r]�AF_INET6�
SOCK_DGRAM�AF_INETrdrlr�rZ�sendr�rjrxrNrcrrwr�r)rr&�first_socket_errorr(ri�tr
r
rr�JsH

�����
�zDnsRequest.sendUDPRequestcCsbd}d|_|D]�|_zi|j�d�r$ttd�r"tjr"|�tjtj�n
Wq|�tj	tj�z?t
�
�|_|��t
�t|j��|j}|j�d�|j�|�|��}|jd|jkre||_W|j��WnAW|j��n|j��wWn,tjy�}z
|p|}WYd}~qd}~wty�}z
|p�|}WYd}~qd}~ww|jr�nq|js�|r�|�dSdS)z& do the work of sending a TCP request Nr�r�rr�)r�rfror�rYr�r]r��SOCK_STREAMr�rdrlr�r�	pack16bitr;r�rZ�setblocking�sendallryrxrNrwr�r)rr&r�rrr(rir�r
r
rr�tsJ

�����
�zDnsRequest.sendTCPRequestN)r
rr�__doc__rrLr]rjrsryrgr�r�r�r�r�r�r
r
r
rrJ`s

%81*rJcCs�ddl}ddl}|�dd�}|�d�}g}d}	|��}|sn/|��}t|�dks0|dtjvr3d}q|�	|�}|rM|durEg}|�
|�|�
|�d��q|��|D]	}t
d�|�qTdS)	zMRetrieves the current Mac OS X resolver settings using the scutil(8) command.rNz/usr/sbin/scutil --dnsr(z$^\s+nameserver[]0-9[]*\s*\:\s*(\S+)$Trr&)�os�re�popen�compile�readline�rstripr;�string�
whitespace�matchr-�grouprwr,�extend)r�r��scutil�res_re�sets�
currentset�lr�r
r
rrG�s0


��rG)r')r�rYr�rTrdr`r�rErrrr�r�	Exceptionrrrrrrr�QUERY�Ar,r0r*rHrIrJrGr
r
r
r�<module>s8(


�
	
@