o
    .j                     @  s   d dl mZ d dlZd dlZddlmZmZ ddlmZ ddl	m
Z
 ddlm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G dd deZdS )    )annotationsN   )resolve_cert_reqsssl_wrap_socket   )PlainResolver)ProtocolResolver)SystemResolverc                      s0   e Zd ZdZejZdZ	dd fddZ  Z	S )TLSResolverzn
    Basic DNS resolver over TLS.
    Comply with RFC 7858: https://datatracker.ietf.org/doc/html/rfc7858
    sslNserverstrport
int | Nonepatternskwargs
typing.AnyreturnNonec                   s  d|v rt |d ttfr|d }nd }d|v r*t |d tr*|d dd\}}nd\}}t j||p5df||dks?|dkrE|t|fnd tjtj	dd	fftj
d
| _t j||g|R i | t| jd|vrk|n|d d|v rv|d nd d|v r|d nd d|v rt|d nd d|v r|d nd d|v r|d nd d|v r|d nd d|v r|d nd d|v r|d nd d|v r|d nd d|v r|d nd d|v r|d nd d| _d| _d S )Ntimeoutsource_address:   )0.0.0.00iU  r   r   tcp)r   r   socket_optionssocket_kindserver_hostnamekey_file	cert_file	cert_reqsca_certsssl_versionciphersca_cert_dirkey_passwordca_cert_data	cert_datakey_data)r   keyfilecertfiler!   r"   r#   r$   r%   r&   r'   certdatakeydataT)
isinstanceintfloatr   splitr	   create_connectionsocketIPPROTO_TCPTCP_NODELAYSOCK_STREAM_socketsuper__init__r   r   _rfc1035_prefix_mandated)selfr   r   r   r   r   bind_ip	bind_port	__class__ ]/home/thesage/.local/lib/python3.10/site-packages/urllib3_future/contrib/resolver/dot/_ssl.pyr9      sH   



zTLSResolver.__init__)N)
r   r   r   r   r   r   r   r   r   r   )
__name__
__module____qualname____doc__r   DOTprotocolimplementationr9   __classcell__r@   r@   r>   rA   r
      s    r
   c                      "   e Zd ZdZd
 fdd	Z  ZS )GoogleResolvergoogler   r   r   r   r   r   c                   R   d|v r	| d d|v r|d }| d nd }t jd|g|R i | d S )Nr   r   z
dns.googlepopr8   r9   r;   r   r   r   r>   r@   rA   r9   O      
 zGoogleResolver.__init__r   r   r   r   r   r   rB   rC   rD   	specifierr9   rI   r@   r@   r>   rA   rK   J       rK   c                      rJ   )CloudflareResolver
cloudflarer   r   r   r   r   r   c                   rM   )Nr   r   z1.1.1.1rN   rP   r>   r@   rA   r9   `   rQ   zCloudflareResolver.__init__rR   rS   r@   r@   r>   rA   rV   [   rU   rV   c                      rJ   )AdGuardResolveradguardr   r   r   r   r   r   c                   rM   )Nr   r   zunfiltered.adguard-dns.comrN   rP   r>   r@   rA   r9   q   rQ   zAdGuardResolver.__init__rR   rS   r@   r@   r>   rA   rX   l   rU   rX   c                      rJ   )OpenDNSResolveropendnsr   r   r   r   r   r   c                   rM   )Nr   r   zdns.opendns.comrN   rP   r>   r@   rA   r9      rQ   zOpenDNSResolver.__init__rR   rS   r@   r@   r>   rA   rZ   }   rU   rZ   c                      rJ   )Quad9Resolverquad9r   r   r   r   r   r   c                   rM   )Nr   r   zdns11.quad9.netrN   rP   r>   r@   rA   r9      rQ   zQuad9Resolver.__init__rR   rS   r@   r@   r>   rA   r\      rU   r\   )
__future__r   r3   typing	util.ssl_r   r   dour   	protocolsr   systemr	   r
   rK   rV   rX   rZ   r\   r@   r@   r@   rA   <module>   s.    
>



