<!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
mic,                 @   s:  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 d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ y$d dlZd dlZd dlZd dlZW n< ek
r   d dljZd dljZd dljZd dljZY nX d dlZejddd	Zeed
seje_ejZdd ZG dd dej Z!G dd dZ"dddZ#dd Z$dS )    N)config)
up2dateLog)up2dateErrors)up2dateUtils)rpclibzrhn-client-toolsT)Zfallbackugettextc             C   s   t |  d S )N)print)msg r
   /usr/lib/python3.6/rpcServer.pystdoutMsgCallback%   s    r   c                   s0   e Zd Zi Zdd Z fddZdd Z  ZS )RetryServerc             C   s
   || _ d S )N)
serverList)selfr   r
   r
   r   addServerList-   s    zRetryServer.addServerListc       
         s  t j | _xyt j||}W n tjk
r<    Y nj tjk
rt   | jj	d t
td tjd Y n2   | jj }|d kr| jj  | jrdjdd | jj D }t
td t
|  d| j }dtj d	 tj d f }|| j| j< || }|d
| jj   }| jj	| tj| jj }|d	 }	|d | _|d | _|	j }	|	dkrptjd|	 | j| _|	| _| jj | _| jsd| _d| _ wY nX P qW |S )Nz,Error: Server Unavailable. Please try later.   
c             S   s   g | ]\}}d ||f qS )z%s:
%sr
   ).0hosterrorr
   r
   r   
<listcomp>I   s    z)RetryServer._request1.<locals>.<listcomp>z>Errors occurred while trying to connect to the remote servers.z!An error occurred talking to %s:
z%s
%s
r   zTrying the next serverURL: %s
   httphttpsz%Redirected to unsupported protocol %sz/RPC2)r   r   )!r   initLoglogsuperZ_ServerProxy__request	xmlrpclibZFaulthttplibZBadStatusLinelog_mer   _sysexitr   nextresetServerIndex_error_messagesjoinitemsZ_hostexc_infoserverurlparseZurlsplitZ_handlerlowerr   ZInvalidRedirectionErrorZ_orig_handlerZ_typeZ_uriZ_allow_redirect)
r   Z
methodnameZparamsretr*   Zerror_combined_msgr	   Zexception_msgZ	parse_restyp)	__class__r
   r   	_request10   sT    






zRetryServer._request1c             C   s   t jj| j|S )N)xmlrpcclientZ_Methodr0   )r   namer
   r
   r   __getattr__p   s    zRetryServer.__getattr__)__name__
__module____qualname__r&   r   r0   r4   __classcell__r
   r
   )r/   r   r   )   s   @r   c               @   s0   e Zd Zg fddZdd Zdd Zdd Zd	S )

ServerListc             C   s   || _ d| _d S )Nr   )r   index)r   Z
serverlistr
   r
   r   __init__w   s    zServerList.__init__c             C   s   | j | j | _| jS )N)r   r:   Z	serverurl)r   r
   r
   r   r*   {   s    zServerList.serverc             C   s(   | j d | _ | j t| jkr d S | j S )Nr   )r:   lenr   r*   )r   r
   r
   r   r$      s    zServerList.nextc             C   s
   d| _ d S )Nr   )r:   )r   r
   r
   r   r%      s    zServerList.resetServerIndexN)r5   r6   r7   r;   r*   r$   r%   r
   r
   r
   r   r9   v   s   r9   Fc             C   s\  t j }tj }tjtjj |d }t|t	r:t
jd|p@d}|d rTtj }nd }| stj|d}tj|d}	|	rx$|	D ]}
|
|kr~|j|
 q~W n| }t|}d }d }|d r|d pd }|d pd }t|j ||||d	}|j| |jd
