o
    'h'                     @   s   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 dZG dd deZG dd	 d	eZG d
d deZG dd deZG dd deZdS )    )OptionalUnion)urlparseNc                   @   s   e Zd Zdd Zdd ZdefddZdefdd	Zdefd
dZ	de
fd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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dZdS )
Nameserverc                 C   s   d S N selfr   r   J/var/www/html/olx_land/venv/lib/python3.10/site-packages/dns/nameserver.py__init__      zNameserver.__init__c                 C      t r   NotImplementedErrorr   r   r   r
   __str__   r   zNameserver.__str__returnc                 C   r   r   r   r   r   r   r
   kind   r   zNameserver.kindc                 C   r   r   r   r   r   r   r
   is_always_max_size   r   zNameserver.is_always_max_sizec                 C   r   r   r   r   r   r   r
   answer_nameserver   r   zNameserver.answer_nameserverc                 C   r   r   r   r   r   r   r
   answer_port   r   zNameserver.answer_portFrequesttimeoutsourcesource_portmax_sizeone_rr_per_rrsetignore_trailingc                 C   r   r   r   r	   r   r   r   r   r   r   r   r   r   r
   query   s   
zNameserver.querybackendc	           	         s   t r   r   	r	   r   r   r   r   r   r   r   r   r   r   r
   async_query*   s   zNameserver.async_queryNFF)__name__
__module____qualname__r   r   strr   boolr   r   intr   dnsmessageQueryMessagefloatr   Messager   asyncbackendBackendr!   r   r   r   r
   r      s^    
	
	
r   c                       sf   e Zd Zdedef fddZdefddZdefdd	Zd
d Z	defddZ
defddZ  ZS )AddressAndPortNameserveraddressportc                    s   t    || _|| _d S r   )superr   r1   r2   r	   r1   r2   	__class__r   r
   r   9   s   

z!AddressAndPortNameserver.__init__r   c                 C   r   r   r   r   r   r   r
   r   >   r   zAddressAndPortNameserver.kindc                 C      dS )NFr   r   r   r   r
   r   A   r   z+AddressAndPortNameserver.is_always_max_sizec                 C   s    |   }| d| j d| j S )N:@)r   r1   r2   )r	   ns_kindr   r   r
   r   D   s   z AddressAndPortNameserver.__str__c                 C      | j S r   )r1   r   r   r   r
   r   H      z*AddressAndPortNameserver.answer_nameserverc                 C   r;   r   )r2   r   r   r   r
   r   K   r<   z$AddressAndPortNameserver.answer_port)r#   r$   r%   r&   r(   r   r   r'   r   r   r   r   __classcell__r   r   r5   r
   r0   8   s    r0   c                       s   e Zd Zddedef fddZd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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dZ  ZS )Do53Nameserver5   r1   r2   c                    s   t  || d S r   )r3   r   r4   r5   r   r
   r   P   s   zDo53Nameserver.__init__c                 C   r7   )NDo53r   r   r   r   r
   r   S   r   zDo53Nameserver.kindFr   r   r   r   r   r   r   r   c           	      C   sR   |rt jj|| j|| j||||d}|S t jj|| j|| j||d||ddd}|S )N)r   r2   r   r   r   r   T)	r   r2   r   r   raise_on_truncationr   r   ignore_errorsignore_unexpected)r)   r   tcpr1   r2   udp)	r	   r   r   r   r   r   r   r   responser   r   r
   r   V   s4   
zDo53Nameserver.queryr   c	           
         sd   |rt jj|| j|| j|||||d	I d H }	|	S t jj|| j|| j||d|||dddI d H }	|	S )N)r   r2   r   r   r   r   r   T)
r   r2   r   r   rA   r   r   r   rB   rC   )r)   
asyncqueryrD   r1   r2   rE   )
r	   r   r   r   r   r   r   r   r   rF   r   r   r
   r!   {   s:   zDo53Nameserver.async_query)r?   r"   )r#   r$   r%   r&   r(   r   r   r)   r*   r+   r,   r   r'   r-   r   r.   r/   r!   r=   r   r   r5   r
   r>   O   sV    
	
-	
r>   c                       s  e Zd Zdddejjjfdedee de	e
ef de
dejjf
 fd	d
