HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //usr/lib/python3.6/site-packages/supervisor/__pycache__/xmlrpc.cpython-36.pyc
3

�k�`T�@s�ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddl	mZddl	mZddl	m
Z
ddl	mZddl	mZdd	l	mZdd
l	mZddl	mZddlmZdd
lmZddlmZddlmZGdd�d�Zdd�ZGdd�de�ZGdd�d�Zdd�Z Gdd�d�Z!Gdd�de"�Z#Gdd�d�Z$d d!�Z%d"d#�Z&Gd$d%�d%e�Z'd&d'�Z(Gd(d)�d)e
j)�Z*Gd*d+�d+ej+�Z,d,d-�Z-dS).�N)�	iterparse)�	xmlrpclib)�StringIO)�urllib)�as_bytes)�	as_string)�encodestring)�decodestring)�httplib)�PY2)�
get_header)�xmlrpc_handler)�	producers)�NOT_DONE_YETc@sTeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdS)�Faults������
�����(�2�<�F�P�Z�[�\N)�__name__�
__module__�__qualname__�UNKNOWN_METHOD�INCORRECT_PARAMETERSZ
BAD_ARGUMENTS�SIGNATURE_UNSUPPORTEDZSHUTDOWN_STATEZBAD_NAMEZ
BAD_SIGNALZNO_FILEZNOT_EXECUTABLE�FAILEDZABNORMAL_TERMINATIONZSPAWN_ERRORZALREADY_STARTEDZNOT_RUNNING�SUCCESSZ
ALREADY_ADDEDZ
STILL_RUNNINGZCANT_REREAD�r+r+�/usr/lib/python3.6/xmlrpc.pyrs$rcCs&x tjD]}tt|�|kr|SqWdS)NZUNKNOWN)r�__dict__�getattr)�codeZ	faultnamer+r+r,�getFaultDescription.sr0c@seZdZddd�Zdd�ZdS)�RPCErrorNcCs,||_t|�|_|dk	r(d|j|f|_dS)Nz%s: %s)r/r0�text)�selfr/Zextrar+r+r,�__init__5s
zRPCError.__init__cCsd|j|jfS)Nzcode=%r, text=%r)r/r2)r3r+r+r,�__str__;szRPCError.__str__)N)r#r$r%r4r5r+r+r+r,r14s
r1c@s6eZdZdZejdej�Zdd�Zdd�Z	dd�Z
d	S)
�DeferredXMLRPCResponsez� A medusa producer that implements a deferred callback; requires
    a subclass of asynchat.async_chat that handles NOT_DONE_YET sentinel zConnection: (.*)cCs"||_||_d|_t|j�|_dS)NF)�callback�request�finished�float�delay)r3r8r7r+r+r,r4CszDeferredXMLRPCResponse.__init__cCs�|jr
dSydy|j�}|tkr"tSWn2tk
rV}ztj|j|j�}WYdd}~XnXt|�}d|_|j	|�St
j�}|jj
jjjd|�d|_|jjd�YnXdS)N�TzXML-RPC response callback errori�)r9r7rr1r�Faultr/r2�xmlrpc_marshal�getresponse�	traceback�
format_excr8�channelZserver�logger�log�error)r3�value�err�body�tbr+r+r,�moreIs$"
zDeferredXMLRPCResponse.morecCsd|jd<t|�|jd<|jj|�t|j|jj�}d}|jjdkr^|dkrXd|jd<q�d	}n*|jjd
krx|dkr�d	}n|jjdkr�d	}tj|jj	��}|r�d|jd<|jj
jd|�tj|jj
�}|jj
jtjtj||jj���d|jj
_|r�|jj
j�dS)Nztext/xmlzContent-TypezContent-Lengthrz1.0z
keep-alivez
Keep-AliveZ
Connectionrz1.1�close)r8�len�pushr�
CONNECTION�header�versionrZsimple_producerZbuild_reply_headerZoutgoing�insertZcomposite_producerrB�push_with_producerZglobbing_producerZhooked_producerrDZcurrent_requestZclose_when_done)r3rH�
connectionZclose_itZoutgoing_headerZoutgoing_producerr+r+r,r?bs8


z"DeferredXMLRPCResponse.getresponseN)r#r$r%�__doc__�re�compile�
IGNORECASErNr4rJr?r+r+r+r,r6>s
r6cCs@t|tj�}|r2t|t�s"|f}tj||d�}n
tj|�}|S)N)Zmethodresponse)�
isinstancerr=�tuple�dumps)rFZismethodresponserHr+r+r,r>�s

r>c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�SystemNamespaceRPCInterfacecCs0i|_x|D]\}}||j|<qW||jd<dS)N�system)�
namespaces)r3r]�nameZinstr+r+r,r4�sz$SystemNamespaceRPCInterface.__init__cCsji}x`|jD]V}|j|}xF|jjD]:}t||�}t|�r$|jd�s$d||f}t|j�||<q$WqW|S)N�_z%s.%s)r]�	__class__r-r.�callable�
startswith�strrT)r3�methodsZns_name�	namespaceZmethod_name�funcZsigr+r+r,�_listMethods�s


