3 �Xj`� @s�dZddlmZmZmZmZddlZddlZddlZddlm Z ddl Z e j ddd�Z e e d�she j e _e jZy ddlZWnek r�dZYnXd d �Zd d �Zd d�ZdS)z1Used to read hardware info from kudzu, /proc, etc�)� gethostname� getaddrinfo�AF_INET�AF_INET6N)�configzrhn-client-toolsT)Zfallback�ugettextcCsBtj�}tj�}ddd�}d}d}d}�x|D�]}|jd�d}|jd�d}||} x�ttfD]�} ytj| �} Wntjk r�wbYnX|d r�tj�} | jd�\}} t | �} yR| j d �| j || f�| j �d} | tkr�| }n| }tj | �}|| k�r|}Wn"tjk �r(| j�wbYnX| j�qbWq.Wtjjd ��r�tjd tj��r�td d �j�}x�|D]}t|��s~�ql|j�}�qlWn�tjjd ��r tjd tj��r td d �j�}xd|D]\}t|��sҐq�|jd�}t|�dk�r�q�|dj�dk�r�dj|dd��jd�}P�q�W|dk�s4|dk�r8d}|||fS)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)ZhttpsZhttpN�/��:rZ enableProxy�z /etc/hostname�rz/etc/sysconfig/network�=�ZHOSTNAME�z"' zlocalhost.localdomain�unknown)r�initUp2dateConfigZ getServerURL�splitrr�socket�errorZgetProxySetting�intZ settimeoutZconnectZ getsockname�getfqdn�close�os�path�isfile�access�R_OK�open� readlines�len�strip�join)�cfgZsl�st�hostnameZintfZintf6Z serverUrlZserverZ servertypeZportZfamily�sZ server_portZintf_tmpZ hostname_tmpZ hostnameinfo�infoZ networkinfo�vals�r)�/usr/lib/python3.6/hardware.py�findHostByRoute&sj          r+cCs.i}d|d<t�\|d<|d<|d<|ddkrRt�|d<d|dkrRtj�|d<|ddkr�y4t|dd�}tdd �|�}|d d d |d<Wnd |d<YnX|ddkr�y4t|dd�}td d �|�}|d d d |d<Wnd|d<YnX|ddk�rd|d<|ddk�r*d|d<|S)NZNETINFO�classr%ZipaddrZip6addrr�.cSs|dtjkS)Nr)rr)�xr)r)r*��szread_network..r�z 127.0.0.1cSs|dtjkS)Nr)rr)r.r)r)r*r/�sz::1r)r+rrrr�filter)ZnetdictZ list_of_addrsZ ipv4_addrsZ ipv6_addrsr)r)r*� read_networkrs4      r2c CsTg}tj�}|dsPyt�}|r*|j|�Wn"ttd�tj�d�YnX|S)NZ skipNetworkz%Error reading networking information:r)rrr2�append�print�_�sys�exc_info)Zallhwr#�retr)r)r*�Hardware�sr9)�__doc__rrrrrrr6Zup2date_clientr�gettextZ translation�t�hasattrrr5Zlocale� ImportErrorr+r2r9r)r)r)r*�s"    L%