U
    <{f&                     @   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edddZeddd	Zedd
dZ	e
dddZdejjeee e
eeeejjdddZdejjeee e
eejjeeejjd	ddZdS )
Nameserverc                 C   s   d S N selfr   r   M/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/dns/nameserver.py__init__   s    zNameserver.__init__c                 C   s   t d S r   NotImplementedErrorr   r   r   r
   __str__   s    zNameserver.__str__returnc                 C   s   t d S r   r   r   r   r   r
   kind   s    zNameserver.kindc                 C   s   t d S r   r   r   r   r   r
   is_always_max_size   s    zNameserver.is_always_max_sizec                 C   s   t d S r   r   r   r   r   r
   answer_nameserver   s    zNameserver.answer_nameserverc                 C   s   t d S r   r   r   r   r   r
   answer_port   s    zNameserver.answer_portFrequesttimeoutsourcesource_portmax_sizeone_rr_per_rrsetignore_trailingr   c                 C   s   t d S r   r   r	   r   r   r   r   r   r   r   r   r   r
   query   s    
zNameserver.query	r   r   r   r   r   backendr   r   r   c	           	         s   t d S r   r   	r	   r   r   r   r   r   r    r   r   r   r   r
   async_query*   s    zNameserver.async_queryN)FF)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                       sd   e Zd Zeed fddZedddZedddZd	d
 Z	edddZ
edddZ  ZS )AddressAndPortNameserveraddressportc                    s   t    || _|| _d S r   )superr   r2   r3   r	   r2   r3   	__class__r   r
   r   9   s    
z!AddressAndPortNameserver.__init__r   c                 C   s   t d S r   r   r   r   r   r
   r   >   s    zAddressAndPortNameserver.kindc                 C   s   dS )NFr   r   r   r   r
   r   A   s    z+AddressAndPortNameserver.is_always_max_sizec                 C   s    |   }| d| j d| j S )N:@)r   r2   r3   )r	   Zns_kindr   r   r
   r   D   s    z AddressAndPortNameserver.__str__c                 C   s   | j S r   )r2   r   r   r   r
   r   H   s    z*AddressAndPortNameserver.answer_nameserverc                 C   s   | j S r   )r3   r   r   r   r
   r   K   s    z$AddressAndPortNameserver.answer_port)r#   r$   r%   r&   r(   r   r   r'   r   r   r   r   __classcell__r   r   r6   r
   r0   8   s   r0   c                       s   e Zd Zdeed fddZdd Zdejj	e
ee eeeeejjdd	d
Zdejj	e
ee eeejjeeejjd	ddZ  ZS )Do53Nameserver5   r1   c                    s   t  || d S r   )r4   r   r5   r6   r   r
   r   P   s    zDo53Nameserver.__init__c                 C   s   dS )NZDo53r   r   r   r   r
   r   S   s    zDo53Nameserver.kindFr   c           	      C   sP   |r&t jj|| j|| j||||d}n&t jj|| j|| j||d||ddd}|S )N)r   r3   r   r   r   r   T)	r   r3   r   r   raise_on_truncationr   r   ignore_errorsignore_unexpected)r)   r   tcpr2   r3   udp)	r	   r   r   r   r   r   r   r   responser   r   r
   r   V   s2    
