Sindbad~EG File Manager
3
�U�f�^�@s`dZddlZddlZddlZddlmZddlmZddlm Z y<ddl
Z
ddlmZm
Z
mZmZmZmZddlmZmZWnFek
r�ddljZ
eZeZ
eZeZeZeZddlmZmZYnXdZd d
�Zdd�Z d
d�Z!Gdd�de"�Z#Gdd�d�Z$Gdd�de$�Z%Gdd�de&�Z'Gdd�de&�Z(dd�Z)Gdd�d�Z*Gdd�de*�Z+dd �Z,dS)!zI2.8.62.8.6-8.module_el8.10.0+6858+3ddf28328.module_el8.10.0+6858+3ddf2832�N)�
transports)�sstr)�UserDictCase)�ListType� TupleType�
StringType�UnicodeType�DictType�DictionaryType)� splittype� splithost�c Cs"ytjtj|�dSdSdS)z5 Returns true if n is IPv6 address, false otherwise. TFN)�socketZ inet_ptonZAF_INET6)�n�r�/usr/lib/python3.6/rpclib.py�
check_ipv6.s
rc Cs�|jdd�}d}d}d}d}t|�dkr^|d}|djdd�}|d}t|�dkrf|d}n|d}|ddkr�tjdtd�\}}|jd�jd �}n6t|�r�|}n(|jdd�}|d}t|�dkr�|d}||||fS)
z| Function used to split host information in an URL per RFC 2396
handle full hostname like user:passwd@host:port
�@�N�r�:�[z(?<=\]):�])�split�len�reZip_port�lstrip�rstripr) Z
hoststring�l�hostZport�userZpasswdZhostportZuserinfo�arrrrr�
split_host6s,
r"cCs8|dkrtd��|jdd�}t|�dkr0|d}t|�S)NzHost string cannot be nullz://rr)�
ValueErrorrrr")�proxyr!rrr�get_proxy_info[sr%c@seZdZdS)�MalformedURIErrorN)�__name__�
__module__�__qualname__rrrrr&gsr&c @seZdZdZejZejZej Z
ejZd;dd�Z
d<dd�Zdd �Zd
d�Zdd
�Zdd�Zd=dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�ZeZd'd(�Zd>d)d*�Z d+d,�Z!d-d.�Z"d/d0�Z#d1d2�Z$d3d4�Z%d?d5d6�Z&d7d8�Z'd9d:�Z(dS)@�Servera7uri [,options] -> a logical connection to an XML-RPC server
uri is the connection point on the server, given as
scheme://host/target.
The standard implementation always supports the "http" scheme. If
SSL socket support is available (Python 2.0), it also supports
"https".
If the target part and the slash preceding it are both omitted,
"/RPC2" is assumed.
The following options can be given as keyword arguments:
transport: a transport factory
encoding: the request encoding (default is UTF-8)
verbose: verbosity level
proxy: use an HTTP proxy
username: username for authenticated HTTP proxy
password: password for authenticated HTTP proxy
All 8-bit strings passed to the server proxy are assumed to use
the given encoding.
NrcCs6|dkrZt|�\}}}
}|dk r.d||f}n|}|
dk rZ|dkrZ|
}|dk rZ|dkrZ|}t|�|_d|_d|_d|_||_||_||_|
|_ t
tj��dkr�tj�d|_
nt|_
|j�|dkr�d|_|j|j||||
�}nd|_d|_d|_||_g|_d|_||_||_|j|�|j| �d|_t�|_dS)Nz%s:%srr)r%r�_uri�_refreshCallback�_progressCallback�_bufferSize�_proxy� _username� _password�_timeoutr�__version__r�rpc_version�_reset_host_handler_and_type�_allow_redirect�default_transport�_type�_redirected�use_handler_path�
_transport�_trusted_cert_files�_lang� _encoding�_verbose�set_refresh_callback�set_progress_callback�send_handlerr�_headers)�self�uri� transport�encoding�verboser$�username�password�refreshCallback�progressCallback�timeoutZphZppZpuZpwrrr�__init__�sJ
zServer.__init__cCsZ|r4|dkr |j||||d�}qV|j||||d�}n"|dkrJ|j|d�}n|j|d�}|S)N�https)Z
proxyUsernameZ
proxyPasswordrM)rM)�_transport_class_https_proxy�_transport_class_proxy�_transport_class_https�_transport_class)rD�typer$rIrJrMrFrrrr7�szServer.default_transportcCs
||_dS)N)r6)rDZallowrrr�allow_redirect�szServer.allow_redirectcCs|js
dS|jS)N)r6r9)rDrrr�
redirected�szServer.redirectedcCs||_|jj|�dS)N)r,r;r@)rDrKrrrr@�szServer.set_refresh_callbackcCs||_|jj|�dS)N)r.r;�set_buffer_size)rD�
bufferSizerrrrW�szServer.set_buffer_size�@cCs||_|jj||�dS)N)r-r;rA)rDrLrXrrrrA�szServer.set_progress_callbackcCstj|||jd�S)N)rG)� xmlrpclib�dumpsr>)rD�params�
methodnamerrr� _req_body�szServer._req_bodycCs|jr|jjSdS)N)r;Z
headers_in)rDrrr�get_response_headers�szServer.get_response_headerscCs|jr|jjSdS)N)r;�response_status)rDrrr�get_response_status�szServer.get_response_statuscCs|jr|jjSdS)N)r;Zresponse_reason)rDrrr�get_response_reasonszServer.get_response_reasonc Cs�|j�}|sdS|jd�}|s"dStd|j��}|ddks@t�t|�dksPt�|djd�}t|�dksnt�|\}}|dkr�d}nt|�}|jd �\}}|t|�t|�d
�}|S)aSReturns a dictionary with three values:
length: the total length of the entity-body (can be None)
first_byte_pos: the position of the first byte (zero based)
last_byte_pos: the position of the last byte (zero based)
The range is inclusive; that is, a response 8-9/102 means two bytes
Nz
Content-Ranger�bytesrr�/�*�-)ZlengthZfirst_byte_posZ
last_byte_pos)r_�get�filterr�AssertionErrorr�int) rD�headersZ
content_ranger!�brangeZ total_len�start�end�resultrrr�get_content_ranges(
zServer.get_content_rangecCs$|j�}|sdSd|kr |dSdS)Nz
Accept-Ranges)r_)rDrkrrr�
accept_ranges)szServer.accept_rangescCs�t|j�\}}|dkrtd��t|�dks:|dd�dkr>t�|dkrR|j�|_n||_|jdkrjtd ��t|�\|_|_ |j s�d
|_ dS)z Reset the attributes:
self._host, self._handler, self._type
according the value of self._uri.
Nzmissing protocol in uri�rrz//�httprOzunsupported XML-RPC protocolz/RPC2)rsrO)
rr+r&r�lowerr8�IOErrorr�_host�_handler)rDrTrErrrr51s
z#Server._reset_host_handler_and_typecs�d}g}x�|D]�}t|�}|tks*|tkr>tj|dt|��}nf|tkr^t�fdd�|D��}nF|tkrz�fdd�|D�}n*|t ks�|t
kr�t�fdd�|j�D��}|j
|�qWt|�dkr�|d St|�Sd
S)a> Strip characters, which are not allowed according:
http://www.w3.org/TR/2006/REC-xml-20060816/#charsets
From spec:
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
z#[\x00-\x09]|[\x0b-\x0c]|[\x0e-\x1f]�c3s|]}�j|�VqdS)N)�_strip_characters)�.0�i)rDrr� <genexpr>Usz+Server._strip_characters.<locals>.<genexpr>csg|]}�j|��qSr)ry)rzr{)rDrr�
<listcomp>Wsz,Server._strip_characters.<locals>.<listcomp>csg|]\}}�j||��qSr)ry)rz�name�val)rDrrr}YsrrN)rTrrr�subrr�tuplerr r
�dict�items�appendr)rD�argsZregexpro�itemZ item_typer)rDrryHs
zServer._strip_charactersc
Cs�d}d}|j��xt|tkr$td��|jj�x$|jj�D]\}}|jj||�q:W|jjdd|j �|jjdd�|j
r�|jjdd�|r�|jjd d
�|jr�|jjd|j�|j|j
|�|�}y&|jj|j|j||jd�}|jj} Wn2tjk
�r|j�r
�ntj�dj} YnXd
|_|d7}| dk�r:Pn| dk�rLd|_q|jj�|_d|_d}|j
�srtd��|j�r�td|j|jf�t|j�\}
}|
d
k�r�|
j�}
|
dk�r�td|
��|jdk�r�|
dk�r�td��t |�\|_|_|j�sd|_|`|j!|
|j"|j#|j$|j%�|_|j&|j'�|j(|j)�|j*|j+�|j,|j-�|j.gkrt/|jd�rx|j.D]}|jj0|��qnWqWt1|t2j3��r�|St1|t4��r�t5|�dk�r�|d}|S)zL Call a method on the remote server
we can handle redirections. rz!Unable to fetch requested PackagezX-Infoz+RPC Processor (C) Red Hat, Inc (version %s)zX-Client-VersionrzX-RHN-Transport-Capabilityzfollow-redirects=3zX-RHN-Redirect�0z
X-RHN-Path)rHN���-�.zRedirects not allowedz%s redirected to %srsrOz%Redirected to unsupported protocol %sz)HTTPS redirected to HTTP is not supportedz/RPC2�add_trusted_cert)r�r�)rsrO)6r5�MAX_REDIRECTIONS�InvalidRedirectionErrorr;Z
clear_headersrCr��
set_header�
add_headerr4r6rBr^ry�requestrvrwr?r`rZZ
ProtocolErrorr:�sys�exc_info�errcoder9rV�printr+rrtr8rr7r/r0r1r2rAr-r@r,rWr.�setlangr=r<�hasattrr��
isinstancerZFilerr)
rDr]r\Zredirect_responseZretry�k�vr�ZresponseZ
save_response�typrE�certfilerrr�_requestbs�
zServer._requestcCsd|jj|j|jfS)Nz
<%s for %s%s>)� __class__r'rvrw)rDrrr�__repr__�szServer.__repr__cCst|j|�S)N)�_Methodr�)rDr~rrr�__getattr__�szServer.__getattr__cKs,|js
dS|j||d��|jjf|�dS)N)�transferrG)r;�update�set_transport_flags)rDr�rG�kwargsrrrr��s
zServer.set_transport_flagscCs|js
iS|jj�S)N)r;�get_transport_flags)rDrrrr��szServer.get_transport_flagscCsdS)Nr)rDrrr�reset_transport_flags�szServer.reset_transport_flagscCs@t|�tg�tf�gkr.dd�|D�|j|<nt|�|j|<dS)NcSsg|]}t|��qSr)�str)rz�arrrr}�sz%Server.set_header.<locals>.<listcomp>)rTrCr�)rDr~�argrrrr��szServer.set_headercCsF||jkr&|j|}t|t�s4|g}ng}|j|<|jt|��dS)N)rCr�rr�r�)rDr~r�Zvlistrrrr�s
zServer.add_headercCs(||_|jr$t|jd�r$|jj|�dS)Nr�)r=r;r�r�)rDZlangrrrr�
szServer.setlangcCstd��dS)NzThis method is deprecated)�NotImplementedError)rDZca_chainrrr�use_CA_chainszServer.use_CA_chaincCs.|jj|�|jr*t|jd�r*|jj|�dS)Nr�)r<r�r;r�r�)rDr�rrrr�szServer.add_trusted_certcCs|jr|jj�d|_dS)N)r;�close)rDrrrr�s
zServer.close) NNrNNNNNN)NNNN)rY)rr)N))r'r(r)�__doc__rZ TransportrSZ
SafeTransportrRZProxyTransportrQZSafeProxyTransportrPrNr7rUrVr@rWrAr^r_rarbrprqr5ryr�r��__str__r�r�r�r�r�r�r�r�r�r�rrrrr*lsH
C
#s
r*c @s\eZdZdddddidddf dd�Zdd�Zdd�Zdd d
�Zdd�Zd
d�Zddd�Z dS)� GETServerNrcCsBtj|||||||| |
d� ||_||_|j|_|jddd�dS)N)r$rIrJrFrKrLrM)�offset�amount)r*rNZ_client_versionrCrw�
_orig_handler� set_range)rDrErFr$rIrJZclient_versionrkrKrLrMrrrrNszGETServer.__init__cCs$|st|�dkrtd��tdd�|jjd��}|d|d|gt|dd��}ddj|�|_|j|_|j r�|j
r�|j�|_x$|jj
�D]\}}|jj||�q�W|jdk �r |jdkr�t|j�d}|jdk r�|t|j|jd�}ndt|j�}|jjd d
|�|jjdd�dS)
Nrz$Required parameter channel not foundcSs|dkS)Nrxr)�xrrr�<lambda>5sz%GETServer._req_body.<locals>.<lambda>rdz$RHNrrfZRangezbytes=)�allow_partial_contentrx)r� Exceptionrhr�r�list�joinrwrBr9r:�
_new_req_bodyrCr�r;r��_offsetr��_amountr�)rDr\r]Zh_compsZhndl�hr�rlrrrr^1s&"
zGETServer._req_bodycCst|j�\}}t|�\}}|S)N)rr9r)rDrTZtmpuriZsiteZhandlerrrrr�UszGETServer._new_req_bodycCs�|dk rByt|�}Wn,tk
r@td|dtj�d��YnX|dk r�yt|�}Wn,tk
r�td|dtj�d��YnX|dkr�td|��||_||_dS)NzInvalid value `%s' for offsetrzInvalid value `%s' for amountr)rjr#�
RangeErrorr�r�r�r�)rDr�r�rrrr�ZszGETServer.set_rangecCs|jjdd�dS)Nr)r�)r;r�)rDrrrr�oszGETServer.reset_transport_flagscCst|j|�S)N)�
SlicingMethodr�)rDr~rrrr�rszGETServer.__getattr__cCs$tj||||||d�}|jd�|S)N)r$rIrJrMZGET)r*r7Z
set_method)rDrTr$rIrJrM�retrrrr7vs
zGETServer.default_transport)NN)NNNN)
r'r(r)rNr^r�r�r�r�r7rrrrr�s$
r�c@seZdZdS)r�N)r'r(r)rrrrr�|sr�c@seZdZdS)r�N)r'r(r)rrrrr�sr�cCs>ddl}t||j�s*||kr&||gSgSdd�|j|�D�S)NrcSs g|]}|jdd�dj��qS)rr)r�strip)rzr�rrrr}�sz#getHeaderValues.<locals>.<listcomp>)� mimetoolsr�ZMessageZgetallmatchingheaders)rkr~r�rrr�getHeaderValues�s
r�c@s4eZdZdZdd�Zdd�Zdd�Zdd �ZeZd
S)r�z{ some magic to bind an XML-RPC method to an RPC server.
supports "nested" methods (e.g. examples.getStateName)
cCs||_||_dS)N)�_send�_name)rD�sendr~rrrrN�sz_Method.__init__cCst|jd|j|f�S)Nz%s.%s)r�r�r�)rDr~rrrr��sz_Method.__getattr__cGs|j|j|�S)N)r�r�)rDr�rrr�__call__�sz_Method.__call__cCsd|jj|j|jfS)Nz<%s %s (%s)>)r�r'r�r�)rDrrrr��sz_Method.__repr__N) r'r(r)r�rNr�r�r�r�rrrrr��sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS) r�z;
A "slicing method" allows for byte range requests
cCstj|||�d|_dS)N)r�rNr�)rDr�r~rrrrN�szSlicingMethod.__init__cCst|jd|j|f�S)Nz%s.%s)r�r�r�)rDr~rrrr��szSlicingMethod.__getattr__cOs�|jd�|_|jd�|_y|jjj|j|jd�Wntk
rFYnX|j|j|�}y|jjj�Wntk
rzYnX|S)Nr�r�)r�r�) rgr�r�r�Zim_selfr��AttributeErrorr�r�)rDr�r�rorrrr��szSlicingMethod.__call__N)r'r(r)r�rNr�r�rrrrr��sr�cCsbd}d}d}||kr t||�}d}||krZt||�}|rZdj|�}ddl}d|j|�}||fS)z% Reports the error from the headers. rrxzX-RHN-Fault-CodezX-RHN-Fault-StringNz%s)rjr�r��base64Zdecodestring)rkr��errmsg�sZ_sListZ_sr�rrr�reportError�s
r�)-r3rrr�ZrhnrZrhn.i18nrZrhn.UserDictCaserrZ�typesrrrrr r
Zurllibrr�ImportErrorZ
xmlrpc.clientZclientr�r�rcr�r�Zurllib.parser�rr"r%rur&r*r�r�r�r�r�r�r�r�rrrr�<module>sF
%5^
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists