
    *DCf&                         d dl mZmZ d dlmZ d dlZd dlZd dlZd dl	Zd dl
Z G d d      Z G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Zy)    )OptionalUnion)urlparseNc                   |   e Zd Zd Zd ZdefdZdefdZdefdZ	de
fdZ	 	 ddej                  j                  d	ed
ee   de
dedededej                  j"                  fdZ	 	 ddej                  j                  d	ed
ee   de
dedej&                  j(                  dededej                  j"                  fdZy)
Nameserverc                      y N selfs    N/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/dns/nameserver.py__init__zNameserver.__init__   s        c                     t         r	   NotImplementedErrorr   s    r   __str__zNameserver.__str__       !!r   returnc                     t         r	   r   r   s    r   kindzNameserver.kind   r   r   c                     t         r	   r   r   s    r   is_always_max_sizezNameserver.is_always_max_size   r   r   c                     t         r	   r   r   s    r   answer_nameserverzNameserver.answer_nameserver   r   r   c                     t         r	   r   r   s    r   answer_portzNameserver.answer_port   r   r   requesttimeoutsourcesource_portmax_sizeone_rr_per_rrsetignore_trailingc                     t         r	   r   r   r   r   r    r!   r"   r#   r$   s           r   queryzNameserver.query   s
     "!r   backendc	                    K   t         wr	   r   	r   r   r   r    r!   r"   r(   r#   r$   s	            r   async_queryzNameserver.async_query*   s      "!s   	NFF)__name__
__module____qualname__r   r   strr   boolr   r   intr   dnsmessageQueryMessagefloatr   Messager'   asyncbackendBackendr+   r
   r   r   r   r      s8   ""c ""D ""3 ""S " "' %
"))
" 
" 	
"
 
" 
" 
" 
" 
		
"( "' %"))" " 	"
 " " !!))" " " 
		"r   r   c                   ^     e Zd Zdedef fdZdefdZdefdZd Z	defdZ
defd	Z xZS )
AddressAndPortNameserveraddressportc                 >    t         |           || _        || _        y r	   )superr   r<   r=   r   r<   r=   	__class__s      r   r   z!AddressAndPortNameserver.__init__9   s    	r   r   c                     t         r	   r   r   s    r   r   zAddressAndPortNameserver.kind>   r   r   c                      y)NFr
   r   s    r   r   z+AddressAndPortNameserver.is_always_max_sizeA       r   c                 ^    | j                         }| d| j                   d| j                   S )N:@)r   r<   r=   )r   ns_kinds     r   r   z AddressAndPortNameserver.__str__D   s,    ))+!DLL>499+66r   c                     | j                   S r	   )r<   r   s    r   r   z*AddressAndPortNameserver.answer_nameserverH   s    ||r   c                     | j                   S r	   )r=   r   s    r   r   z$AddressAndPortNameserver.answer_portK   s    yyr   )r-   r.   r/   r0   r2   r   r   r1   r   r   r   r   __classcell__rA   s   @r   r;   r;   8   sK     3 
"c "D 73 S r   r;   c                   d    e Zd Zddedef fdZd Z	 	 ddej                  j                  de
dee   ded	ed
ededej                  j                  fdZ	 	 ddej                  j                  de
dee   ded	edej                  j                   d
ededej                  j                  fdZ xZS )Do53Nameserverr<   r=   c                 &    t         |   ||       y r	   )r?   r   r@   s      r   r   zDo53Nameserver.__init__P   s    $'r   c                      y)NDo53r
   r   s    r   r   zDo53Nameserver.kindS   s    r   r   r   r    r!   r"   r#   r$   r   c                     |r=t         j                  j                  || j                  || j                  ||||      }|S t         j                  j                  || j                  || j                  ||d||dd      }|S )N)r   r=   r    r!   r#   r$   T)	r   r=   r    r!   raise_on_truncationr#   r$   ignore_errorsignore_unexpected)r3   r'   tcpr<   r=   udp)	r   r   r   r    r!   r"   r#   r$   responses	            r   r'   zDo53Nameserver.queryV   s     yy}}YY'!1 / % 	H0  yy}}YY'$(!1 /""& % H r   r(   c	                 4  K   |rFt         j                  j                  || j                  || j                  |||||	       d {   }	|	S t         j                  j                  || j                  || j                  ||d|||dd       d {   }	|	S 7 O7 w)N)r   r=   r    r!   r(   r#   r$   T)
r   r=   r    r!   rS   r(   r#   r$   rT   rU   )r3   
asyncqueryrV   r<   r=   rW   )
r   r   r   r    r!   r"   r(   r#   r$   rX   s
             r   r+   zDo53Nameserver.async_query{   s       ^^//YY'!1 / 0 
 
H4  !^^//YY'$(!1 /""& 0  H 5
s%   ABBABBBB)5   r,   )r-   r.   r/   r0   r2   r   r   r3   r4   r5   r6   r   r1   r7   r'   r8   r9   r+   rK   rL   s   @r   rN   rN   O   s   ( (3 ( "' %#))# # 	#
 # # # # 
		#Z "' %&))& & 	&
 & & !!))& & & 
		&r   rN   c                       e Zd Z	 	 	 ddedee   deeef   def fdZd ZdefdZ	d	 Z
