
    hA                        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 G d de	      Z G d d      Zej"                  aej&                  j)                  d      r.d dlZd dlZd dlZej0                  a G d	 d
ej2                        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yy# e$ r eZY w xY w)    Nwin32)IntEnumc                       e Zd ZdZdZdZy)ConfigMethod         N)__name__
__module____qualname__RegistryWMIWin32     K/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/dns/win32util.pyr   r      s    r   r   c                       e Zd Zd Zy)DnsInfoc                 .    d | _         g | _        g | _        y N)domainnameserverssearchselfs    r   __init__zDnsInfo.__init__   s    DK!DDKr   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                 @    t         |           t               | _        y r   )superr   r   info)r   	__class__s    r   r   z_WMIGetter.__init__-   s     "#I	r   c                 >   t        j                          	 t        j                         }|j	                         D ]  }|j
                  s|j                  st        |j                        | j                  _	        |j                  r$t        |j                        | j                  _        |j                  r2|j                  D cg c]  }t        |       c}| j                  _         n t        j                          y c c}w # t        j                          w xY wr   )	pythoncomCoInitializer   r   !Win32_NetworkAdapterConfiguration	IPEnabledDNSServerSearchOrderlistr"   r   	DNSDomain_config_domainr   DNSDomainSuffixSearchOrderr   CoUninitialize)r   system	interfacexs       r   runz_WMIGetter.run1   s    &&(/ WWYF%+%M%M%O 
"	$..93Q3Q489W9W4XDII1(223A)BUBU3V		 0(CC .7-Q-Q4"() %31$54"		 0 "
" ,,.4" ,,.s*   3D 
D A.D DD D Dc                 Z    | j                          | j                          | j                  S r   )startjoinr"   r   s    r   getz_WMIGetter.getC   s      

		yy r   )r
   r   r   r   r2   r6   __classcell__)r#   s   @r   r   r   +   s    &/$!r   r   c                       e Zd Zy)r   Nr
   r   r   r   r   r   r   r   L   s    r   c                 l    | j                  d      r| dd  } t        j                  j                  |       S )N.r   )
startswithdnsname	from_text)r   s    r   r,   r,   O   s2     S!ABZFxx!!&))r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	_RegistryGetterc                 "    t               | _        y r   )r   r"   r   s    r   r   z_RegistryGetter.__init__X   s    	DIr   c                 B    |j                  dd      j                         S )N, )replacesplit)r   texts     r   _splitz_RegistryGetter._split[   s     <<S)//11r   c                     | j                  |      D ]@  }|| j                  j                  vs| j                  j                  j                  |       B y r   )rI   r"   r   append)r   r   nss      r   _config_nameserversz#_RegistryGetter._config_nameserversc   sD    kk+. 5TYY222II))0045r   c                     | j                  |      D ]K  }t        |      }|| j                  j                  vs'| j                  j                  j	                  |       M y r   )rI   r,   r"   r   rK   )r   r   ss      r   _config_searchz_RegistryGetter._config_searchh   sN    [[( /"1%DII,,,II$$++A./r   c                    	 t        j                  |d      \  }}|r| j                  |       |s|r7	 t        j                  |d      \  }}|rt	        |      | j
                  _        nc	 t        j                  |d      \  }}|rG| j                  |       	 t        j                  |d      \  }}|rt	        |      | j
                  _        	 t        j                  |d      \  }}|	 t        j                  |d      \  }}|r| j                  |       y y # t        $ r d }Y 
