
    iA                        d dl Z d dlZe j        dk    rd dlZd dlmZ d dlZd dlm	Z	 d dl
Z	 eZn# e$ r eZY nw xY w G d de	          Z G d d          Zej        aej                            d          r'd dlZd dlZd dlZej        a G d	 d
ej                  Zn G d d
          Zd Z G d d          Z G d de          ZdeddfdZdefdZdS dS )    Nwin32)IntEnumc                       e Zd ZdZdZdZdS )ConfigMethod         N)__name__
__module____qualname__RegistryWMIWin32     ]/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/dns/win32util.pyr   r      s        r   r   c                       e Zd Zd ZdS )DnsInfoc                 0    d | _         g | _        g | _        d S N)domainnameserverssearchselfs    r   __init__zDnsInfo.__init__   s    DK!DDKKKr   N)r
   r   r   r   r   r   r   r   r      s#        	 	 	 	 	r   r   wmic                   *     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__-   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   )_config_domain).0xs     r   
<listcomp>z"_WMIGetter.run.<locals>.<listcomp>;   s0     4" 4" 4"() %31$5$54" 4" 4"r   )	pythoncomCoInitializer   r   !Win32_NetworkAdapterConfiguration	IPEnabledDNSServerSearchOrderlistr"   r   	DNSDomainr&   r   DNSDomainSuffixSearchOrderr   CoUninitialize)r   system	interfaces      r   runz_WMIGetter.run1   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.getC   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   L   s        Dr   c                 ~    |                      d          r
| dd          } t          j                            |           S )N.r   )
startswithdnsname	from_text)r   s    r   r&   r&   O   s=     S!! 	 ABBZFx!!&)))r   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__X   s    		DIIIr   c                 R    |                     dd                                          S )N, )replacesplit)r   texts     r   _splitz_RegistryGetter._split[   s$     <<S))//111r   c                     |                      |          D ]/}|| j        j        vr| j        j                            |           0d S r   )rL   r"   r   append)r   r   nss      r   _config_nameserversz#_RegistryGetter._config_nameserversc   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   )rL   r&   r"   r   rN   )r   r   ss      r   _config_searchz_RegistryGetter._config_searchh   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WindowsErrorrP   r&   r"   r   rS   )r   keyalways_try_domainservers_domr   s          r   _config_fromkeyz_RegistryGetter._config_fromkeyn   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)r[   OpenKeyr\   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)
r[   ConnectRegistryHKEY_LOCAL_MACHINErg   rc   rk   EnumKeyrt   OSErrorr"   )r   rm   
tcp_params
interfacesirn   r^   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   rL   rP   rS   rc   rt   r9   r   r   r   rD   rD   W   s        	" 	" 	"	2 	2 	2	5 	5 	5
	/ 	/ 	/%	, %	, %	,N2	 2	 2	h#	 #	 #	 #	 #	r   rD   c                       e Zd Zd ZdS )_Win32Getterc                 	  $ t          j        d          }d}d}d}d}d}d} G d dt           j                  $ G d	 d
t           j                  } G $fddt           j                  }	 G d dt           j                  }
dt          j        fdt          j        fdt          j        |
          fd|	fg|
_         G d dt           j                  } G d dt           j                  } G d dt           j                  } G d dt           j                  } G d dt           j                  } G d dt           j                  } G d d t           j                  } G d! d"t           j                  } G d# d$t           j                  } G d% d&t           j                  }dt          j        fd't          j        fdt          j        |          fd(t           j        fd)t          j        |	          fd*t          j        |	          fd+t          j        |	          fd,t          j        |
          fd-t          j	        fd.t          j	        fd/t          j	        fd0t           j
        d1z  fd2t          j        fd3t          j        fd4t          j        fd5t          j        fd6t           j        fg|_        d7 }d8 }t          j        d9          }	 t          j        |j                  }|                    ||d;|t          j        |                    }||k    rn|d<k    rt#          d=|            d;S ft          j        |t          j        |                    }|}|r@|j        j        }|d>k    r|j        j        }"|j        j        |k    r|j        j        }?|j        j        }|r)t0          j                            |          | j        _        |j        j        }|r|j        j        j        }|j        j         } d;}!| |k    r ||j                  }!n=| |k    r7t          j        |t          j        |                    } ||j                  }!|!r-|!| j        j!        vr| j        j!        "                    |!           |j        j        }||j        j        }|@tG                      }"|"$                                }#|#j%        | j        _%        | j        S )?z)Get the attributes using the Windows API.zIphlpapi.dllr      r         c                   8    e Zd Zdej        fdej        dz  fgZdS )$_Win32Getter.get.<locals>.SOCKADDRV4	sa_familysa_data   Nr
   r   r   wintypesUSHORTctypesc_ubyte_fields_r   r   r   