defd
ZdefdZ	 	 	 ddej                  j                   dedee   dededededej                  j$                  fdZ	 	 ddej                  j                   dedee   dededej(                  j*                  dededej                  j$                  fdZ xZS )DoHNameserverurlbootstrap_addressverifywant_getc                 Z    t         |           || _        || _        || _        || _        y r	   )r?   r   r^   r_   r`   ra   )r   r^   r_   r`   ra   rA   s        r   r   zDoHNameserver.__init__   s-     	!2 r   c                      y)NDoHr
   r   s    r   r   zDoHNameserver.kind   rD   r   r   c                      y)NTr
   r   s    r   r   z DoHNameserver.is_always_max_size   s    r   c                     | j                   S r	   r^   r   s    r   r   zDoHNameserver.__str__       xxr   c                     | j                   S r	   rg   r   s    r   r   zDoHNameserver.answer_nameserver   rh   r   c                 L    t        | j                        j                  }|d}|S )Ni  )r   r^   r=   )r   r=   s     r   r   zDoHNameserver.answer_port   s%    !&&<Dr   r   r   r    r!   r"   r#   r$   c                     t         j                  j                  || j                  |||| j                  ||| j
                  | j                   
      S N)r   r    r!   r_   r#   r$   r`   post)r3   r'   httpsr^   r_   r`   ra   r&   s           r   r'   zDoHNameserver.query   sQ     yyHH#"44-+;;mm#  
 	
r   r(   c	                    K   t         j                  j                  || j                  |||| j                  ||| j
                  | j                   
       d {   S 7 wrl   )r3   rZ   rn   r^   r_   r`   ra   r*   s	            r   r+   zDoHNameserver.async_query   sa      ^^))HH#"44-+;;mm# * 
 
 	
 
s   AAAA)NTFFFFr,   )r-   r.   r/   r0   r   r   r1   r   r   r   r   r   r2   r   r3   r4   r5   r6   r7   r'   r8   r9   r+   rK   rL   s   @r   r]   r]      ss    ,0#'!! $C=! dCi 	!
 !D 3 S  !& %
))
 
 	

 
 
 
 
 
		
> "' %
))
 
 	

 
 
 !!))
 
 
 
		
r   r]   c                       e Zd Z	 	 	 ddededee   deeef   f fdZd Z		 	 	 dde
j                  j                  ded	ee   d
edededede
j                  j                  fdZ	 	 dde
j                  j                  ded	ee   d
edede
j                   j"                  dedede
j                  j                  fdZ xZS )DoTNameserverr<   r=   hostnamer`   c                 B    t         |   ||       || _        || _        y r	   )r?   r   rs   r`   )r   r<   r=   rs   r`   rA   s        r   r   zDoTNameserver.__init__   s"     	$' r   c                      y)NDoTr
   r   s    r   r   zDoTNameserver.kind   rD   r   r   r   r    r!   r"   r#   r$   r   c           
          t         j                  j                  || j                  | j                  |||| j
                  | j                        S N)r=   r   r#   r$   server_hostnamer`   )r3   r'   tlsr<   r=   rs   r`   r&   s           r   r'   zDoTNameserver.query  sF     yy}}LL-+ MM;;  	
 		
r   r(   c	           
         K   t         j                  j                  || j                  | j                  |||| j
                  | j                         d {   S 7 wrx   )r3   rZ   rz   r<   r=   rs   r`   r*   s	            r   r+   zDoTNameserver.async_query  sV      ^^''LL-+ MM;; ( 	
 	
 		
 	
   AAAA)U  NTrp   r,   )r-   r.   r/   r0   r2   r   r   r1   r   r   r3   r4   r5   r6   r7   r'   r8   r9   r+   rK   rL   s   @r   rr   rr      sJ    "&#'		 	 3-		
 dCi 	 !& %
))
 
 	

 
 
 
 
 
		
: "' %
))
 
 	

 
 
 !!))
 
 
 
		
r   rr   c                       e Zd Z	 	 	 ddededeeef   dee   f fdZd Z		 	 	 dde
j                  j                  ded	ee   d
edededede
j                  j                  fdZ	 	 dde
j                  j                  ded	ee   d
edede
j                   j"                  dedede
j                  j                  fdZ xZS )DoQNameserverr<   r=   r`   ry   c                 B    t         |   ||       || _        || _        y r	   )r?   r   r`   ry   )r   r<   r=   r`   ry   rA   s        r   r   zDoQNameserver.__init__0  s#     	$'.r   c                      y)NDoQr
   r   s    r   r   zDoQNameserver.kind;  rD   r   r   r   r    r!   r"   r#   r$   r   c           
          t         j                  j                  || j                  | j                  |||| j
                  | j                        S N)r=   r   r#   r$   r`   ry   )r3   r'   quicr<   r=   r`   ry   r&   s           r   r'   zDoQNameserver.query>  sH     yy~~LL-+;; 00  	
 		
r   r(   c	           
         K   t         j                  j                  || j                  | j                  |||| j
                  | j                         d {   S 7 wr   )r3   rZ   r   r<   r=   r`   ry   r*   s	            r   r+   zDoQNameserver.async_queryS  sX      ^^((LL-+;; 00 ) 	
 	
 		
 	
r|   )r}   TNrp   r,   )r-   r.   r/   r0   r2   r   r1   r   r   r   r3   r4   r5   r6   r7   r'   r8   r9   r+   rK   rL   s   @r   r   r   /  sJ    #')-	/	/ 	/ dCi 		/
 "#	/ !& %
))
 
 	

 
 
 
 
 
		
: "' %
))
 
 	

 
 
 !!))
 
 
 
		
r   r   )typingr   r   urllib.parser   dns.asyncbackendr3   dns.asyncquerydns.inetdns.message	dns.queryr   r;   rN   r]   rr   r   r
   r   r   <module>r      sk    " !     *" *"Zz .R- RjM
J M
`8
, 8
v8
, 8
r   