w xY w# t        $ r Y hw xY w# t        $ r d }Y w xY w# t        $ r Y w xY w# t        $ r d }Y w xY w# t        $ r d }Y tw xY w)N
NameServerDomainDhcpNameServer
DhcpDomain
SearchListDhcpSearchList)winregQueryValueExWindowsErrorrM   r,   r"   r   rP   )r   keyalways_try_domainservers_domr   s          r   _config_fromkeyz_RegistryGetter._config_fromkeyn   s   #00lC
 ((1+#00h?FC+9#+>		(#!'!4!4S:J!KJGQ ,,W5!'!4!4S,!GQ/=c/BDII,"//\B	 ~" & 3 3C9I JIFA ##F+ C    $ 
 $ #"G# (    
 $ "!F"sj   D 5D) *D8 5E	 E )E) D&%D&)	D54D58EE		EEE&%E&)E76E7c                    	 t        j                  |d| d      }	 t        j                  |d      \  }}|t         j                  k7  rt        t        j                  |d|       }	 t        j                  |d      \  }}|t         j
                  k7  rt        |dz   |j                          |j                          S # |j                          w xY w# |j                          w xY w# t        $ r Y yw xY w)NzPSYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\z\ConnectionPnpInstanceIDzSYSTEM\CurrentControlSet\Enum\ConfigFlagsr   F)rX   OpenKeyrY   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   s    , "(k+" +&,&9&9&'OVU -((!'=fXF"J+)/)<)<Z)W F$4$44",, $)3; #((*"((* #((*"((* sA   C+ AC )7C  C 0C+ CC C((C+ +	C76C7c                    t        j                  dt         j                        }	 t        j                  |d      }	 | j	                  |d       |j                          t        j                  |d      }	 d}	 	 t        j                  ||      }|dz  }t        j                  ||      }	 | j                  ||      s	 |j                          X| j	                  |d       |j                          	 {# |j                          w xY w# |j                          w xY w# t        $ r Y nw xY w	 |j                          n# |j                          w xY w	 |j                          | j                  S # |j                          w xY w)z9Extract resolver configuration from the Windows registry.Nz2SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesr   r   F)
rX   ConnectRegistryHKEY_LOCAL_MACHINErd   r`   rh   EnumKeyrq   OSErrorr"   )r   rj   
tcp_params
interfacesirk   r[   s          r   r6   z_RegistryGetter.get   sT    ''f.G.GHB#^^M
'((T:$$&#^^T
'A"#)>>*a#@DFA"(..T"BC,'+';';B'E$, !$		 !% 4 4S% @ #		  $$&" !$		& "!"!$$&J$$&&
99 
s   E1 C4 &E1 6D? :1D ,D	 ?D D? D	 "D 2D? 4DE1 	DD 	D*'D? )D**D? .E1 ?EE1 1FN)
r
   r   r   r   rI   rM   rP   r`   rq   r6   r   r   r   rA   rA   W   s'    	"	2	5
	/%	,N2	h#	r   rA   c                       e Zd Zd Zy)_Win32Getterc                 p  $ 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                        }|j                  ||d:|t        j                   |            }||k(  rn|d;k7  rt#        d<|        y:bt        j$                  |t        j                  |            }|}|r|j&                  j(                  }|d=k7  r|j&                  j*                  }5|j&                  j,                  |k(  r|j&                  j*                  }e|j&                  j.                  }|r.t0        j2                  j5                  |      | j6                  _        |j&                  j:                  }|r|j&                  j<                  j>                  }|j&                  j@                  } d:}!| |k(  r ||j&                        }!n@| |k(  r;t        j$                  |t        j                  |            } ||j&                        }!|!r=|!| j6                  jB                  vr%| j6                  jB                  jE                  |!       |j&                  j*                  }|r|j&                  j*                  }|rtG               }"|"jI                         }#|#jJ                  | j6                  _%        | j6                  S )>z)Get the attributes using the Windows API.zIphlpapi.dllr      r         c                   J    e Zd Zdej                  fdej                  dz  fgZy)$_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                   J    e Zd Zdej                  fdej                  dz  fgZy)$_Win32Getter.get.<locals>.SOCKADDRV6r   r      Nr   r   r   r   
