o
    g#                     @   s  U d dl Z d dlZe jdkrd dlmZ d dlZdZd dlZze	du  W n e
y/   eZ	Y nw ejdrEd 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r^G dd dejZnG dd dZG dd dZeed< erwerweZneZdd ZdS dS )    Nwin32)AnyTwmiFc                 C   s"   |  dr| dd  } tj| S )N.   )
startswithdnsname	from_text)domain r   Z/var/www/html/portale_awareness/portale-venv/lib/python3.10/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   /   s   
z_WMIGetter.__init__c                 C   s   t   z?t }| D ](}|jr5|jr5t|j| j_	|j
r&t|j
| j_|jr3dd |jD | j_ nqW t   d S W t   d S t   w )Nc                 S   s   g | ]}t |qS r   )r   ).0xr   r   r   
<listcomp>=   s    z"_WMIGetter.run.<locals>.<listcomp>)	pythoncomCoInitializer   WMI!Win32_NetworkAdapterConfiguration	IPEnabledDNSServerSearchOrderlistr   r   	DNSDomainr   r   DNSDomainSuffixSearchOrderr   CoUninitialize)r   system	interfacer   r   r   run3   s$   
z_WMIGetter.runc                 C   s   |    |   | jS r   )startjoinr   r   r   r   r   getE   s   z_WMIGetter.get)r   r   r   r   r-   r0   __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   N   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   R   s   z_RegistryGetter.__init__c                 C   s4   | ddkrd}|S | ddkrd}|S d}|S )N r   ,)find)r   entry
split_charr   r   r   _determine_split_charU   s   z%_RegistryGetter._determine_split_charc                 C   s<   |  |}||}|D ]}|| jjvr| jj| qd S r   )r8   splitr   r   append)r   r   r7   ns_listnsr   r   r   _config_nameserversd   s   

z#_RegistryGetter._config_nameserversc                 C   sD   |  |}||}|D ]}t|}|| jjvr| jj| qd S r   )r8   r9   r   r   r   r:   )r   r   r7   search_listsr   r   r   _config_searchk   s   

z_RegistryGetter._config_searchc                 C   sb  z
t |d\}}W n ty   d }Y nw |r| | |s!|r=zt |d\}}|r2t|| j_W nB ty<   Y n:w z
t |d\}}W n tyR   d }Y nw |rv| | zt |d\}}|rkt|| j_W n	 tyu   Y nw z
t |d\}}W n ty   d }Y nw |d u rz
t |d\}}W n ty   d }Y nw |r| | d S d S )N
NameServerDomainDhcpNameServer
DhcpDomain
SearchListDhcpSearchList)winregQueryValueExWindowsErrorr=   r   r   r   r@   )r   keyalways_try_domainservers_domr   r   r   r   _config_fromkeys   sZ   

z_RegistryGetter._config_fromkeyc                 C   s   zJt |d| }z<t |d\}}|t jkrtt |d| }zt |d\}}|t jkr1t|d@  W |  W |  W S |  w |  w  tyT   Y dS w )Nz]SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\%s\ConnectionPnpInstanceIDz SYSTEM\CurrentControlSet\Enum\%sConfigFlagsr   F)rG   OpenKeyrH   REG_SZ
ValueError	REG_DWORDClose	Exception)r   lmguidconnection_keypnp_idttype
device_keyflagsr   r   r   _is_nic_enabled   s8   


	


z_RegistryGetter._is_nic_enabledc                 C   s   t dt j}zqt |d}z| |d W |  n|  w t |d}zEd}	 z1t ||}|d7 }t ||}z| ||sIW |  W q)| |d W |  n|  w W n	 tyd   Y nw q*W |  n|  w W |  | j	S |  w )z9Extract resolver configuration from the Windows registry.Nz2SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesr   r   F)
rG   ConnectRegistryHKEY_LOCAL_MACHINErR   rO   rV   EnumKeyr_   EnvironmentErrorr   )r   rX   
tcp_params
interfacesirY   rJ   r   r   r   r0      sD   
z_RegistryGetter.getN)
r   r   r   r   r8   r=   r@   rO   r_   r0   r   r   r   r   r2   Q   s    '4r2   _getter_classc                  C   s   t  } |  S )zExtract resolver configuration.)rg   r0   )getterr   r   r   get_dns_info   s   ri   )sysdns._featuresr   platformtypingr   dns.name_prefer_wmirG   rI   KeyErrorrW   	_featureshave	threadingr!   r   	_have_wmir   r   Threadr   r2   __annotations__rg   ri   r   r   r   r   <module>   s@   
 
  # 