<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
mi)                 @   sD  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ yd dlm	Z	 W n e
k
rd   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 Zd)ddZd*ddZd+ddZG dd  d eZ d!d" Z!d#d$ Z"d%d& Z#d'd( Z$dS ),    N)	rpcServer)DictType)rpclib)config)	rhnserver)up2dateErrors)
up2dateLog)up2dateUtils)
statisticsz /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 } t }d}|dkr|S yDtjj|d d }|jdd}|dkrN|}n| jd||f  |S  tk
r   | jd | j	t
j   Y nX |S )	z
    Extract the preferred_interface parameter from system_id XML
    Returns 'IPv4' or 'IPv6' if specified, otherwise 'IPv4' as default
    IPv4Nr   preferred_interfaceIPv6zGInvalid preferred_interface value '%s' in system_id, defaulting to '%s'zGFailed to parse system_id XML, preferred_interface defaulting to 'IPv4')r   r   )r   initLogr   r   	xmlrpclibloadsgetlog_me	Exceptionlog_exceptionsysexc_info)logsystemIdr   ZparamsZcfg_interfacer   r   r   getPreferredInterface(   s$    
r)   c        	      C   sB  t jjdrd S tj } ytjjt d d d }W n
   dS t	j
 }| d  oZ||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 )NZLEAPP_IPU_IN_PROGRESSr   Z
os_releaseZchannelOverrider   /z.savew0600   )r   environr!   r   r   r   r   r    r   r	   Z
getVersionr   ZRegistrationRhnServerZregistrationZupgrade_versionrfindr   W_OKmkdirF_OKrenamer   writer   chmodint)	r   idVerZ	systemVersZnewSystemIdr   dirZsavePathr   r   r   r   maybeUpdateVersionL   sB    

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   r   	log_debugr<   r;   r   r   dirnamepcklAuthFileNamer   r0   r1   r5   r6   r"   r   pickledumpr   float)r'   dataZpcklDirpcklAuth
expireTimer   r   r   writeCachedLoginz   s.    



rG   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   r   r>   r   r   r@   r   r   rA   loadEOFError
ValueErrorr   r   r   r    r   r;   rC   _updateLoginInfo)	r'   rE   rD   r7   ZcidVerZcreatedTimeliZcurrentTimerF   r   r   r   readCachedLogin   sH    


rN   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)rM   r   r   r   rL      s
    rL   Fc             C   s   t j }|jd|  | r,t r,t r,tS tj|d}| d krFt } | sNd S t  |j	d |j
j| tj t|t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   r   r>   r<   rN   r   Z	RhnServerr   r:   r"   Zup2dateloginsocketZgetfqdn_get_panel_namer
   Zcount_server_usersrL   rG   )r(   forceUpdaterQ   r'   ZserverrM   r   r   r   rR      s*    


rR   c             C   s0   t j }|jd td| d ts,tjdtS )NzupdateLoginInfo() login infoT)rU   rQ   zUnable to authenticate)r   r   r"   rR   r<   r   ZAuthenticationError)rQ   r'   r   r   r   updateLoginInfo   s    

rV   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)rQ   )r<   	NameErrorrR   )rQ   r   r   r   getLoginInfo  s    

rX   c               @   s   e Zd ZdS )_FailedToGetPanelNameN)__name__
__module____qualname__r   r   r   r   rY     s   rY   c             C   sL   y
t  }W n8 tk
rB   t s8| jtj   | jd t }Y nX |j S )Nz?Failed to get panel name via cldetect, using fallback mechanism)	_get_panel_name_via_cldetectrY   _is_cldeploy_runningr$   r%   r&   r"   _fallback_get_panel_namelower)r'   Z
panel_namer   r   r   rT     s    

rT   c              C   st   d} d}d }t jj| r8t| }|j j }W d Q R X |rpd| }t jj|rpt|}d|j k}W d Q R X |S )Nz/var/lock/cldeploy.lckFz/proc/%s/cmdlineZcldeploy)r   r   existsr   r   strip)Zlock_file_pathZcldeploy_runningpidr   Zpid_cmdline_pathr   r   r   r^      s    

r^   c              C   sr   ddg \} }}t jj| s(td|  tj|tjtjdd}|j \}}|jdkrjtddj	||f |j
 S )	Nz/usr/bin/cldetectz--detect-cp-nameonlyz7Failed to obtain panel name because '%s' does not existT)stdoutstderrZuniversal_newlinesr   z:Failed to obtain panel name using '%s' command; stderr: %s )r   r   ra   rY   
subprocessPopenPIPEZcommunicate
returncodejoinrb   )Zbinary_cmdZprocessrd   re   r   r   r   r]   1  s    
r]   c               C   sd   t jjdrdS t jjdr dS t jjdr0dS t jjdr@dS t jjd	rPd
S t jjdr`dS dS )Nz/usr/local/psa/admin/Zpleskz/usr/local/interworx/Z	interworxz#/usr/local/cpanel/whostmgr/docroot/Zcpanelz/usr/local/ispmgr/Zispmgrz/usr/local/directadmin/Zdirectadminz/usr/local/mgr5/sbin/mgrctlZispmgr5unknown)r   r   isdirisfiler   r   r   r   r_   D  s    r_   )NFN)N)N)%r   rA   r%   r;   rS   rg   Zup2date_clientr   typesr   ImportErrordictZrhnr   r   r   r   r   r	   r
   r<   r@   r   r)   r:   rG   rN   rL   rR   rV   rX   r#   rY   rT   r^   r]   r_   r   r   r   r   <module>   sB   
$. ,
!


