3 g+% @s<ddlZddlZddlZddlZddlZddlZddlmZyddlm Z Wne k rde Z YnXddl m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZdad Zd d ZddZddZddZddZd'ddZd(ddZd)ddZGdddeZdd Z d!d"Z!d#d$Z"d%d&Z#dS)*N) rpcServer)DictType)rpclib) clientCaps)config) rhnserver) up2dateErrors) up2dateLog) up2dateUtilsz /var/spool/up2date/loginAuth.pklcCs@tj}|d}tj|tjs"dSt|d}|j}|j|S)N systemIdPathr)rinitUp2dateConfigosaccessR_OKopenreadclose)cfgpathfretr!/usr/lib/python3.6/up2dateAuth.py getSystemIds rc Cs&tj}ytjjtddd}Wn dStj}||kr"tj }|j j t|}|d}|d|j d}t j|t jsyt j|Wn dSt j|t jsdSt j|t jr|d}yt j||Wn dSt|d}|j||jyt j|tddWn YnXdS) NrZ os_releaser /z.savew0600)rr r xmlrpclibloadsrr Z getVersionr RhnServerZ registrationZupgrade_versionrfindrrW_OKmkdirF_OKrenamerwriterchmodint) ridVerZ systemVersZ newSystemIdrdirZsavePathrrrrmaybeUpdateVersion*s>   r-c Cstj}|jdts$|jddStjtd}tjjt}tj |tj sy tj |tj |t ddWn|jd|dSttd}tj tt d dtj|||j|d ttd }|jd |d d |ddS)z Pickle loginInfo to a file Returns: True -- wrote loginInfo to a pickle file False -- did _not_ write loginInfo to a pickle file zwriteCachedLogin() invokedz1writeCachedLogin() loginInfo is None, so bailing.F)time loginInfoZ0700rz'Unable to write pickled loginInfo to %swbrr.zX-RHN-Auth-Expire-OffsetzWrote pickled loginInfo at z with expiration of z seconds.T)r initLog log_debugr/r.rrdirnamepcklAuthFileNamerr#r$r(r)log_merpickledumprfloat)logdataZpcklDirpcklAuth expireTimerrrwriteCachedLoginTs.      r=c CsTtj}|jdtjttjs2|jdtdSttd}ytj |}Wn*t t fk rt|jd|j dSX|j yLt jjtddd}d|d d }||kr|jd ||fdSWn YnX|d }|d }tj}|t|d }|jd|d|dt|d ||kr<|jd||fdSt||jd|dS)zb Read pickle info from a file Caches authorization info for connecting to the server. zreadCachedLogin invokedz'Unable to read pickled loginInfo at: %sFrbzSUnexpected EOF. Probably an empty file, regenerate auth filerZ system_idzID-%sr/zX-RHN-Server-Idz#system id version changed: %s vs %sr.zX-RHN-Auth-Expire-Offsetz(Checking pickled loginInfo, currentTime=z , createTime=z, expire-offset=z9Pickled loginInfo has expired, created = %s, expire = %s.zs@         * , %