§
    Hºi  ã                   ó²   — d dl Z d dl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d dl
Zej                             d¦  «        Z G d„ d¦  «        Zd„ Zd„ Zd„ ZdS )	é    N)Úurlparsez_dns.resolver.arpac                   ó.   — e Zd Zd„ Zd„ Zd„ Zd„ Zdd„ZdS )Ú	_SVCBInfoc                 ó>   — || _         || _        || _        || _        d S ©N)Úbootstrap_addressÚportÚhostnameÚnameservers)Úselfr   r	   r
   r   s        úM/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/_ddr.pyÚ__init__z_SVCBInfo.__init__   s&   € Ø!2ˆÔØˆŒ	Ø ˆŒØ&ˆÔÐÐó    c                 óJ   — |d         D ]\  }}|dk    r|| j         k    r dS ŒdS )zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)ÚsubjectAltNamez
IP AddressTF)r   )r   ÚcertÚnameÚvalues       r   Úddr_check_certificatez_SVCBInfo.ddr_check_certificate!   s@   € àÐ 0Ô1ð 	ð 	‰KˆD�%Ø�|Ò#Ð#¨°Ô1GÒ(GÐ(GØ�t�tøØˆur   c                 ór   — t           j        j        }|                     ¦   «         }|j        j        |_        |S r   )ÚdnsÚqueryÚsslÚcreate_default_contextÚ
TLSVersionÚTLSv1_2Úminimum_version)r   r   Úctxs      r   Úmake_tls_contextz_SVCBInfo.make_tls_context(   s.   € ÝŒiŒmˆØ×(Ò(Ñ*Ô*ˆØ!œnÔ4ˆÔØˆ
r   c                 ó.  — |                       ¦   «         }t          j        ¦   «         |z   }t          j        | j        | j        f|¦  «        5 }|                     || j        ¬¦  «        5 }|                     t          j
                             |¦  «        ¦  «         |                     ¦   «          |                     ¦   «         }|                      |¦  «        cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   	 d d d ¦  «         d S # 1 swxY w Y   d S )N)Úserver_hostname)r   ÚtimeÚsocketÚcreate_connectionr   r	   Úwrap_socketr
   Ú
settimeoutr   r   Ú
_remainingÚdo_handshakeÚgetpeercertr   )r   Úlifetimer   Ú
expirationÚsÚtsr   s          r   Úddr_tls_check_syncz_SVCBInfo.ddr_tls_check_sync.   s�  € Ø×#Ò#Ñ%Ô%ˆÝ”Y‘[”[ 8Ñ+ˆ
ÝÔ%ØÔ# T¤YÐ/°ñ
ô 
ð 	8àØ—’ °D´M�ÑBÔBð 8ÀbØ—’�cœi×2Ò2°:Ñ>Ô>Ñ?Ô?Ð?Ø—’Ñ!Ô!Ð!Ø—~’~Ñ'Ô'�Ø×1Ò1°$Ñ7Ô7ð	8ð 8ð 8ð 8ñ 8ô 8ð 8ð	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s7   ÁD
Á)A/C1ÃD
Ã1C5	Ã5D
Ã8C5	Ã9D
Ä
DÄDNc           
   ƒ   óL  K  — |€t           j                             ¦   «         }|                      ¦   «         }t	          j        ¦   «         |z   }|                     t           j                             | j        ¦  «        t          j
        dd | j        | j        f||| j        ¦  «        ƒ d {V —†4 ƒd {V —†	 }|                     t           j                             |¦  «        ¦  «        ƒ d {V —†}|                      |¦  «        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nr   )r   ÚasyncbackendÚget_default_backendr   r"   Úmake_socketÚinetÚaf_for_addressr   r#   ÚSOCK_STREAMr	   r
   r)   r   r'   r   )r   r*   Úbackendr   r+   r-   r   s          r   Úddr_tls_check_asyncz_SVCBInfo.ddr_tls_check_async:   sµ  è è € Øˆ?ÝÔ&×:Ò:Ñ<Ô<ˆGØ×#Ò#Ñ%Ô%ˆÝ”Y‘[”[ 8Ñ+ˆ
Ø ×,Ò,ÝŒH×#Ò# DÔ$:Ñ;Ô;ÝÔØØØÔ# T¤YÐ/ØØØŒMñ	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð ØŸš­¬	×(<Ò(<¸ZÑ(HÔ(HÑIÔIÐIÐIÐIÐIÐIÐIˆDØ×-Ò-¨dÑ3Ô3ð	4ð 	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Â3ADÄ
DÄ Dr   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r.   r7   © r   r   r   r      sd   € € € € € ð'ð 'ð 'ðð ð ðð ð ð
8ð 
8ð 
8ð4ð 4ð 4ð 4ð 4ð 4r   r   c           	      ó$  — | j         }t          j                             |¦  «        sg S g }| j                             ¦   «         D �]J}g }|j                             t          j        j	        j
        j        ¦  «        }|€Œ;t          |j        ¦  «        }|j                             d¬¦  «        }d }|j                             t          j        j	        j
        j        ¦  «        }|�|j        }d|v rí|j                             t          j        j	        j
        j        ¦  «        }|�|j                             d¦  «        sŒü|j        d d…                              ¦   «         }	|	                     d¦  «        sd|	z   }	|€d}d|› d	|› |	› �}
	 t/          |
