
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
UZ"                 @   s   d dl Z d dlZd dlZyd dlmZ W n ek
r@   eZY nX d dlmZ d dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d dl	mZ d d	l	mZ dad
Zdd Zdd Zdd Zdd Zdd ZdddZdddZdddZdS )    N)DictType)rpclib)
clientCaps)config)	rhnserver)up2dateErrors)
up2dateLog)up2dateUtilsz /var/spool/up2date/loginAuth.pklc              C   s@   t j } | d }tj|tjs"d S t|d}|j }|j  |S )NsystemIdPathr)r   initUp2dateConfigosaccessR_OKopenreadclose)cfgpathfret r   !/usr/lib/python3.6/up2dateAuth.pygetSystemId   s    
r   c        	      C   s&  t j } ytjjt d d d }W n
   dS tj }||kr"tj	 }|j
jt |}| d }|d |jd }tj|tjsytj| W n
   dS tj|tjsdS tj|tjr|d }ytj|| W n
   dS t|d}|j| |j  ytj|tdd W n   Y nX d S )	Nr   Z
os_releaser
   /z.savew0600   )r   r   r   	xmlrpclibloadsr   r	   Z
getVersionr   	RhnServerZregistrationZupgrade_versionrfindr   r   W_OKmkdirF_OKrenamer   writer   chmodint)	r   idVerZ	systemVersZnewSystemIdr   dirZsavePathr   r   r   r   maybeUpdateVersion&   s>    


r,   c              C   s   t j } | jd ts$| jd dS tj td}tjjt}tj	|tj
sy tj| tj|tdd W n   | jd|  dS ttd}tjttd	d tj|| |j  |d
 ttd  }| jd|d
 d|d dS )z
    Pickle loginInfo to a file
    Returns:
    True    -- wrote loginInfo to a pickle file
    False   -- did _not_ write loginInfo to a pickle file
    zwriteCachedLogin() invokedz1writeCachedLogin() loginInfo is None, so bailing.F)time	loginInfoZ0700r   z'Unable to write pickled loginInfo to %swbr   r-   zX-RHN-Auth-Expire-OffsetzWrote pickled loginInfo at z with expiration of z	 seconds.T)r   initLog	log_debugr.   r-   r   r   dirnamepcklAuthFileNamer   r"   r#   r'   r(   log_mer   pickledumpr   float)logdataZpcklDirpcklAuth
expireTimer   r   r   writeCachedLoginP   s.    



r<   c        	      C   sT  t j } | jd tjttjs2| jdt  dS ttd}ytj	|}W n* t
tfk
rt   | jd |j  dS X |j  yLtjjt d d d }d|d	 d
  }||kr| jd||f  dS W n   Y nX |d }|d	 }tj }|t|d  }| jd|d|dt|d  ||kr<| jd||f  dS t| | jd| dS )zb
    Read pickle info from a file
    Caches authorization info for connecting to the server.
    zreadCachedLogin invokedz'Unable to read pickled loginInfo at: %sFrbzSUnexpected EOF. Probably an empty file,                        regenerate auth filer   Z	system_idzID-%sr.   zX-RHN-Server-Idz#system id version changed: %s vs %sr-   zX-RHN-Auth-Expire-Offsetz(Checking pickled loginInfo, currentTime=z, createTime=z, expire-offset=z9Pickled loginInfo has expired, created = %s, expire = %s.z<readCachedLogin(): using pickled loginInfo set to expire at T)r   r0   r1   r   r   r3   r   r   r5   loadEOFError
ValueErrorr   r   r   r   r   r-   r7   _updateLoginInfo)	r8   r:   r9   r)   ZcidVerZcreatedTimeliZcurrentTimer;   r   r   r   readCachedLoginp   sH    


rC   c             C   s2   t | tkr*t ttkr$tj|  q.| andadS )z,
    Update the global var, "loginInfo"
    N)typer   r.   update)rB   r   r   r   rA      s
    rA   Fc       	      C   s   t j }|jd|  | r,t r,t r,tS tj|d}tjj	 }x|D ]\}}|j
|| qHW | d krnt } | svd S t  |jd |jj| }|jj  t| t  tr|jd |jdt tS )Nzlogin(forceUpdate=%s) invoked)timeoutzlogging into up2date serverz?successfully retrieved authentication token from up2date serverz
logininfo:)r   r0   r1   r.   rC   r   r    r   ZcapsZheaderFormatZ
add_headerr   r,   r4   Zup2dateloginZcapabilitiesZvalidaterA   r<   )	ZsystemIdforceUpdaterF   r8   ZserverZ
headerlistZ
headerNamevaluerB   r   r   r   rG      s.    



rG   c             C   s0   t j }|jd td| d ts,tjdtS )NzupdateLoginInfo() login infoT)rH   rF   zUnable to authenticate)r   r0   r4   rG   r.   r   ZAuthenticationError)rF   r8   r   r   r   updateLoginInfo   s    

rJ   c             C   s8   yt a W n tk
r    d a Y nX t r*t S t| d t S )N)rF   )r.   	NameErrorrG   )rF   r   r   r   getLoginInfo   s    

rL   )NFN)N)N)r   r5   r-   typesr   ImportErrordictZrhnr   Zup2date_clientr   r   r   r   r   r	   r.   r3   r   r,   r<   rC   rA   rG   rJ   rL   r   r   r   r   <module>   s.   
* ,
%