z(SystemNamespaceRPCInterface._listMethodscCs |j�}t|j��}|j�|S)z� Return an array listing the available method names

        @return array result  An array of method names available (strings).
        )rg�list�keys�sort)r3rdrir+r+r,�listMethods�sz'SystemNamespaceRPCInterface.listMethodscCs8|j�}x |j�D]}||kr||SqWttj��dS)z� Return a string showing the method's documentation

        @param string name   The name of the method.
        @return string result The documentation for the method name.
        N)rgrir1rr()r3r^rdZ
methodnamer+r+r,�
methodHelp�s
z&SystemNamespaceRPCInterface.methodHelpcCs�|j�}x�|D]z}||krd}g}t||�}x<|D]4}|ddkrN|d}q4|ddkr4|j|d�q4W|dkr~ttj��|g|SqWttj��dS)ab Return an array describing the method signature in the
        form [rtype, ptype, ptype...] where rtype is the return data type
        of the method, and ptypes are the parameter data types that the
        method accepts in method argument order.

        @param string name  The name of the method.
        @return array result  The result.
        Nr�returnr�param)rg�gettags�appendr1rr()r3r^rd�methodZrtypeZptypesZparsed�thingr+r+r,�methodSignature�s	



z+SystemNamespaceRPCInterface.methodSignaturecsH|dd�}g}g}|||f�fdd�	}d|_|�}|tkr@|S|SdS)aProcess an array of calls, and return an array of
        results. Calls should be structs of the form {'methodName':
        string, 'params': array}. Each result will either be a
        single-item array containing the result value, or a struct of
        the form {'faultCode': int, 'faultString': string}. This is
        useful when you need to make lots of small calls without lots
        of round trips.

        @param array calls  An array of call requests
        @return array result  An array of results
        Ncs�|r�y|d�}Wnftk
rB}z|j|jd�}WYdd}~Xn8tj�}d|d|df}tjd|d�}YnX|tk	r�|jd�|j	|��x|o�|�r�|jd�}|j
dd�}|j
dg�}	yB|dkr�ttjd��|d	kr�ttjd
��t�j
�}
t|
||	�}Wnhtk
�r<}z|j|jd�}WYdd}~Xn8tj�}d|d|df}tjd|d�}YnXt|tj��r�|j	|�q�|j	|�q�W|�s�|�r�tS|SdS)Nr)Z	faultCodeZfaultStringz%s:%srzFAILED: �
methodName�paramsz
No methodNamezsystem.multicallz$Recursive system.multicall forbidden)r1r/r2�sys�exc_inforr)r�poprp�getr'�AttrDictr]�traverserX�types�FunctionType)�remaining_calls�	callbacks�resultsrF�exc�info�errmsg�callr^ru�root)r3r+r,�multi�sR



z4SystemNamespaceRPCInterface.multicall.<locals>.multig�������?)r;r)r3Zcallsr~rr�r�rFr+)r3r,�	multicall�s6z%SystemNamespaceRPCInterface.multicallN)	r#r$r%r4rgrkrlrsr�r+r+r+r,r[�s
r[c@seZdZdd�ZdS)rzcCs
|j|�S)N)ry)r3r^r+r+r,�__getattr__3szAttrDict.__getattr__N)r#r$r%r�r+r+r+r,rz1srzc@seZdZdd�ZdS)�RootRPCInterfacecCs"x|D]\}}t|||�qWdS)N)�setattr)r3�
subinterfacesr^�rpcinterfacer+r+r,r47szRootRPCInterface.__init__N)r#r$r%r4r+r+r+r,r�6sr�cCs.t|�}|tjkrtj}n|tjkr*tj}|S)N)�intrZMININTZMAXINT)rF�ir+r+r,�
capped_int;s

