£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
۔*j`                 @   s   d Z ddlmZmZmZmZ ddlZddlZddlZddlm	Z	 ddl
Z
e
jdddZeedshej
e_ejZyddlZW n ek
r   dZY nX d	d
 Zdd Zdd ZdS )z1Used to read hardware info from kudzu, /proc, etc    )gethostnamegetaddrinfoAF_INETAF_INET6N)configzrhn-client-toolsT)Zfallbackugettextc              C   sB  t j } t j }ddd}d}d}d}x|D ]}|jdd }|jdd }|| }	xttfD ]}
ytj|
}W n tjk
r   wbY nX | d	 rt j }|jd\}}	t	|	}	yR|j
d
 |j||	f |j d }|
tkr|}n|}tj|}||kr|}W n" tjk
r(   |j  wbY nX |j  qbW q.W tjjdrtjdtjrtddj }x|D ]}t|s~ql|j }qlW ntjjdr tjdtjr tddj }xd|D ]\}t|sҐq|jd}t|dkrq|d j dkrdj|dd jd}P qW |dks4|dkr8d}|||fS )z returns [hostname, intf, intf6]

        Where hostname is you FQDN of this machine.
        And intf is numeric IPv4 address. And intf6 is IPv6 address.
    i  P   )ZhttpsZhttpN/   :r   ZenableProxy   z/etc/hostnamerz/etc/sysconfig/network=   ZHOSTNAME z"' 	
zlocalhost.localdomainunknown)r   initUp2dateConfigZgetServerURLsplitr   r   socketerrorZgetProxySettingintZ
settimeoutZconnectZgetsocknamegetfqdncloseospathisfileaccessR_OKopen	readlineslenstripjoin)cfgZslsthostnameZintfZintf6Z	serverUrlZserverZ
servertypeZportZfamilysZserver_portZintf_tmpZhostname_tmpZhostnameinfoinfoZnetworkinfovals r)   /usr/lib/python3.6/hardware.pyfindHostByRoute&   sj    








r+   c              C   s.  i } d| d< t  \| d< | d< | d< | d dkrRt | d< d| d krRtj | d< | d d kry4t| d d }tdd	 |}|d
 d d
 | d< W n   d| d< Y nX | d d kry4t| d d }tdd	 |}|d
 d d
 | d< W n   d| d< Y nX | d d krd| d< | d d kr*d| d< | S )NZNETINFOclassr%   ZipaddrZip6addrr   .c             S   s   | d t jkS )Nr   )r   r   )xr)   r)   r*   <lambda>   s    zread_network.<locals>.<lambda>r      z	127.0.0.1c             S   s   | d t jkS )Nr   )r   r   )r.   r)   r)   r*   r/      s    z::1r   )r+   r   r   r   r   filter)ZnetdictZlist_of_addrsZ
ipv4_addrsZ
ipv6_addrsr)   r)   r*   read_networkr   s4    
r2   c           
   C   sT   g } t j }|d sPyt }|r*| j| W n"   ttdtj d  Y nX | S )NZskipNetworkz%Error reading networking information:r   )r   r   r2   appendprint_sysexc_info)Zallhwr#   retr)   r)   r*   Hardware   s    r9   )__doc__r   r   r   r   r   r   r6   Zup2date_clientr   gettextZtranslationthasattrr   r5   ZlocaleImportErrorr+   r2   r9   r)   r)   r)   r*   <module>   s"   

L%