3 0Q=j` @sdZddlmZmZmZmZddlZddlZddlZddlm Z ddl Z e j dddZ e e dshe j e _e jZy ddlZWnek rdZYnXd d Zd d Zd dZdS)z1Used to read hardware info from kudzu, /proc, etc) gethostname getaddrinfoAF_INETAF_INET6N)configzrhn-client-toolsT)ZfallbackugettextcCsBtj}tj}ddd}d}d}d}x|D]}|jdd}|jdd}||} xttfD]} ytj| } Wntjk rwbYnX|d rtj} | jd\}} t | } yR| j d | j || f| j d} | tkr| }n| }tj | }|| kr|}Wn"tjk r(| jwbYnX| jqbWq.Wtjjd rtjd tjrtd d j}x|D]}t|s~ql|j}qlWntjjd r tjd tjr td d j}xd|D]\}t|sҐq|jd}t|dkrq|djdkrdj|ddjd}PqW|dks4|dkr8d}|||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. iP)ZhttpsZhttpN/:rZ enableProxyz /etc/hostnamerz/etc/sysconfig/network=ZHOSTNAMEz"' zlocalhost.localdomainunknown)rinitUp2dateConfigZ getServerURLsplitrrsocketerrorZgetProxySettingintZ settimeoutZconnectZ getsocknamegetfqdncloseospathisfileaccessR_OKopen readlineslenstripjoin)cfgZslsthostnameZintfZintf6Z serverUrlZserverZ servertypeZportZfamilysZ server_portZintf_tmpZ hostname_tmpZ hostnameinfoinfoZ networkinfovalsr)/usr/lib/python3.6/hardware.pyfindHostByRoute&sj          r+cCs.i}d|d<t\|d<|d<|d<|ddkrRt|d<d|dkrRtj|d<|ddkry4t|dd}tdd |}|d d d |d<Wnd |d<YnX|ddkry4t|dd}td d |}|d d d |d<Wnd|d<YnX|ddkrd|d<|ddkr*d|d<|S)NZNETINFOclassr%ZipaddrZip6addrr.cSs|dtjkS)Nr)rr)xr)r)r*szread_network..rz 127.0.0.1cSs|dtjkS)Nr)rr)r.r)r)r*r/sz::1r)r+rrrrfilter)ZnetdictZ list_of_addrsZ ipv4_addrsZ ipv6_addrsr)r)r* read_networkrs4      r2c CsTg}tj}|dsPyt}|r*|j|Wn"ttdtjdYnX|S)NZ skipNetworkz%Error reading networking information:r)rrr2appendprint_sysexc_info)Zallhwr#retr)r)r*Hardwaresr9)__doc__rrrrrrr6Zup2date_clientrgettextZ translationthasattrrr5Zlocale ImportErrorr+r2r9r)r)r)r*s"    L%