
    Eqg"                     l   U d dl Z d dlZe j        dk    rd dlmZ d dlZdZd dlZ	 e	Z
n# e$ r eZ	Y nw xY wej                            d          rd dlZd dlZd dlZdZndZd Z G d d	          Zer G d
 dej                  Zn G d d          Z G d d          Zeed<   erereZneZd ZdS dS )    Nwin32)AnyTwmiFc                 ~    |                      d          r
| dd          } t          j                            |           S )N.   )
startswithdnsname	from_text)domains    ?/var/www/html/env/lib/python3.11/site-packages/dns/win32util.py_config_domainr      s=     S!! 	 ABBZFx!!&)))    c                       e Zd Zd ZdS )DnsInfoc                 0    d | _         g | _        g | _        d S N)r   nameserverssearchselfs    r   __init__zDnsInfo.__init__'   s    DK!DDKKKr   N)__name__
__module____qualname__r    r   r   r   r   &   s#        	 	 	 	 	r   r   c                   *     e Zd Z fdZd Zd Z xZS )
_WMIGetterc                 n    t                                                       t                      | _        d S r   )superr   r   info)r   	__class__s    r   r   z_WMIGetter.__init__0   s(      """#II			r   c                    t          j                     	 t          j                    }|                                D ]w}|j        rn|j        rgt          |j                  | j        _	        |j
        rt          |j
                  | j        _        |j        rd |j        D             | j        _         nxt          j                     d S # t          j                     w xY w)Nc                 ,    g | ]}t          |          S r   )r   ).0xs     r   
<listcomp>z"_WMIGetter.run.<locals>.<listcomp>>   s0     4" 4" 4"() %31$5$54" 4" 4"r   )	pythoncomCoInitializer   WMI!Win32_NetworkAdapterConfiguration	IPEnabledDNSServerSearchOrderlistr"   r   	DNSDomainr   r   DNSDomainSuffixSearchOrderr   CoUninitialize)r   system	interfaces      r   runz_WMIGetter.run4   s    &(((/ WYYF%+%M%M%O%O 
" 
"	$. 	"93Q 	"489W4X4XDI1(2 W3A)BU3V3V	 0(C "4" 4"-6-Q4" 4" 4"	 0 "E,.....I,....s   BC	 	Cc                 `    |                                   |                                  | j        S r   )startjoinr"   r   s    r   getz_WMIGetter.getF   s&     

		y r   )r   r   r   r   r5   r9   __classcell__)r#   s   @r   r   r   .   sV        & & & & &/ / /$! ! ! ! ! ! !r   r   c                       e Zd ZdS )r   N)r   r   r   r   r   r   r   r   O   s        Dr   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	_RegistryGetterc                 ,    t                      | _        d S r   )r   r"   r   s    r   r   z_RegistryGetter.__init__S   s    		DIIIr   c                 R    |                     dd                                          S )N, )replacesplit)r   texts     r   _splitz_RegistryGetter._splitV   s$     <<S))//111r   c                     |                      |          D ]/}|| j        j        vr| j        j                            |           0d S r   )rE   r"   r   append)r   r   nss      r   _config_nameserversz#_RegistryGetter._config_nameservers^   sQ    kk+.. 5 5TY222I)004445 5r   c                     |                      |          D ]>}t          |          }|| j        j        vr| j        j                            |           ?d S r   )rE   r   r"   r   rG   )r   r   ss      r   _config_searchz_RegistryGetter._config_searchc   s^    [[(( / /"1%%DI,,,I$++A.../ /r   c                    	 t          j        |d          \  }}n# t          $ r d }Y nw xY w|r|                     |           |s|rE	 t          j        |d          \  }}|rt	          |          | j        _        n# t          $ r Y nw xY w	 t          j        |d          \  }}n# t          $ r d }Y nw xY w|rZ|                     |           	 t          j        |d          \  }}|rt	          |          | j        _        n# t          $ r Y nw xY w	 t          j        |d          \  }}n# t          $ r d }Y nw xY w|,	 t          j        |d          \  }}n# t          $ r d }Y nw xY w|r|                     |           d S d S )N
NameServerDomainDhcpNameServer
DhcpDomain
SearchListDhcpSearchList)winregQueryValueExWindowsErrorrI   r   r"   r   rL   )r   keyalways_try_domainservers_domr   s          r   _config_fromkeyz_RegistryGetter._config_fromkeyi   s.   #0lCC
    2((111 + #0h??FC ?+9#+>+>	(#   D#!'!4S:J!K!KJGQQ# # # #"GGG# ,,W555!'!4S,!G!GQ C/=c/B/BDI,'   "/\BB	   ~" & 3C9I J JIFAA# " " "!FFF" ,##F+++++, ,sf    **	3A= =
B
	B
B' 'B65B63D 
DDD/ /D>=D>E E,+E,c                    	 t          j        |d| d          }	 t          j        |d          \  }}|t           j        k    rt          t          j        |d|           }	 t          j        |d          \  }}|t           j        k    rt          |dz   |                                 |                                 S # |                                 w xY w# |                                 w xY w# t          $ r Y dS w xY w)NzPSYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\z\ConnectionPnpInstanceIDzSYSTEM\CurrentControlSet\Enum\ConfigFlagsr   F)rT   OpenKeyrU   REG_SZ
ValueError	REG_DWORDClose	Exception)r   lmguidconnection_keypnp_idttype
device_keyflagss           r   _is_nic_enabledz_RegistryGetter._is_nic_enabled   sA   , "(++ + +" " +&,&9&' 'OVU --((!'FfFF" "J+)/)<Z)W)W F$444",, $)3; #((***"((**** #((****"((****   uusA   C3 AC $4C C ,C3 CC C00C3 3
D Dc                 X   t          j        dt           j                  }	 t          j        |d          }	 |                     |d           |                                 n# |                                 w xY wt          j        |d          }	 d}	 	 t          j        ||          }|dz  }t          j        ||          }	 |                     ||          s	 |                                 ^|                     |d           |                                 n# |                                 w xY wn# t          $ r Y nw xY w	 |                                 n# |                                 w xY w	 |                                 n# |                                 w xY w| j	        S )z9Extract resolver configuration from the Windows registry.Nz2SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesr   r   F)
rT   ConnectRegistryHKEY_LOCAL_MACHINEr`   r\   rd   EnumKeyrm   OSErrorr"   )r   rf   
tcp_params
interfacesirg   rW   s          r   r9   z_RegistryGetter.get   s    'f.GHHB#^M 
'((T:::$$&&&&J$$&&&&#^T 
'A""#)>*a#@#@DFA"(.T"B"BC,'+';';B'E'E !-$, !$		 !% 4 4S% @ @ @ #				& " " "!E"" "$$&&&&J$$&&&&&







9s   F A" F "A88F E /D6 D D6 0E 1D D6 D22D6 5E 6
E E EE F E33F F"N)
r   r   r   r   rE   rI   rL   r\   rm   r9   r   r   r   r=   r=   R   s        	" 	" 	"	2 	2 	2	5 	5 	5
	/ 	/ 	/%	, %	, %	,N2	 2	 2	h#	 #	 #	 #	 #	r   r=   _getter_classc                  F    t                      } |                                 S )zExtract resolver configuration.)rv   r9   )getters    r   get_dns_infory      s    zz||r   )sysdns._featuresr
   platformtypingr   dns.name_prefer_wmirT   rV   rZ   	NameErrorre   	_featureshave	threadingr)   r   	_have_wmir   r   Threadr   r=   __annotations__rv   ry   r   r   r   <module>r      s   




    <7OOOKMMM! ! ! ! ! }%   


			* * *         $	! 	! 	! 	! 	!) 	! 	! 	! 	!B	 	 	 	 	 	 	 	U U U U U U U Un  ([ ("'    U s   ) 33