a mi`@sdZddlmZmZmZmZddlZddlZddlZddlm Z ddl Z e j dddZ e e dshe j e _e jZz ddlZWneydZYn0d d Zd d Zd dZdS)z1Used to read hardware info from kudzu, /proc, etc) gethostname getaddrinfoAF_INETAF_INET6N)configzrhn-client-toolsT)fallbackugettextc Cs2t}t}ddd}d}d}d}|D]}|dd}|dd}||} ttfD]} zt| } WntjyYq\Yn0|d rt} | d\}} t | } zP| d | || f| d} | tkr| }n| }t | }|| kr|}Wn"tjy | Yq\Yn0| q\q*tjd r~td tjr~td d }|D]}t|spq^|}q^ntjd rtd tjrtd d }|D]`}t|sq|d}t|dkrܐq|ddkrd|ddd}qq|dks$|dkr(d}|||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)httpshttpN/:rZ enableProxyz /etc/hostnamerz/etc/sysconfig/network=ZHOSTNAMEz"' zlocalhost.localdomainunknown)rinitUp2dateConfigZ getServerURLsplitrrsocketerrorZgetProxySettingintZ settimeoutZconnectZ getsocknamegetfqdncloseospathisfileaccessR_OKopen readlineslenstripjoin)cfgslsthostnameZintfZintf6Z serverUrlZserverZ servertypeportZfamilysZ server_portZintf_tmpZ hostname_tmpZ hostnameinfoinfoZ networkinfoZvalsr-;/usr/lib/python3.9/site-packages/up2date_client/hardware.pyfindHostByRoute&sj             r/cCs.i}d|d<t\|d<|d<|d<|ddkrRt|d<d|dvrRt|d<|ddurz4t|dd}tdd |}|d d d |d<Wnd |d<Yn0|ddurz4t|dd}td d |}|d d d |d<Wnd|d<Yn0|ddurd|d<|ddur*d|d<|S)NZNETINFOclassr)ZipaddrZip6addrr.cSs|dtjkSNr)rrxr-r-r.zread_network..rz 127.0.0.1cSs|dtjkSr2)rrr3r-r-r.r5r6z::1r)r/rrrrfilter)ZnetdictZ list_of_addrsZ ipv4_addrsZ ipv6_addrsr-r-r. read_networkrs4      r9cCsTg}t}|dsPzt}|r*||Wn"ttdtdYn0|S)NZ skipNetworkz%Error reading networking information:r)rrr9appendprint_sysexc_info)Zallhwr&retr-r-r.Hardwaresr@)__doc__rrrrrrr=Zup2date_clientrgettext translationthasattrrr<locale ImportErrorr/r9r@r-r-r-r.s"     L%