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   A/var/www/html/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	   Z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   )NZ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   r?   r   r   r   r@   rA   )r)   
asyncqueryrB   r1   r2   rC   )
r	   r   r   r   r   r   r   r   r   rD   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   rG   rH   rI   rJ   rK   )r	   rG   rH   rI   rJ   rK   r5   r   r
   r      s   

zDoHNameserver.__init__c                 C   r7   )NZ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   rG   r   r   r   r
   r      r;   zDoHNameserver.__str__c                 C   r:   r   rL   r   r   r   r
   r      r;   zDoHNameserver.answer_nameserverc                 C   s   t | jj}|d u rd}|S )Ni  )r   rG   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   rH   r   r   rI   postrK   )r)   r   httpsrG   rH   rI   rJ   rK   r   r   r   r
   r      s   
zDoHNameserver.queryr   c	           	         s6   t jj|| j|||| j||| j| j | jdI d H S rM   )r)   rE   rO   rG   rH   rI   rJ   rK   r    r   r   r
   r!      s   zDoHNameserver.async_queryFFFr"   )r#   r$   r%   r)   r   ZHTTPVersionDEFAULTr&   r   r   r'   r   r   r   r   r   r(   r   r*   r+   r,   r-   r.   r/   r!   r<   r   r   r5   r
   rF      s|    
	
 	
rF   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   hostnamerI   c                       t  || || _|| _d S r   )r3   r   rT   rI   )r	   r1   r2   rT   rI   r5   r   r
   r         
zDoTNameserver.__init__c                 C   r7   )NZ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_hostnamerI   )r)   r   tlsr1   r2   rT   rI   r   r   r   r
   r        
zDoTNameserver.queryr   c	           	   
      ,   t jj|| j| j|||| j| jdI d H S rX   )r)   rE   rZ   r1   r2   rT   rI   r    r   r   r
   r!        zDoTNameserver.async_query)rS   NTrP   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
   rR      sn    
		
	
rR   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 )DoQNameserverrS   TNr1   r2   rI   rY   c                    rU   r   )r3   r   rI   rY   )r	   r1   r2   rI   rY   r5   r   r
   r   4  rV   zDoQNameserver.__init__c                 C   r7   )NZDoQr   r   r   r   r
   r   ?  r   zDoQNameserver.kindFr   r   r   r   r   r   r   r   c              
   C   rW   N)r2   r   r   r   rI   rY   )r)   r   quicr1   r2   rI   rY   r   r   r   r
   r   B  r[   zDoQNameserver.queryr   c	           	   
      r\   r_   )r)   rE   r`   r1   r2   rI   rY   r    r   r   r
   r!   W  r]   zDoQNameserver.async_query)rS   TNrP   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^   3  sn    
		
	
r^   )typingr   r   urllib.parser   Zdns.asyncbackendr)   Zdns.asyncqueryZdns.inetZdns.messageZ	dns.queryr   r0   r=   rF   rR   r^   r   r   r   r
   <module>   s    -UT;