<!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%"                 @   s   d dl mZ d dl mZ d dlZd dlZyd dlZW n ek
rR   d dljZY nX G dd de	Z
G dd de	ZG dd	 d	eZdS )
    )	rpcServer)up2dateErrorsNc               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )_DoCallWrapperze
    A callable object that will handle multiple levels of attributes,
    and catch exceptions.
    c             C   s   || _ || _d S )N)_server_method_name)selfZservermethod_name r	   /usr/lib/python3.6/rhnserver.py__init__2   s    z_DoCallWrapper.__init__c             C   s   t | jd| j|f S )z= Recursively build up the method name to pass to the server. z%s.%s)r   r   r   )r   r   r	   r	   r
   __getattr__6   s    z_DoCallWrapper.__getattr__c             O   s   t | j| j}ytj|f||S  tjk
rH   | jtj	 d Y n t
jjk
r   ttj	 d }|jd}|jd}d}t|dkr|d }nt|dkr|d }|jd}d|krtj n
tj|Y nX dS )	z3 Call the method. Catch faults and translate them.    z[()],    z 'zcertificate verify failedN)getattrr   r   r   ZdoCall	xmlrpclibZFault$_DoCallWrapper__exception_from_faultsysexc_inforequests
exceptionsZSSLErrorstrstripsplitlenr   ZSSLCertificateVerifyFailedErrorZNetworkError)r   argskwargsmethoderrorpiecesmessager	   r	   r
   __call__;   s$    




z_DoCallWrapper.__call__c             C   s  |j dkrtj|j}n|j dkr4tj|j}n|j dkrNtj|j}nr|j dkrhtj|j}nX|j dkrtj|j}n>|j d krtj|j}n$|j d!krtj|j}n
|j d"krtj|j}n|j d#krtj|j}n|j d$krtj	|j}n|j d%kr"tj
|j}nt|j dkrBtj|j}n~t|j dkrbtj|j}n^t|j dkr~tj }nBt|j dkrtj|j}n"|j dkrtj|j}nt|j dkrtj	|j}n|j d&krtj|j}n|j d'krtj|j}n|j d(kr&tj|j}n|j d)kr@tj|j}n|j d*ksX|j d+krftj|j}nZ|j d,krtj|j}n@|j d-krtj|j}n&|j d.krtj|j}ntj|j}|S )/N   r   n   r                     $   1   <   J   i   c   [   j   iX  iY  iZ  i  i  i  =      iiiiiiiiiiiii/iDiCi)Z	faultCoder   Z$AuthenticationOrAccountCreationErrorZfaultStringZUnknownMethodExceptionZLoginMinLengthErrorZPasswordMinLengthErrorZValidationErrorZNoBaseChannelErrorZInsuffMgmntEntsErrorZPasswordErrorabsZ
AbuseErrorZAuthenticationTicketErrorZRegistrationDeniedErrorZRhnUuidUniquenessErrorZ
DelayErrorZInvalidRegistrationNumberErrorZNotEntitlingErrorZPasswordMaxLengthErrorZActivationKeyUsageLimitErrorZUnableToCreateUserZCommunicationError)r   ZfaultZ	exceptionr	   r	   r
   Z__exception_from_faultR   sr    












z%_DoCallWrapper.__exception_from_faultN)__name__
__module____qualname____doc__r   r   r"   r   r	   r	   r	   r
   r   +   s
   r   c               @   s*   e Zd ZdZd
ddZdd Zdd	 ZdS )	RhnServerz`
    An rpc server object that calls doCall for you, and catches lower
    level exceptions
    NFc             C   s&   |d krt j|||d| _n|| _d S )N)serverOverridetimeoutregistration)r   Z	getServerr   )r   r?   r@   rpcServerOverriderA   r	   r	   r
   r      s    zRhnServer.__init__c             C   s   | j j|| d S )N)r   
add_header)r   keyvaluer	   r	   r
   rC      s    zRhnServer.add_headerc             C   s   t | j|S )z6Return a callable object that will do the work for us.)r   r   )r   r   r	   r	   r
   r      s    zRhnServer.__getattr__)NNNF)r:   r;   r<   r=   r   rC   r   r	   r	   r	   r
   r>      s      
r>   c                   s"   e Zd ZdZd fdd	Z  ZS )RegistrationRhnServerz
    A specialized RhnServer subclass for handling registration-related calls.

    Intended to be used as a shorthand for registration tasks instead of
    the plain RhnServer.
    Nc                s   t t| j|||dd d S )NT)r?   r@   rB   rA   )superrF   r   )r   r?   r@   rB   )	__class__r	   r
   r      s
    
zRegistrationRhnServer.__init__)NNN)r:   r;   r<   r=   r   __classcell__r	   r	   )rH   r
   rF      s   rF   )Zup2date_clientr   r   r   r   r   ImportErrorZxmlrpc.clientZclientobjectr   r>   rF   r	   r	   r	   r
   <module>!   s   u