a
    PҚ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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   I/wd/webapps/venvs/v2025_4um/lib/python3.9/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ddejjjfeee e	e
ef e
ejj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_gethttp_versionc                    s,   t    || _|| _|| _|| _|| _d S r   )r4   r   rE   rF   rG   rH   rI   )r	   rE   rF   rG   rH   rI   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   rJ   r   r   r   r
   r      s    zDoHNameserver.answer_nameserverc                 C   s   t | jj}|d u 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 | jdS N)	r   r   r   rF   r   r   rG   postrI   )r)   r   httpsrE   rF   rG   rH   rI   r   r   r   r
   r      s    
zDoHNameserver.queryr   c	           	         s4   t jj|| j|||| j||| j| j | jdI d H S rK   )r)   rC   rM   rE   rF   rG   rH   rI   r!   r   r   r
   r"      s    zDoHNameserver.async_query)FFF)FF)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   r6   r
   rD      sT   
      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   rQ   rG   )r	   r2   r3   rQ   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   rQ   rG   r   r   r   r
   r     s    
zDoTNameserver.queryr   c	           	   
      s*   t jj|| j| j|||| j| jdI d H S rR   )r)   rC   rT   r2   r3   rQ   rG   r!   r   r   r
   r"     s    zDoTNameserver.async_query)rP   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
   rO      sH      
	     rO   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 )DoQNameserverrP   TN)r2   r3   rG   rS   c                    s   t  || || _|| _d S r   )r4   r   rG   rS   )r	   r2   r3   rG   rS   r6   r   r
   r   4  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   rS   )r)   r   quicr2   r3   rG   rS   r   r   r   r
   r   B  s    
zDoQNameserver.queryr   c	           	   
      s*   t jj|| j| j|||| j| jdI d H S rV   )r)   rC   rW   r2   r3   rG   rS   r!   r   r   r
   r"   W  s    zDoQNameserver.async_query)rP   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
   rU   3  sH      
	     rU   )typingr   r   urllib.parser   Zdns.asyncbackendr)   Zdns.asyncqueryZdns.inetZdns.messageZ	dns.queryr   r0   r;   rD   rO   rU   r   r   r   r
   <module>   s   -UT;