r�cCstjtj|d�dd��S)Nz%Y%m%dT%H:%M:%Sr)�datetime�timeZstrptime)r2r+r+r,�
make_datetimeCsr�c@s�eZdZdZdZdd�dd�dd�dd�dd�d	d�d
d�dd�dd�d
d�dd�d�Zdd�Zdd�Zdd�Zdd�Z	dd�Z
dS)�supervisor_xmlrpc_handlerz/RPC2zSupervisor XML-RPC HandlercCs
t|j�S)N)r�r2)�xr+r+r,�<lambda>Msz"supervisor_xmlrpc_handler.<lambda>cCs
t|j�S)N)r�r2)r�r+r+r,r�NscCs
|jdkS)N�1)r2)r�r+r+r,r�OscCs
|jpdS)Nr<)r2)r�r+r+r,r�PscCs
t|j�S)N)r:r2)r�r+r+r,r�QscCs
t|j�S)N)r�r2)r�r+r+r,r�RscCs
|djS)Nr)r2)r�r+r+r,r�SscCsdd�|D�S)NcSsg|]
}|j�qSr+)r2)�.0�vr+r+r,�
<listcomp>Tsz6supervisor_xmlrpc_handler.<lambda>.<locals>.<listcomp>r+)r�r+r+r,r�TscCstdd�|D��S)NcSs g|]\}}|jpd|jf�qS)r<)r2)r��kr�r+r+r,r�Usz6supervisor_xmlrpc_handler.<lambda>.<locals>.<listcomp>)�dict)r�r+r+r,r�UscCsttt|jpd���S)Nr<)rr	rr2)r�r+r+r,r�VscCs
|djS)Nr)r2)r�r+r+r,r�Ws)r�Zi4Zboolean�stringZdoublezdateTime.iso8601Zarray�data�struct�base64rncCst|�|_||_dS)N)r�r��supervisord)r3r�r�r+r+r,r4Zs
z"supervisor_xmlrpc_handler.__init__cCs�d}}x�tt|��D]�\}}|jj|j�}|rH||�}|j�||_q|jdkr�y|dj}Wntk
r~|jpxd}YnX|j�||_q|jdkr�|j}q|jdkrtdd�|D��}qW||fS)NrFrr<rtrucSsg|]
}|j�qSr+)r2)r�r�r+r+r,r�psz3supervisor_xmlrpc_handler.loads.<locals>.<listcomp>)	rr�
unmarshallersry�tag�clearr2�
IndexErrorrY)r3r�rurq�action�elemZ
unmarshallr+r+r,�loads^s&


zsupervisor_xmlrpc_handler.loadscCs|jj|j�S)N)�urirb�path)r3r8r+r+r,�matchsszsupervisor_xmlrpc_handler.matchcCs�|jjj}�yLy"tr |jdd�}|j|�\}}Wn$|jd|f�|jd�dS|sx|jd|f�|jd�dS|dkr�f}y,|jd|�|j||�}|jd|�WnLt	k
�r�}z.t
j|j|j
�}|jd||j|j
f�WYdd}~XnXt|tj��r$|jj}|t||��n2tt|��}	d	|d
<t|	�|d<|j|	�|j�Wn0tj�}
|jd||
f�|jd
�YnXdS)N�ascii�xmlcharrefreplacez2XML-RPC request data %r is invalid: unmarshallablei�z2XML-RPC request data %r is invalid: no method namezXML-RPC method called: %s()z)XML-RPC method %s() returned successfullyz+XML-RPC method %s() returned fault: [%d] %sztext/xmlzContent-TypezContent-LengthzHHandling XML-RPC request with data %r raised an unexpected exception: %si�)r�ZoptionsrCr�encoder�rEZtracer�r1rr=r/r2rXr|r}rBrRr6rr>rLrM�doner@rAZcritical)r3r�r8rCrurqrFrGZpushproducerrHrIr+r+r,�continue_requestvsX




