3 0Q=j`ã @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%