HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/dns/__pycache__/_ddr.cpython-310.pyc
o

!we�@s�ddlZddlZddlmZddlZddlZddlZddlZddl	Zddl
Zej�d�Z
Gdd�d�Zdd�Zdd	�Zd
d�ZdS)�N)�urlparsez_dns.resolver.arpac@s6eZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zd	S)
�	_SVCBInfocCs||_||_||_||_dS�N)�bootstrap_address�port�hostname�nameservers)�selfrrrr�r
�A/home/arjun/projects/env/lib/python3.10/site-packages/dns/_ddr.py�__init__s
z_SVCBInfo.__init__cCs.|dD]\}}|dkr||jkrdSqdS)zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)�subjectAltNamez
IP AddressTF)r)r	�cert�name�valuer
r
r�ddr_check_certificate!s
�z_SVCBInfo.ddr_check_certificatecCstjj}|��}|jj|_|Sr)�dns�query�ssl�create_default_context�
TLSVersion�TLSv1_2�minimum_version)r	r�ctxr
r
r�make_tls_context(s
z_SVCBInfo.make_tls_contextc	Cs�|��}t��|}t�|j|jf|��>}|j||jd��%}|�t	j
�|��|��|�
�}|�|�Wd�Wd�S1sEwYWd�dS1sUwYdS)N)�server_hostname)r�time�socket�create_connectionrr�wrap_socketr�
settimeoutrr�
_remaining�do_handshake�getpeercertr)r	�lifetimer�
expiration�s�tsrr
r
r�ddr_tls_check_sync.s���"�z_SVCBInfo.ddr_tls_check_syncNc
�s��|dur
tj��}|��}t��|}|�tj�|j�t	j
dd|j|jf|||j�IdH4IdH�}|�
tj�|��IdH}|�|�Wd�IdHS1IdHsTwYdS)Nr)r�asyncbackend�get_default_backendrr�make_socket�inet�af_for_addressrr�SOCK_STREAMrrr#rr!r)r	r$�backendrr%r'rr
r
r�ddr_tls_check_async:s&�

�	0�z_SVCBInfo.ddr_tls_check_asyncr)�__name__�
__module__�__qualname__rrrr(r0r
r
r
rrsrc	Cs�|j}tj�|�sgSg}|j��D]�}g}|j�tjj	j
j�}|dur%qt|j
�}|jjdd�}d}|j�tjj	j
j�}|durD|j}d|vr�|j�tjj	j
j�}|dus\|j�d�s]q|jdd���}	|	�d�sod|	}	|durud}d|�d	|�|	��}
zt|
�|�tj�|
|��Wn	ty�Ynwd
|vr�|dur�d}|�tj�|||��d|vr�|dur�d}|�tj�||d|��t|�d
kr�|�t||||��q|S)NT)�omit_final_dotsh2s{?dns}i�����/i�zhttps://�:sdotiUsdoqr)�
nameserverrr,�
is_address�rrset�processing_order�params�get�rdtypes�svcbbase�ParamKey�ALPN�set�ids�target�to_text�PORTr�DOHPATHr�endswith�decode�
startswithr�append�
DoHNameserver�	Exception�
DoTNameserver�
DoQNameserver�lenr)�answerr�infos�rrr�param�alpns�hostr�path�urlr
r
r�_extract_nameservers_from_svcbMs^

����rXc	CsFg}t|�}|D]}z
|�|�r|�|j�Wqty Yqw|S)�VReturn a list of TLS-validated resolver nameservers extracted from an SVCB
    answer.)rXr(�extendrrL�rPr$rrQ�infor
r
r�_get_nameservers_sync�s
��r]c	�sN�g}t|�}|D]}z|�|�IdHr|�|j�Wq	ty$Yq	w|S)rYN)rXr0rZrrLr[r
r
r�_get_nameservers_async�s���r^)rr�urllib.parser�dns.asyncbackendr�dns.inet�dns.name�dns.nameserver�	dns.query�dns.rdtypes.svcbbaser�	from_text�_local_resolver_namerrXr]r^r
r
r
r�<module>s	34