Zdd Zde
fddZdd ZdefddZdefd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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 d!Z  ZS )$DoHNameserverNTFurlbootstrap_addressverifywant_gethttp_versionc                    s,   t    || _|| _|| _|| _|| _d S r   )r3   r   rI   rJ   rK   rL   rM   )r	   rI   rJ   rK   rL   rM   r5   r   r
   r      s   

zDoHNameserver.__init__c                 C   r7   )NDoHr   r   r   r   r
   r      r   zDoHNameserver.kindr   c                 C   r7   )NTr   r   r   r   r
   r      r   z DoHNameserver.is_always_max_sizec                 C   r;   r   rI   r   r   r   r
   r      r<   zDoHNameserver.__str__c                 C   r;   r   rO   r   r   r   r
   r      r<   zDoHNameserver.answer_nameserverc                 C   s   t | jj}|d u rd}|S )Ni  )r   rI   r2   )r	   r2   r   r   r
   r      s   zDoHNameserver.answer_portr   r   r   r   r   r   r   c                 C   s.   t jj|| j|||| j||| j| j | jdS N)	r   r   r   rJ   r   r   rK   postrM   )r)   r   httpsrI   rJ   rK   rL   rM   r   r   r   r
   r      s   
zDoHNameserver.queryr   c	           	         s6   t jj|| j|||| j||| j| j | jdI d H S rP   )r)   rG   rR   rI   rJ   rK   rL   rM   r    r   r   r
   r!      s   zDoHNameserver.async_queryFFFr"   )r#   r$   r%   r)   r   HTTPVersionDEFAULTr&   r   r   r'   r   r   r   r   r   r(   r   r*   r+   r,   r-   r.   r/   r!   r=   r   r   r5   r
   rH      s|    
	
 	
rH   c                       s   e Zd Z			ddededee deeef f fdd	Zd
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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dZ  ZS )DoTNameserverU  NTr1   r2   hostnamerK   c                       t  || || _|| _d S r   )r3   r   rX   rK   )r	   r1   r2   rX   rK   r5   r   r
   r         
zDoTNameserver.__init__c                 C   r7   )NDoTr   r   r   r   r
   r     r   zDoTNameserver.kindFr   r   r   r   r   r   r   r   c              
   C   $   t jj|| j| j|||| j| jdS N)r2   r   r   r   server_hostnamerK   )r)   r   tlsr1   r2   rX   rK   r   r   r   r
   r        
zDoTNameserver.queryr   c	           	   
      ,   t jj|| j| j|||| j| jdI d H S r]   )r)   rG   r_   r1   r2   rX   rK   r    r   r   r
   r!        zDoTNameserver.async_query)rW   NTrS   r"   )r#   r$   r%   r&   r(   r   r   r'   r   r   r)   r*   r+   r,   r-   r   r.   r/   r!   r=   r   r   r5   r
   rV      sn    
		
	
rV   c                       s   e Zd Z			ddededeeef dee f fdd	Zd
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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dZ  ZS )DoQNameserverrW   TNr1   r2   rK   r^   c                    rY   r   )r3   r   rK   r^   )r	   r1   r2   rK   r^   r5   r   r
   r   4  rZ   zDoQNameserver.__init__c                 C   r7   )NDoQr   r   r   r   r
   r   ?  r   zDoQNameserver.kindFr   r   r   r   r   r   r   r   c              
   C   r\   N)r2   r   r   r   rK   r^   )r)   r   quicr1   r2   rK   r^   r   r   r   r
   r   B  r`   zDoQNameserver.queryr   c	           	   
      ra   re   )r)   rG   rf   r1   r2   rK   r^   r    r   r   r
   r!   W  rb   zDoQNameserver.async_query)rW   TNrS   r"   )r#   r$   r%   r&   r(   r   r'   r   r   r   r)   r*   r+   r,   r-   r   r.   r/   r!   r=   r   r   r5   r
   rc   3  sn    
		
	
rc   )typingr   r   urllib.parser   dns.asyncbackendr)   dns.asyncquerydns.inetdns.message	dns.queryr   r0   r>   rH   rV   rc   r   r   r   r
   <module>   s    -UT;