"
z*supervisor_xmlrpc_handler.continue_requestcCst|j||�S)N)r{r�)r3rqrur+r+r,r��szsupervisor_xmlrpc_handler.callN)r#r$r%r�ZIDENTr�r4r�r�r�r�r+r+r+r,r�Hs$Gr�cCs�|jd�}t|�dkr ttj��|\}}|jd�r<ttj��t||d�}|dkrZttj��t||d�}t|tj	�s|ttj��y||�St
k
r�ttj��YnXdS)N�.rr_)�splitrLr1rr&rbr.rXr|�
MethodType�	TypeErrorr')�obrqruZdotted_partsrer�rfr+r+r,r{�s 





r{c@s0eZdZdZdZd
dd�Zdd�Zddd	�ZdS)�SupervisorTransportz�
    Provides a Transport for xmlrpclib that uses
    httplib.HTTPConnection in order to support persistent
    connections.  Also support basic auth and UNIX domain socket
    servers.
    Nc
Cs�tjj|�||_||_d|_||_|jd�r�tj	|�\}}tj
|�\}}tj|�\}}|dkrfd}nt|�}||fdd�}	|	|_
n*|jd�r�|fdd�}	|	|_
ntd|��dS)	NFzhttp://rcSstj||�S)N)r
�HTTPConnection)�host�portr+r+r,�get_connection�sz4SupervisorTransport.__init__.<locals>.get_connectionzunix://cSstd�}|dd�|_|S)NZ	localhost�)�UnixStreamHTTPConnection�
socketfile)�	serverurlZconnr+r+r,r��sz!Unknown protocol for serverurl %s)r�	Transportr4�username�password�verboser�rbrZ	splittypeZ	splithostZ	splitportr��_get_connection�
ValueError)
r3r�r�r��typer�r�r�r�r�r+r+r,r4�s$

zSupervisorTransport.__init__cCs|jr|jj�d|_dS)N)rSrK)r3r+r+r,rK�s
zSupervisorTransport.closercCs&t|�}|js�|j�|_|jddd�|_|jdk	r�|jdk	r�d|j|jf}ttt|���}|j	dd�}|j	dd�}d||jd<t
t|��|jd<|jjd	|||j�|jj
�}|jd
kr�|jj�d|_tj|||j|jd��|j�}t|�}|jdd�}|j�\}	}
|	j|�|	j�|
j�S)
Nztext/xml)z
User-AgentzContent-TypeZAcceptz%s:%s�
r<zBasic %sZ
AuthorizationzContent-LengthZPOST��r�r�)rrSr�Z
user_agentZheadersr�r�rr�replacercrLr8r?ZstatusrKrZ
ProtocolError�reason�readr�Z	getparserZfeed)r3r�ZhandlerZrequest_bodyr�Z	unencodedZencoded�rr��p�ur+r+r,r8s:






zSupervisorTransport.request)NNN)r)r#r$r%rTrSr4rKr8r+r+r+r,r��s

r�c@seZdZdd�ZdS)r�cCs$tjtjtj�|_|jj|j�dS)N)�socketZAF_UNIXZSOCK_STREAMZsock�connectr�)r3r+r+r,r�-sz UnixStreamHTTPConnection.connectN)r#r$r%r�r+r+r+r,r�,sr�c
Cs8g}d}d}d}d}}g}x�|jd�D]�}|j�}|jd�r�|j||||dj|�f�|jdd�}	t|	�dkr~d}d}g}njt|	�dkr�|	d}d}g}nLt|	�dkr�|	d}|	d}g}n*t|	�d	kr�|	d}|	d}|	dj�g}|	ddd�}|}n|�r|j|�|d7}q(W|j||||dj|�f�|S)
z6 Parse documentation strings into JavaDoc-like tokens Nrr��@rrr<rr)r��striprbrp�joinrL�lstrip)
ZcommentZtagsr�Zdatatyper^Z
tag_lineno�linenoZtag_text�line�partsr+r+r,ro2sD

ro).r�rUr�rvr�r@r|Zxml.etree.ElementTreerZsupervisor.compatrrrrrrr	r
rZsupervisor.medusa.http_serverrZ supervisor.medusa.xmlrpc_handlerr
Zsupervisor.medusarZsupervisor.httprrr0�	Exceptionr1r6r>r[r�rzr�r�r�r�r{r�r�r�r�ror+r+r+r,�<module>sH
R
xS