
    @OOf                     ^   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 dZ
dZ G d d	e      Zd
ej                  de j                  dej                   deegej$                  ej&                  z  f   deej(                     f
dZd
ej                  de j                  dedeee   geeef   eeeeef   z  f   deej(                     f
dZd
ej                  de j                  deej(                     fdZdej6                  de j                  dej6                  fdZ G d d      Zy)    N)Callable)Iterable)dns)
mode_specsz.in-addr.arpaz	.ip6.arpac                        e Zd ZdZdeddfdZy)ResolveErrorz.Exception thrown by different resolve methods.response_codereturnNc                 P    |t         j                  j                  k7  sJ || _        y N)r   response_codesNOERRORr	   )selfr	   s     ^/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/addons/dns_resolver.py__init__zResolveError.__init__   s$     2 2 : ::::*    )__name__
__module____qualname____doc__intr    r   r   r   r      s    8+c +d +r   r   questionloopfamilyipr
   c                    K   	 |j                   j                  d|t        j                         d {   }t         fd|      S 7 # t        j                  $ rh}|j
                  t        j                  k(  r#t        t        j                  j                        t        t        j                  j                        d }~ww xY ww)Nr   )hostportr   typec           
          t        j                  j                  j                  j                  t         j                  j
                   | d   d         j                        S )N   r   namer    class_ttldata)r   ResourceRecordr$   r    r%   DEFAULT_TTLpacked)addrinfor   r   s    r   <lambda>z*resolve_question_by_name.<locals>.<lambda>(   sL    ++??""..HQKN#**
 r   )getaddrinfor$   socketSOCK_STREAMgaierrorerrno
EAI_NONAMEr   r   r   NXDOMAINSERVFAILmap)r   r   r   r   	addrinfoses   `  `  r   resolve_question_by_namer8      s     
<**QvF<N<N + 
 
	 	
 		 	
 ?? <77f'''s11::;; s11::;;<s8   C0A AA CA C A#CCCsuffixsockaddrc           	         K   	  || j                   d t        |        j                  d      d d d         }	 |j                  |t        j                         d {   \  }}t        j                   | j                   | j"                  | j$                  t
        j                   j&                  t
        j(                  j+                  |            gS # t        $ r$ t	        t
        j                  j                        w xY w7 # t        j                  $ rc}t	        |j                  t        j                  k(  rt
        j                  j                        t
        j                  j                        d }~ww xY ww)N.)flagsr#   )r$   lensplit
ValueErrorr   r   r   FORMERRgetnameinfor.   NI_NAMEREQDr0   r1   r2   r3   r4   r(   r    r%   r)   domain_namespack)r   r   r9   r:   addrr$   _r7   s           r   resolve_question_by_addrrI   3   s?    7nV5;;C@2FG
((V5G5G(HHa 	??""..!!&&t,	
   73--55667 I?? 
ww&+++ ''
 	
 ##,,
 	

sM   E>4C $D DD %A.E>-D  E>D E;AE66E;;E>c                   K   | j                   t        j                  j                  k7  r#t	        t        j
                  j                        | j                  t        j                  j                  k(  r<t        | |t        j                  j                  t        j                         d{   S | j                  t        j                  j                   k(  r<t        | |t        j                  j"                  t        j$                         d{   S | j                  t        j                  j&                  k(  r| j(                  j+                         }|j-                  t.              rt1        | |t.        d        d{   S |j-                  t2              rt1        | |t2        d        d{   S t	        t        j
                  j4                        t	        t        j
                  j                        7 Q7 7 7 Qw)zaResolve the question into resource record(s), throwing ResolveError if an error condition occurs.Nc                 `    t        t        j                  dj                  |                   dfS )Nr<   r   )str	ipaddressIPv4Addressjoinxs    r   r,   z"resolve_question.<locals>.<lambda>f   s#    C	(=(=chhqk(J$KQ#O r   )r   r   r9   r:   c           	          t        t        j                  t        j	                  dj                  |                         dddfS )N r   )rL   rM   IPv6AddressbytesfromhexrO   rP   s    r   r,   z"resolve_question.<locals>.<lambda>m   s6    	--emmBGGAJ.GHI	$ r   )r%   r   classesINr   r   NOTIMPr    typesAr8   r.   AddressFamilyAF_INETrM   rN   AAAAAF_INET6rT   PTRr$   lowerendswithIP4_PTR_SUFFIXrI   IP6_PTR_SUFFIXrB   )r   r   
name_lowers      r   resolve_questionrf   P   s    
 #++..(3--4455}}		#-dF0088):O:O
 
 	
 
#))..	(-dF00999;P;P
 
 	
 
#))--	']]((*
~.1!%O	     01!%	
 
 
 s1199::3--4455?


sK   B)H+G<,A"HG?A1H H0H1H2AH?HHHmessagec                   K   	 | j                   s#t        t        j                  j                        | j
                  t        j                  j                  k7  r#t        t        j                  j                        g }| j                  D ]%  }|j                  t        ||       d {          ' 	 | j                  |      S 7 # t        $ r%}| j                  |j                        cY d }~S d }~ww xY wwr   )queryr   r   r   REFUSEDop_codeop_codesQUERYrY   	questionsextendrf   succeedfailr	   )rg   r   rrsr   r7   s        r   resolve_messagers   z   s     $}}""**  ??cll000""))  )+)) 	?HJJ-h==>	?
 s##	 > -||AOO,,-sG   C8B$C (C
)
C 4C8C 	C5C0*C5+C80C55C8c                   0    e Zd Zdej                  ddfdZy)DnsResolverflowr
   Nc                   K   t        |j                  j                  t        j                        xsI t        |j                  j                  t        j
                        xr |j                  j                  dk(  xr* |j                  xr |j                   xr |j                   }|r6t        |j                  t        j                                d {   |_	        y y 7 w)N)z	10.0.0.535   )
isinstanceclient_conn
proxy_moder   DnsModeWireGuardModeserver_connaddressliveresponseerrorrs   requestasyncioget_running_loop)r   rv   should_resolves      r   dns_requestzDnsResolver.dns_request   s      4++66
8J8JK t//::J<T<TU F((004EE		 			 MM!	 JJ 	 "1g668# DM s   CC#C!C#)r   r   r   r   DNSFlowr   r   r   r   ru   ru      s    ckk d r   ru   )r   rM   r.   collections.abcr   r   	mitmproxyr   mitmproxy.proxyr   rc   rd   	Exceptionr   QuestionAbstractEventLoopr\   rL   rN   rT   r(   r8   listtupler   rI   rf   Messagers   ru   r   r   r   <module>r      sv      $ $  & +9 +ll

#
#    	#	--	0E0EEEF	
 c  !:ll

#
#  S	{E#s(OeCc3<N6O$OOP	
 c  !:'6ll'6")";";'6c  !'6T$[[$ ' 9 9$[[$* r   