tj  dd |jjD }|rXtj|tjsNdtd|f }|jd|  t
j||j| |S )NZ	sslCACertz SSL certificate must be a stringz'/usr/share/rhn/CLN-ORG-TRUSTED-SSL-CERTZenableProxy)registrationZenableProxyAuth	proxyUserproxyPassword)proxyZusernameZpasswordtimeoutzX-Up2date-Versionc             S   s"   g | ]}t j |d  dkrdqS )r   r   T)r+   )r   ir
   r
   r   r      s    zgetServer.<locals>.<listcomp>z%s: %sz ERROR: can not find RHNS CA filez%s)r   r   r   initUp2dateConfigurllib3Zdisable_warnings
exceptionsZSubjectAltNameWarning
isinstancelistr   ZValidationErrorZgetProxySettingZgetServerURLZgetFallbackServerURLappendr9   r   r*   r   Z
add_headerr   versionr   osaccessR_OKr!   r    ZSSLCertificateFileNotFoundZset_trusted_cert)ZserverOverriderA   r=   r   cfgZcaZrhns_ca_certZ	proxyHostZ
serverUrlsZfallbackURLurlr   r>   r?   sZneed_car	   r
   r
   r   	getServer   sR    






rP   c             O   s  t j }|jd| jd   tj }d }d}yt|d }W n tk
rT   d}Y nX |dkrbd}x4d}d }y| ||}W n tk
r   t	j
tdY n tjk
r0 }	 zn|jdtj d |f  ||krtj d }	t|	jdkrt	j
|	jd nt	j
|	jd nd}W Y d d }	~	X n* tjk
rZ   td t	j
dY n  tjk
r   tj d }	d	}
|
d
|	j  }
|
d|	j  }
|
d|	j  }
|j|
 t	j
|
Y n tjk
r8   tj d }	|jd|	j|f  |	jdkr|jd|	j  |jd t j!|	j"\}}d}t#|dkr\|jd|  ddl$m%} |j&  t#|dkr|jtd t	j
|	jt#|dkrt'|d t'g kr|d }n|d }t'|t'g krd|d |d |d |d f }n|}d||f }
|j|
 t	j(|
|s4||kr0t	j
|	jnd}Y n" tj)k
rX   t	j
dY nX |d krhP nd}|rt*j+d |d }||krft	j
dqfW |S )NzrpcServer: Calling XMLRPC %sZ_Method__namer   ZnetworkRetriesr   zConnection aborted by the userz(A socket error occurred: %s, attempt #%szhttplib.IncompleteReadz
An HTTP error occurred:
zURL: %s
zStatus Code: %s
zError Message: %s
z,A protocol error occurred: %s , attempt #%s,i  zCould not find URL, %sz)Check server name and/or URL, then retry
"   z'Auth token timeout occurred
 errmsg: %s)up2dateAuth3   z.Server has refused connection due to high load   z%s-%s-%s.%sr      zFile Not Found: %s
%sz Broken response from the server.   z0The data returned from the server was incomplete),r   r   Z	log_debug__dict__r   rC   int
ValueErrorKeyboardInterruptr   ZCommunicationErrorr!   socketr   r    r"   r)   r<   argsr   ZIncompleteReadr   urllib2Z	HTTPErrorfilenamecoder	   r   ZProtocolErrorerrmsgZerrcoderN   r   ZreportErrorZheadersabsup2date_clientrR   ZupdateLoginInfotypeFileNotFoundErrorZResponseErrortimeZsleep)methodr\   kwargsr   rM   r-   Zattempt_countZattemptsZfailureer	   ZerrCodeZerrMsgresetrR   ZpkgZpkgNamer
   r
   r   doCall   s    




"




rj   )NNF)%rJ   r"   r[   re   Zxmlrpc.clientr1   rD   rb   r   r   r   r   Zrhnr   r   r]   r+   r   ImportErrorZhttp.clientr2   Zurllib.requestZrequestZurllib.parseparsegettextZtranslationthasattrr   r!   r   ZServerr   r9   rP   rj   r
   r
   r
   r   <module>   s@   



M  
C