zDo53Nameserver.queryr   c	           
         s`   |r.t jj|| j|| j|||||d	I d H }	n.t jj|| j|| j||d|||dddI d H }	|	S )N)r   r3   r   r   r    r   r   T)
r   r3   r   r   r=   r    r   r   r>   r?   )r)   
asyncqueryr@   r2   r3   rA   )
r	   r   r   r   r   r   r    r   r   rB   r   r   r
   r"   {   s6    zDo53Nameserver.async_query)r<   )FF)FF)r#   r$   r%   r&   r(   r   r   r)   r*   r+   r,   r   r'   r-   r   r.   r/   r"   r:   r   r   r6   r
   r;   O   s6   
  -  r;   c                       s   e Zd Zdeee eeef ed fddZdd Zed	d
dZ	dd Z
ed	ddZed	ddZdejjeee eeeeejjdddZdejjeee eeejjeeejjd	ddZ  ZS )DoHNameserverNTF)urlbootstrap_addressverifywant_getc                    s&   t    || _|| _|| _|| _d S r   )r4   r   rE   rF   rG   rH   )r	   rE   rF   rG   rH   r6   r   r
   r      s
    
zDoHNameserver.__init__c                 C   s   dS )NZDoHr   r   r   r   r
   r      s    zDoHNameserver.kindr   c                 C   s   dS )NTr   r   r   r   r
   r      s    z DoHNameserver.is_always_max_sizec                 C   s   | j S r   rE   r   r   r   r
   r      s    zDoHNameserver.__str__c                 C   s   | j S r   rI   r   r   r   r
   r      s    zDoHNameserver.answer_nameserverc                 C   s   t | jj}|d krd}|S )Ni  )r   rE   r3   )r	   r3   r   r   r
   r      s    zDoHNameserver.answer_portr   c                 C   s*   t jj|| j|||| j||| j| j d
S N)r   r   r   rF   r   r   rG   post)r)   r   httpsrE   rF   rG   rH   r   r   r   r
   r      s    
zDoHNameserver.queryr   c	           	         s0   t jj|| j|||| j||| j| j d
I d H S rJ   )r)   rC   rL   rE   rF   rG   rH   r!   r   r   r
   r"      s    zDoHNameserver.async_query)NTF)FFF)FF)r#   r$   r%   r&   r   r   r'   r   r   r   r   r   r(   r   r)   r*   r+   r,   r-   r   r.   r/   r"   r:   r   r   r6   r
   rD      sP      
     rD   c                       s   e Zd Zdeeee eeef d fddZdd Z	de
jjeee eeeee
jjd
ddZde
jjeee eee
jjeee
jjd	ddZ  ZS )DoTNameserverU  NT)r2   r3   hostnamerG   c                    s   t  || || _|| _d S r   )r4   r   rO   rG   )r	   r2   r3   rO   rG   r6   r   r
   r      s    zDoTNameserver.__init__c                 C   s   dS )NZDoTr   r   r   r   r
   r      s    zDoTNameserver.kindFr   c              
   C   s$   t jj|| j| j|||| j| jdS N)r3   r   r   r   server_hostnamerG   )r)   r   tlsr2   r3   rO   rG   r   r   r   r
   r     s    
zDoTNameserver.queryr   c	           	   
      s*   t jj|| j| j|||| j| jdI d H S rP   )r)   rC   rR   r2   r3   rO   rG   r!   r   r   r
   r"     s    zDoTNameserver.async_query)rN   NT)FFF)FF)r#   r$   r%   r&   r(   r   r   r'   r   r   r)   r*   r+   r,   r-   r   r.   r/   r"   r:   r   r   r6   r
   rM      sH      
	     rM   c                       s   e Zd Zdeeeeef ee d fddZdd Z	de
jjeee eeeee
jjd
ddZde
jjeee eee
jjeee
jjd	ddZ  ZS )DoQNameserverrN   TN)r2   r3   rG   rQ   c                    s   t  || || _|| _d S r   )r4   r   rG   rQ   )r	   r2   r3   rG   rQ   r6   r   r
   r   0  s    zDoQNameserver.__init__c                 C   s   dS )NZDoQr   r   r   r   r
   r   ;  s    zDoQNameserver.kindFr   c              
   C   s$   t jj|| j| j|||| j| jdS N)r3   r   r   r   rG   rQ   )r)   r   quicr2   r3   rG   rQ   r   r   r   r
   r   >  s    
zDoQNameserver.queryr   c	           	   
      s*   t jj|| j| j|||| j| jdI d H S rT   )r)   rC   rU   r2   r3   rG   rQ   r!   r   r   r
   r"   S  s    zDoQNameserver.async_query)rN   TN)FFF)FF)r#   r$   r%   r&   r(   r   r'   r   r   r   r)   r*   r+   r,   r-   r   r.   r/   r"   r:   r   r   r6   r
   rS   /  sH      
	     rS   )typingr   r   urllib.parser   Zdns.asyncbackendr)   Zdns.asyncqueryZdns.inetZdns.messageZ	dns.queryr   r0   r;   rD   rM   rS   r   r   r   r
   <module>   s   -UP;