¦  «         |                     t          j                              |
|¦  «        ¦  «         n# t4          $ r Y nw xY wd
|v r8|€d}|                     t          j                              |||¦  «        ¦  «         d|v r9|€d}|                     t          j                              ||d|¦  «        ¦  «         t;          |¦  «        dk    r%|                     t=          ||||¦  «        ¦  «         �ŒL|S )NT)Úomit_final_dots   h2s   {?dns}iúÿÿÿú/i»  zhttps://ú:s   dotiU  s   doqr   )Ú
nameserverr   r3   Ú
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Úurls              r   Ú_extract_nameservers_from_svcbra   M   s‘  € ØÔ)ÐÝŒ8×ÒÐ0Ñ1Ô1ð Øˆ	Ø€EØŒl×+Ò+Ñ-Ô-ð +Pñ +PˆØˆØ”	—’�cœkÔ2Ô;Ô@ÑAÔAˆØˆ=ØÝ�E”I‘”ˆØŒy× Ò °Ð Ñ5Ô5ˆØˆØ”	—’�cœkÔ2Ô;Ô@ÑAÔAˆØÐØ”:ˆDð �Eˆ>ˆ>Ø”I—M’M¥#¤+Ô"6Ô"?Ô"GÑHÔHˆEØˆ} E¤K×$8Ò$8¸Ñ$CÔ$Cˆ}ØØ”;˜s ˜sÔ#×*Ò*Ñ,Ô,ˆDØ—?’? 3Ñ'Ô'ð "Ø˜T‘z�Øˆ|Ø�Ø0˜TÐ0Ð0 DÐ0¨$Ð0Ð0ˆCðÝ˜‘”�Ø×"Ò"¥3¤>×#?Ò#?ÀÐEVÑ#WÔ#WÑXÔXÐXÐXøÝð ð ð à�ðøøøð �Uˆ?ˆ?Øˆ|Ø�Ø×ÒÝ”×,Ò,Ð->ÀÀdÑKÔKñô ð ð �Uˆ?ˆ?Øˆ|Ø�Ø×ÒÝ”×,Ò,Ð->ÀÀdÈDÑQÔQñô ð õ ˆ{ÑÔ˜aÒÐØ�LŠL�Ð#4°d¸DÀ+ÑNÔNÑOÔOÐOùØ€Ls   Æ
AGÇ
GÇGc                 ó²   — g }t          | ¦  «        }|D ]B}	 |                     |¦  «        r|                     |j        ¦  «         Œ3# t          $ r Y Œ?w xY w|S )úVReturn a list of TLS-validated resolver nameservers extracted from an SVCB
    answer.)ra   r.   Úextendr   rU   ©rY   r*   r   rZ   Úinfos        r   Ú_get_nameservers_syncrg   �   s~   € ð €KÝ*¨6Ñ2Ô2€EØð ð ˆð	Ø×&Ò& xÑ0Ô0ð 5Ø×"Ò" 4Ô#3Ñ4Ô4Ð4øøÝð 	ð 	ð 	ØˆDð	øøøàÐs   —/AÁ
AÁAc              ƒ   óÂ   K  — g }t          | ¦  «        }|D ]H}	 |                     |¦  «        ƒ d{V —†r|                     |j        ¦  «         Œ9# t          $ r Y ŒEw xY w|S )rc   N)ra   r7   rd   r   rU   re   s        r   Ú_get_nameservers_asyncri   �   s”   è è € ð €KÝ*¨6Ñ2Ô2€EØð ð ˆð	Ø×-Ò-¨hÑ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7ð 5Ø×"Ò" 4Ô#3Ñ4Ô4Ð4øøÝð 	ð 	ð 	ØˆDð	øøøàÐs   ™5AÁ
AÁA)r#   r"   Úurllib.parser   Údns.asyncbackendr   Údns.inetÚdns.nameÚdns.nameserverÚ	dns.queryÚdns.rdtypes.svcbbaser   Ú	from_textÚ_local_resolver_namer   ra   rg   ri   r;   r   r   ú<module>rs      sç   ðð
 €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð ð ”x×)Ò)Ð*>Ñ?Ô?Ð ð04ð 04ð 04ð 04ð 04ñ 04ô 04ð 04ðf1ð 1ð 1ðhð ð ðð ð ð ð r   