SOCKADDRV4r      .         (/2 34r   r   c                   8    e Zd Zdej        fdej        dz  fgZdS )$_Win32Getter.get.<locals>.SOCKADDRV6r   r      Nr   r   r   r   
SOCKADDRV6r     r   r   r   c                   F    e Zd Zd ej                   fdej        fgZdS )(_Win32Getter.get.<locals>.SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)r
   r   r   r   POINTERr   INTr   )r   s   r   SOCKET_ADDRESSr     s4        !>6>*#=#=>&5r   r   c                       e Zd ZdS )7_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESSNr<   r   r   r   IP_ADAPTER_DNS_SERVER_ADDRESSr             r   r   LengthReservedNextAddressc                   "    e Zd Zdej        fgZdS )!_Win32Getter.get.<locals>.IF_LUIDValueN)r
   r   r   r   c_ulonglongr   r   r   r   IF_LUIDr     s        $f&89:r   r   c                   (    e Zd Zdej        dz  fgZdS )-_Win32Getter.get.<locals>.NET_IF_NETWORK_GUIDr   r   N)r
   r   r   r   r   r   r   r   r   NET_IF_NETWORK_GUIDr     s"        $fnr&9:;r   r   c                       e Zd ZdS )._Win32Getter.get.<locals>.IP_ADAPTER_PREFIX_XPNr<   r   r   r   IP_ADAPTER_PREFIX_XPr   !  r   r   r   c                       e Zd ZdS )7_Win32Getter.get.<locals>.IP_ADAPTER_GATEWAY_ADDRESS_LHNr<   r   r   r   IP_ADAPTER_GATEWAY_ADDRESS_LHr   $  r   r   r   c                   T    e Zd Zdej        dz  fd ej        ej                  fgZdS )/_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SUFFIXString   r   N)r
   r   r   r   c_wcharr   c_void_pr   r   r   r   IP_ADAPTER_DNS_SUFFIXr   '  s:        v~34^V^FO<<=r   r   c                       e Zd ZdS )7_Win32Getter.get.<locals>.IP_ADAPTER_UNICAST_ADDRESS_LHNr<   r   r   r   IP_ADAPTER_UNICAST_ADDRESS_LHr   -  r   r   r   c                       e Zd ZdS )9_Win32Getter.get.<locals>.IP_ADAPTER_MULTICAST_ADDRESS_XPNr<   r   r   r   IP_ADAPTER_MULTICAST_ADDRESS_XPr   0  r   r   r   c                       e Zd ZdS )7_Win32Getter.get.<locals>.IP_ADAPTER_ANYCAST_ADDRESS_XPNr<   r   r   r   IP_ADAPTER_ANYCAST_ADDRESS_XPr   3  r   r   r   c                       e Zd ZdS ):_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESS_XPNr<   r   r   r    IP_ADAPTER_DNS_SERVER_ADDRESS_XPr   6  r   r   r   c                       e Zd ZdS )._Win32Getter.get.<locals>.IP_ADAPTER_ADDRESSESNr<   r   r   r   IP_ADAPTER_ADDRESSESr   9  r   r   r   IfIndexAdapterNameFirstUnicastAddressFirstAnycastAddressFirstMulticastAddressFirstDnsServerAddress	DnsSuffixDescriptionFriendlyNamePhysicalAddress   PhysicalAddressLengthFlagsMtuIfType
