a
    PҚh"                     @   s   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ze	Z
W n eyZ   eZ	Y n0 ejdrd dlZd dlZd dlZdZndZdd ZG d	d
 d
ZerG dd dejZnG dd dZG dd dZeed< erereZneZdd ZdS )    Nwin32)AnyTwmiFc                 C   s"   |  dr| dd  } tj| S )N.   )
startswithdnsnameZ	from_text)domain r   H/wd/webapps/venvs/v2025_4um/lib/python3.9/site-packages/dns/win32util.py_config_domain   s    
r   c                   @   s   e Zd Zdd ZdS )DnsInfoc                 C   s   d | _ g | _g | _d S N)r
   nameserverssearchselfr   r   r   __init__'   s    zDnsInfo.__init__N)__name__
__module____qualname__r   r   r   r   r   r   &   s   r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )
_WMIGetterc                    s   t    t | _d S r   )superr   r   infor   	__class__r   r   r   0   s    
z_WMIGetter.__init__c                 C   s   t   znt }| D ]P}|jr|jrt|j| j_	|j
rLt|j
| j_|jrfdd |jD | j_ qlqW t   n
t   0 d S )Nc                 S   s   g | ]}t |qS r   )r   ).0xr   r   r   
<listcomp>>   s   z"_WMIGetter.run.<locals>.<listcomp>)	pythoncomZCoInitializer   ZWMIZ!Win32_NetworkAdapterConfigurationZ	IPEnabledZDNSServerSearchOrderlistr   r   Z	DNSDomainr   r
   ZDNSDomainSuffixSearchOrderr   ZCoUninitialize)r   systemZ	interfacer   r   r   run4   s    
z_WMIGetter.runc                 C   s   |    |   | jS r   )startjoinr   r   r   r   r   getF   s    z_WMIGetter.get)r   r   r   r   r#   r&   __classcell__r   r   r   r   r   .   s   r   c                   @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   O   s   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )_RegistryGetterc                 C   s   t  | _d S r   )r   r   r   r   r   r   r   S   s    z_RegistryGetter.__init__c                 C   s   | dd S )N, )replacesplit)r   textr   r   r   _splitV   s    z_RegistryGetter._splitc                 C   s.   |  |D ]}|| jjvr
| jj| q
d S r   )r.   r   r   append)r   r   nsr   r   r   _config_nameservers^   s    z#_RegistryGetter._config_nameserversc                 C   s6   |  |D ]&}t|}|| jjvr
| jj| q
d S r   )r.   r   r   r   r/   )r   r   sr   r   r   _config_searchc   s    z_RegistryGetter._config_searchc                 C   sh  zt |d\}}W n ty*   d }Y n0 |r:| | |sB|r|z$t |d\}}|rdt|| j_W q tyx   Y q0 nrzt |d\}}W n ty   d }Y n0 |r| | z$t |d\}}|rt|| j_W n ty   Y n0 zt |d\}}W n ty   d }Y n0 |d u rTzt |d\}}W n tyR   d }Y n0 |rd| | d S )NZ
NameServerDomainZDhcpNameServerZ
DhcpDomainZ
SearchListZDhcpSearchList)winregQueryValueExWindowsErrorr1   r   r   r
   r3   )r   keyZalways_try_domainZservers_domr   r   r   r   _config_fromkeyi   sH    






z_RegistryGetter._config_fromkeyc                 C   s   zt |d| d}zt |d\}}|t jkr6tt |d| }z>t |d\}}|t jkrht|d@  W |  W |  W S |  0 W |  n
|  0 W n ty   Y dS 0 d S )NzPSYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\z\ConnectionZPnpInstanceIDzSYSTEM\CurrentControlSet\Enum\ZConfigFlagsr   F)r5   OpenKeyr6   REG_SZ
ValueErrorZ	REG_DWORDClose	Exception)r   lmguidZconnection_keyZpnp_idttypeZ
device_keyflagsr   r   r   _is_nic_enabled   s:    


	
z_RegistryGetter._is_nic_enabledc                 C   s   t dt j}zt |d}z| |d W |  n
|  0 t |d}zd}zbt ||}|d7 }t ||}z2| ||sW |  W qR| |d W |  n
|  0 W qR ty   Y qY qR0 qRW |  n
|  0 W |  n
|  0 | j	S )z9Extract resolver configuration from the Windows registry.Nz2SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesr   r   F)
r5   ZConnectRegistryHKEY_LOCAL_MACHINEr<   r;   r?   EnumKeyrE   OSErrorr   )r   rA   Z
tcp_paramsZ
interfacesirB   r8   r   r   r   r&      s<    z_RegistryGetter.getN)
r   r   r   r   r.   r1   r3   r;   rE   r&   r   r   r   r   r(   R   s   '4r(   _getter_classc                  C   s   t  } |  S )zExtract resolver configuration.)rJ   r&   )getterr   r   r   get_dns_info   s    rL   )sysZdns._featuresr   platformtypingr   Zdns.nameZ_prefer_wmir5   r7   r9   	NameErrorr@   Z	_featuresZhave	threadingr    r   Z	_have_wmir   r   Threadr   r(   __annotations__rJ   rL   r   r   r   r   <module>   s8   


! 