SOCKADDRV6r     r   r   r   c                   T    e Zd Zd ej                  W        fdej                  fgZy)(_Win32Getter.get.<locals>.SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)r
   r   r   r   POINTERr   INTr   )r   s   r   SOCKET_ADDRESSr     s)    !>6>>*#=>&5r   r   c                       e Zd Zy)7_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESSNr9   r   r   r   IP_ADAPTER_DNS_SERVER_ADDRESSr         r   r   LengthReservedNextAddressc                   *    e Zd Zdej                  fgZy)!_Win32Getter.get.<locals>.IF_LUIDValueN)r
   r   r   r   c_ulonglongr   r   r   r   IF_LUIDr     s    $f&8&89:r   r   c                   0    e Zd Zdej                  dz  fgZy)-_Win32Getter.get.<locals>.NET_IF_NETWORK_GUIDr   r}   N)r
   r   r   r   r   r   r   r   r   NET_IF_NETWORK_GUIDr     s    $fnnr&9:;r   r   c                       e Zd Zy)._Win32Getter.get.<locals>.IP_ADAPTER_PREFIX_XPNr9   r   r   r   IP_ADAPTER_PREFIX_XPr   !  r   r   r   c                       e Zd Zy)7_Win32Getter.get.<locals>.IP_ADAPTER_GATEWAY_ADDRESS_LHNr9   r   r   r   IP_ADAPTER_GATEWAY_ADDRESS_LHr   $  r   r   r   c                   j    e Zd Zdej                  dz  fd ej
                  ej                        fgZy)/_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   '  s1    v~~34^V^^FOO<=r   r   c                       e Zd Zy)7_Win32Getter.get.<locals>.IP_ADAPTER_UNICAST_ADDRESS_LHNr9   r   r   r   IP_ADAPTER_UNICAST_ADDRESS_LHr   -  r   r   r   c                       e Zd Zy)9_Win32Getter.get.<locals>.IP_ADAPTER_MULTICAST_ADDRESS_XPNr9   r   r   r   IP_ADAPTER_MULTICAST_ADDRESS_XPr   0  r   r   r   c                       e Zd Zy)7_Win32Getter.get.<locals>.IP_ADAPTER_ANYCAST_ADDRESS_XPNr9   r   r   r   IP_ADAPTER_ANYCAST_ADDRESS_XPr   3  r   r   r   c                       e Zd Zy):_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESS_XPNr9   r   r   r    IP_ADAPTER_DNS_SERVER_ADDRESS_XPr   6  r   r   r   c                       e Zd Zy)._Win32Getter.get.<locals>.IP_ADAPTER_ADDRESSESNr9   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                 Z    dj                  t        t        | j                  dd             S )Nr;   r      )r5   mapstrr   )sockaddr_ins    r   format_ipv4z%_Win32Getter.get.<locals>.format_ipv4T  s%    xxC)<)<Qq)A BCCr   c                     t        ddd      D cg c]-  }| j                  |dz      dz  | j                  |dz   dz      z  / }}dj                  d |D              S c c}w )	Nr   r}   r   r   r   r   :c              3   $   K   | ]  }|d  
 yw)04xNr   ).0parts     r   	<genexpr>z8_Win32Getter.get.<locals>.format_ipv6.<locals>.<genexpr>e  s     @$4*@s   )ranger   r5   )sockaddr_in6ry   partss      r   format_ipv6z%_Win32Getter.get.<locals>.format_ipv6W  ss     #1b!_ !((Q/14|7K7KAPQETUI7VV  xx@%@@@	s   2Ai:  No   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=   r>   r?   r"   r   r   r   r   r   r   rK   rA   r6   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   r6   z_Win32Getter.get   s    }}^4H IM&0#GH(*%V-- V-- !1!1 0@0@  8>>*X^^,(EFGN+	6)2;&** ;<f&6&6 <v'7'7 0@0@ (8(8 0@0@ &2B2B 0@0@ 63C3C v'7'7  8>>*HNN+(<=>0&~(FG&~(FG(&..*HI+NN#@A hoo.01"FNNQ$67((..9(..)'8>>*v}}-)- )0DA  !../K44[5F5FG"77+LL- m+_B7)LM " !'';<! 0O! .66AA!#&5&>&>&C&CO #++226OO&5&>&>&C&CO -55??
'*xx'9'9*'EDII$%4%=%=%S%S"(1::BBMMH&.&7&7&A&AOB&'1():):;(H4#);;x
9S#T():):;TYY%:%:: II1188<);)D)D)I)I& )" #2":":"?"?I "N ./O"&&(D#{{DII99r   N)r
   r   r   r6   r   r   r   r{   r{      s    x	r   r{   methodreturnc                     | a y r   )_config_method)r  s    r   set_config_methodr    s    r   c                      t         t        j                  k(  rt               } | j                         S t         t        j                  k(  rt               } | j                         S t               } | j                         S )zExtract resolver configuration.)r  r   r   r{   r   r   rA   r6   )getters    r   get_dns_infor    s`    \///!^F
 zz|	 |///\F zz| %&Fzz|r   ) sysdns._featuresr=   platformr   ctypes.wintypesr   rX   enumr   dns.namerZ   r^   	NameErrorri   r   r   r   r  	_featureshave	threadingr%   r   r   Threadr   r,   rA   r{   r  r  r   r   r   <module>r     s    
  <<7&!w 
  "**N
}}%  &))	!)) 	!B	 	*U Unz zx ,  4  ' O   ! !s   C CC