OperStatusc                 l    d                     t          t          | j        dd                             S )Nr>   r      )r8   mapstrr   )sockaddr_ins    r   format_ipv4z%_Win32Getter.get.<locals>.format_ipv4T  s*    xxC)<QqS)A B BCCCr   c                 |      fdt          ddd          D             }d                    d |D                       S )Nc                 ^    g | ])}j         |d z            dz  j         |d z   dz            z  *S )r   r   r   )r   )r'   r|   sockaddr_in6s     r   r)   z9_Win32Getter.get.<locals>.format_ipv6.<locals>.<listcomp>a  sQ        !(Q/14|7KAPQETUI7VV  r   r   r   r   :c              3      K   | ]}|d V  	dS )04xNr   )r'   parts     r   	<genexpr>z8_Win32Getter.get.<locals>.format_ipv6.<locals>.<genexpr>e  s&      @@$4@@@@@@r   )ranger8   )r   partss   ` r   format_ipv6z%_Win32Getter.get.<locals>.format_ipv6W  sX       "1b!__   xx@@%@@@@@@r   i:  TNo   z&Error retrieving adapter information: r   )&r   WinDLL	Structurer   ULONGDWORDr   r   c_char_pLPWSTRr   c_uintc_ulongcreate_string_buffervalueGetAdaptersAddressesbyrefprintcastcontentsr   r   r   r   r@   rA   rB   r"   r   r   r   r   r   r   rN   rD   r9   r   )%r   IPHLPAPI	AF_UNSPECERROR_SUCCESSGAA_FLAG_INCLUDE_PREFIXAF_INETAF_INET6IF_TYPE_SOFTWARE_LOOPBACKr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   buffer_sizebufferret_valadapter_addressescurrent_adapteroper_status
dns_suffixcurrent_dns_serversockaddrsockaddr_familyipregistry_getterr"   r   s%                                       @r   r9   z_Win32Getter.get   s\    }^44H IM&0#GH(*%    V-       V-         !1       0@    8>*X^,(EFFGN+	6)2; ; ; ; ;&* ; ; ;< < < < <f&6 < < <    v'7       0@       (8       0@       &2B       0@       63C       v'7    8>*HN+(<==>0&~(F(FG&~(F(FG(&.*H*HI+N#@AA ho.01"FNQ$67((.9(.)'8>*v}-)- )0D D DA A A  !.//K4[5FGG"77+L--  m++__L7LLMMMF" !'';<<! ! 0O! $@ .6A!##&5&>&CO #+26OOO&5&>&CO -5?
 F'*x'9'9*'E'EDI$%4%=%S"( J1:BMH&.&7&AOB&'11([):;;(H44#);x
9S9S#T#T([):;; =TY%::: I188<<<);)D)I& ) J" #2":"?I " $@N .//O"&&((D#{DI9r   N)r
   r   r   r9   r   r   r   r~   r~      s(        x	 x	 x	 x	 x	r   r~   methodreturnc                 
    | a d S r   )_config_method)r  s    r   set_config_methodr    s    r   c                      t           t          j        k    rt                      } n2t           t          j        k    rt                      } nt                      } |                                 S )zExtract resolver configuration.)r  r   r   r~   r   r   rD   r9   )getters    r   get_dns_infor    sM    \///!^^FF|///\\FF$&&Fzz||r   ) sysdns._featuresr@   platformr   ctypes.wintypesr   r[   enumr   dns.namer]   ra   	NameErrorrl   r   r   r   r  	_featureshave	threadingr*   r   r   Threadr   r&   rD   r~   r  r  r   r   r   <module>r     sU   



     <7MMM&&&&&&MMMOOO! ! ! ! !    w   
        "*N
}%   +


 &)	! 	! 	! 	! 	!) 	! 	! 	! 	!B	 	 	 	 	 	 	 	* * *U U U U U U U Unz z z z z z z zx ,  4        '      O s   0 ::