3
m��i` � @ s� d Z ddlmZmZmZmZ ddlZddlZddlZddlm Z ddl
Z
e
jddd�Ze
ed�shej
e_ejZyddlZW n ek
r� dZY nX d d
� Zdd� Zd
d� ZdS )z1Used to read hardware info from kudzu, /proc, etc� )�gethostname�getaddrinfo�AF_INET�AF_INET6N)�configzrhn-client-toolsT)Zfallback�ugettextc C sB t j� } t j� }ddd�}d}d}d}�x|D �]}|jd�d }|jd�d }|| } x�ttfD ]�}
ytj|
�}W n tjk
r� wbY nX | d r�t j� }|jd�\}} t | �} yR|j
d
� |j|| f� |j� d }
|
tkr�|
}n|
}tj
|
�}||
k�r|}W n" tjk
�r( |j� wbY nX |j� qbW q.W tjjd��r�tjdtj��r�tdd�j� }x�|D ]}t|��s~�ql|j� }�qlW n�tjjd
��r tjd
tj��r td
d�j� }xd|D ]\}t|��sҐq�|jd�}t|�dk�r�q�|d j� 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�/� �:r ZenableProxy� z
/etc/hostname�rz/etc/sysconfig/network�=� ZHOSTNAME� z"'
zlocalhost.localdomain�unknown)r �initUp2dateConfigZgetServerURL�splitr r �socket�errorZgetProxySetting�intZ
settimeoutZconnectZgetsockname�getfqdn�close�os�path�isfile�access�R_OK�open� readlines�len�strip�join)�cfgZsl�st�hostnameZintfZintf6Z serverUrlZserverZ
servertypeZportZfamily�sZserver_portZintf_tmpZhostname_tmpZhostnameinfo�infoZnetworkinfo�vals� r) �/usr/lib/python3.6/hardware.py�findHostByRoute&