U e5d��� @sbddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZz ddlZWnek r�dZYnXdd�Zdejdd �Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gdd�de"�Z#Gdd�de#�Z$Gdd�de#�Z%Gdd�de#�Z&e'Z(Z)eddd�Z*e*�+d�d k�rFd!d"�Z,n"e*�+d#�d k�r`d$d"�Z,nd%d"�Z,[*d&d'�Z-Gd(d)�d)�Z.d*d+�Z/d,d-�Z0Gd.d/�d/�Z1d0d1�Z2e.e1fZ3Gd2d3�d3�Z4Gd4d5�d5�Z5Gd6d7�d7�Z6Gd8d9�d9�Z7Gd:d;�d;�Z8GddZdCdD�Z?dEdF�Z@d[dHdI�ZAGdJdK�dKe�rTejBneC�ZDGdLdM�dM�ZEGdNdO�dO�ZFGdPdQ�dQeF�ZGGdRdS�dS�ZHeHZIeJdTk�r^eHdU�ZKzeLeKjM�N��Wn.e#k �r�ZOzeLdVeO�W5dZO[OXYnXe9eK�ZPeP�Q�eP�Rd dW�eP�Sdd �zeP�D]ZTeLeT��qWn.e#k �r\ZOzeLdVeO�W5dZO[OXYnXdS)\�N)�datetime)�Decimal)�expat)�BytesIOcCs$|�dd�}|�dd�}|�dd�S)N�&z&�z>)�replace)�s�r �%/usr/lib64/python3.8/xmlrpc/client.py�escape�s  r z%d.%d�i���i�iD���i����i ���ip���i���iC���iB���i����i����i����c@seZdZejZdS)�ErrorN)�__name__� __module__� __qualname__�object�__str__r r r r r�src@seZdZdd�Zdd�ZdS)� ProtocolErrorcCs&t�|�||_||_||_||_dS�N)r�__init__�url�errcode�errmsg�headers)�selfrrrrr r r r�s  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>)� __class__rrrr�rr r r �__repr__�s��zProtocolError.__repr__N�rrrrrr r r r r�src@s eZdZdS)� ResponseErrorN)rrrr r r r r!�sr!c@seZdZdd�Zdd�ZdS)�FaultcKst�|�||_||_dSr)rr� faultCode� faultString)rr#r$Zextrar r r r�s zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr#r$rr r r r�s�zFault.__repr__Nr r r r r r"�sr"�z%YZ0001cCs |�d�S�N�%Y%m%dT%H:%M:%S��strftime��valuer r r �_iso8601_format sr,z%4YcCs |�d�S)Nz%4Y%m%dT%H:%M:%Sr(r*r r r r,scCs|�d��d�S)Nr'�)r)�zfillr*r r r r,scCsLt|t�rt|�St|ttjf�s<|dkr2t��}t�|�}d|dd�S)Nrz%04d%02d%02dT%02d:%02d:%02d�)� isinstancerr,�tuple�time� struct_time� localtimer*r r r � _strftimes  r5c@sneZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�ZdS)�DateTimercCs t|t�r||_n t|�|_dSr)r0�strr+r5)rr+r r r r(s zDateTime.__init__cCs�t|t�r|j}|j}nzt|t�r2|j}t|�}n`t|t�rH|j}|}nJt|d�rd|��}|��}n.t|d�rv|jj p|t |�}t d|jj |f��||fS)N� timetuplerzCan't compare %s and %s) r0r6r+rr,r7�hasattrr8rr�type� TypeError)r�otherr �oZotyper r r �make_comparable.s*       �� �zDateTime.make_comparablecCs|�|�\}}||kSr�r>�rr<r r=r r r �__lt__CszDateTime.__lt__cCs|�|�\}}||kSrr?r@r r r �__le__GszDateTime.__le__cCs|�|�\}}||kSrr?r@r r r �__gt__KszDateTime.__gt__cCs|�|�\}}||kSrr?r@r r r �__ge__OszDateTime.__ge__cCs|�|�\}}||kSrr?r@r r r �__eq__SszDateTime.__eq__cCst�|jd�Sr&)r2�strptimer+rr r r r8WszDateTime.timetuplecCs|jSrr*rr r r r_szDateTime.__str__cCsd|jj|jt|�fS)Nz<%s %r at %#x>)rrr+�idrr r r rbszDateTime.__repr__cCst|���|_dSr)r7�stripr+�r�datar r r �decodeeszDateTime.decodecCs$|�d�|�|j�|�d�dS�Nzz )�writer+)r�outr r r �encodehs  zDateTime.encodeN)r)rrrrr>rArBrCrDrEr8rrrKrOr r r r r6"s r6cCst�}|�|�|Sr)r6rK�rJr+r r r � _datetimems rQcCs t�|d�Sr&)rrF)rJr r r �_datetime_typessrRc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) �BinaryNcCs>|dkrd}n&t|ttf�s,td|jj��t|�}||_dS)N�z#expected bytes or bytearray, not %s)r0�bytes� bytearrayr;rrrJrIr r r rs�zBinary.__init__cCs t|jd�S)Nzlatin-1)r7rJrr r r r�szBinary.__str__cCst|t�r|j}|j|kSr)r0rSrJ)rr<r r r rE�s z Binary.__eq__cCst�|�|_dSr)�base64� decodebytesrJrIr r r rK�sz Binary.decodecCs4|�d�t�|j�}|�|�d��|�d�dS�Nz �asciiz )rMrW� encodebytesrJrK)rrN�encodedr r r rO�s  z Binary.encode)N)rrrrrrErKrOr r r r rS|s  rScCst�}|�|�|Sr)rSrKrPr r r �_binary�s r]c@s$eZdZdd�Zdd�Zdd�ZdS)� ExpatParsercCsDt�dd�|_}||_|j|_|j|_|j|_ d}|� |d�dSr) rZ ParserCreate�_parser�_target�startZStartElementHandler�endZEndElementHandlerrJZCharacterDataHandler�xml)r�target�parser�encodingr r r r�szExpatParser.__init__cCs|j�|d�dS�Nr)r_�ParserIr r r �feed�szExpatParser.feedcCs8z |j}Wntk rYnX|`|`|�dd�dS)NrTT)r_�AttributeErrorr`rh)rrer r r �close�s  zExpatParser.closeN)rrrrrirkr r r r r^�s r^c@s�eZdZddd�ZiZdd�Zdd�Zd d �Zeeed�<d d �Z e ee <d d�Z e ee <e Z dd�Zeee<efdd�Zeee<dd�Zeee<eee<dd�Zeee<eee<efdd�Zeee<dd�Zeee<dd�Zeee<eee<eed<dS)� MarshallerNFcCsi|_d|_||_||_dSr)�memorJrf� allow_none)rrfrnr r r r�szMarshaller.__init__cCs�g}|j}|j}t|t�r@|d�||j|jd�|�|d�n4|d�|D]}|d�|||�|d�qL|d�d�|�}|S) Nz )r#r$z z z z z �)�append�_Marshaller__dumpr0r"r#r$�join)r�valuesrNrM�dump�v�resultr r r �dumps�s& ��    zMarshaller.dumpscCs�z|jt|�}Wnftk rxt|d�s)rnr;�rr+rMr r r �dump_nil szMarshaller.dump_nilcCs$|d�||rdpd�|d�dS)Nz�1�0z r rr r r � dump_boolszMarshaller.dump_boolcCs<|tks|tkrtd��|d�|tt|���|d�dS)Nzint exceeds XML-RPC limitsz z )�MAXINT�MININT� OverflowErrorr7�intrr r r � dump_longs zMarshaller.dump_longcCs |d�|t|��|d�dS)Nzz )�reprrr r r � dump_double$s zMarshaller.dump_doublecCs |d�|||��|d�dS)Nzz r )rr+rMr r r r � dump_unicode*s zMarshaller.dump_unicodecCs,|d�t�|�}||�d��|d�dSrY)rWr[rK)rr+rMr\r r r � dump_bytes0s zMarshaller.dump_bytescCsZt|�}||jkrtd��d|j|<|j}|d�|D]}|||�q6|d�|j|=dS)Nz"cannot marshal recursive sequencesz z )rGrmr;rq)rr+rM�irtrur r r � dump_array8s   zMarshaller.dump_arraycCs�t|�}||jkrtd��d|j|<|j}|d�|��D]D\}}|d�t|t�s\td��|d||��|||�|d�q:|d�|j|=dS)Nz%cannot marshal recursive dictionariesz z zdictionary key must be stringz%s z z )rGrmr;rq�itemsr0r7)rr+rMr r�rt�krur r r � dump_structFs     zMarshaller.dump_structcCs |d�|t|��|d�dSrL)r5rr r r � dump_datetimeXs zMarshaller.dump_datetimecCs2|jtkr ||_|�|�|`n|�|j|�dSr)r�WRAPPERSrMrOr�rxrr r r � dump_instance^s   zMarshaller.dump_instancery)NF) rrrrrzrwrqr�r:r��boolr�r�Zdump_intr��floatr r�r7r�rUrVr�r1�listr��dictr�rr�r6rSr r r r rl�s:      rlc@sjeZdZdDdd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z iZ dd�Z e e d<dd�Z e e d<dd�Zee d<ee d<ee d<ee d<ee d<ee d<d d!�Zee d"<ee d#<d$d%�Zee d&<d'd(�Zee d)<ee d*<d+d,�Zee d-<d.d/�Zee d0<d1d2�Zee d3<d4d5�Zee d6<d7d8�Zee d9<d:d;�Zee d<<d=d>�Zee d?<d@dA�Zee dB<dCS)E� UnmarshallerFcCsHd|_g|_g|_g|_d|_d|_d|_|jj|_|p:||_||_ dS)NF�utf-8) �_type�_stack�_marks�_data�_value� _methodname� _encodingrp� _use_datetime� _use_bytes)r� use_datetime�use_builtin_typesr r r r~s  zUnmarshaller.__init__cCs:|jdks|jrt��|jdkr0tf|jd��t|j�S)N�faultr)r�r�r!r"r�r1rr r r rk�s  zUnmarshaller.closecCs|jSr)r�rr r r � getmethodname�szUnmarshaller.getmethodnamecCs ||_dSr)r�)rrfZ standaloner r r rc�szUnmarshaller.xmlcCshd|kr|�d�d}|dks&|dkr8|j�t|j��g|_|jrZ||jkrZtd|��|dk|_dS)N�:������array�structzunknown tag %rr+) �splitr�rp�lenr�r�r�rzr!)r�tagZattrsr r r ra�s zUnmarshaller.startcCs|j�|�dSr)r�rp)r�textr r r rJ�szUnmarshaller.datac Csvz|j|}WnTtk rbd|kr,YdSz|j|�d�d}Wntk r\YYdSXYnX||d�|j��S)Nr�r�ro)rzr{r�rrr�)rr�r~r r r rb�szUnmarshaller.endc Csnz|j|}WnTtk rbd|kr,YdSz|j|�d�d}Wntk r\YYdSXYnX|||�S)Nr�r�)rzr{r�)rr�rJr~r r r � end_dispatch�szUnmarshaller.end_dispatchcCs|�d�d|_dSrg)rpr�rIr r r �end_nil�s zUnmarshaller.end_nilZnilcCs:|dkr|�d�n|dkr(|�d�ntd��d|_dS)Nr�Fr�Tzbad boolean valuer)rpr;r�rIr r r � end_boolean�s   zUnmarshaller.end_boolean�booleancCs|�t|��d|_dSrg)rpr�r�rIr r r �end_int�szUnmarshaller.end_intZi1Zi2Zi4Zi8r�Z bigintegercCs|�t|��d|_dSrg)rpr�r�rIr r r � end_double�szUnmarshaller.end_doubleZdoubler�cCs|�t|��d|_dSrg)rprr�rIr r r �end_bigdecimal�szUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr|�|j�}|�|�d|_dSrg)r�rKrpr�rIr r r � end_string�s  zUnmarshaller.end_string�string�namecCs.|j��}|j|d�g|j|d�<d|_dSrg)r��popr�r�)rrJ�markr r r � end_array�s zUnmarshaller.end_arrayr�cCs`|j��}i}|j|d�}tdt|�d�D]}||d|||<q,|g|j|d�<d|_dS)Nrrr%)r�r�r��ranger�r�)rrJr�r�r�r�r r r � end_struct�s zUnmarshaller.end_structr�cCs6t�}|�|�d��|jr"|j}|�|�d|_dS)NrZr)rSrKrOr�rJrpr��rrJr+r r r � end_base64 s  zUnmarshaller.end_base64rWcCs,t�}|�|�|jrt|�}|�|�dSr)r6rKr�rRrpr�r r r � end_dateTimes  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr|�|�dSr)r�r�rIr r r � end_valueszUnmarshaller.end_valuer+cCs d|_dS)N�params�r�rIr r r � end_params"szUnmarshaller.end_paramsr�cCs d|_dS)Nr�r�rIr r r � end_fault&szUnmarshaller.end_faultr�cCs"|jr|�|j�}||_d|_dS)N� methodName)r�rKr�r�rIr r r �end_methodName*s zUnmarshaller.end_methodNamer�N)FF)rrrrrkr�rcrarJrbr�rzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r r�rsX   r�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MultiCallMethodcCs||_||_dSr)�_MultiCallMethod__call_list�_MultiCallMethod__name)rZ call_listr�r r r r7sz_MultiCallMethod.__init__cCst|jd|j|f�S�Nz%s.%s)r�r�r��rr�r r r � __getattr__:sz_MultiCallMethod.__getattr__cGs|j�|j|f�dSr)r�rpr��r�argsr r r �__call__<sz_MultiCallMethod.__call__N�rrrrr�r�r r r r r�4sr�c@seZdZdd�Zdd�ZdS)�MultiCallIteratorcCs ||_dSr)�results)rr�r r r rCszMultiCallIterator.__init__cCsR|j|}t|�ti�kr.t|d|d��n t|�tg�krF|dStd��dS)Nr#r$rz#unexpected type in multicall result)r�r:r"� ValueError)rr��itemr r r � __getitem__Fs  zMultiCallIterator.__getitem__N)rrrrr�r r r r r�?sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) � MultiCallcCs||_g|_dSr)�_MultiCall__server�_MultiCall__call_list)r�serverr r r r`szMultiCall.__init__cCsd|jjt|�fS)Nz <%s at %#x>)rrrGrr r r rdszMultiCall.__repr__cCs t|j|�Sr)r�r�r�r r r r�gszMultiCall.__getattr__cCs6g}|jD]\}}|�||d��q t|jj�|��S)N)r�r�)r�rpr�r��systemZ multicall)rZmarshalled_listr�r�r r r r�jszMultiCall.__call__N)rrrrrr�r�r r r r r�Osr�FcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t�}t|�}n"t||d�}trbt|�}nt |�}||fS)NTF�r�r�) � FastParser�FastUnmarshallerrRrWrXr]rQr"r�r^)r�r�Z mkdatetimeZmkbytesrdrer r r � getparser|s    r�cCs�t|t�rd}n|rt|t�r|s&d}tr4t|�}n t||�}|�|�}|dkr^dt|�}nd}|rx|d|d|df}n|r�|d|d f}n|Sd �|�S) Nr%r�z$ z z z z z z ro)r0r"r1�FastMarshallerrlrwr7rr)r�� methodnameZmethodresponserfrn�mrJZ xmlheaderr r r rw�s8    ��rwcCs2t||d�\}}|�|�|��|��|��fS�Nr�)r�rirkr�)rJr�r��p�ur r r �loads�s  r�c Cs<tst�t�}tjd|dd��}|�|�W5QRX|��S)N�wbr%)�mode�fileobjZ compresslevel)�gzip�NotImplementedErrorr�GzipFilerM�getvalue)rJr~�gzfr r r � gzip_encodes r��@c Cs�tst�tjdt|�d��H}z$|dkr0|��}n|�|d�}Wntk r\td��YnXW5QRX|dkr�t|�|kr�td��|S)N�rb�r�r�rr%z invalid dataz#max gzipped payload length exceeded)r�r�r�r�read�OSErrorr�r�)rJZ max_decoder�Zdecodedr r r � gzip_decodes r�c@seZdZdd�Zdd�ZdS)�GzipDecodedResponsecCs.tst�t|���|_tjj|d|jd�dS)Nr�r�)r�r�rr��ior�r)r�responser r r r:szGzipDecodedResponse.__init__cCs"ztj�|�W5|j��XdSr)r�rkr�r�rr r r rkBszGzipDecodedResponse.closeN)rrrrrkr r r r r�6sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MethodcCs||_||_dSr�� _Method__send� _Method__name)r�sendr�r r r rOsz_Method.__init__cCst|jd|j|f�Sr�)r�r�r�r�r r r r�Rsz_Method.__getattr__cGs|�|j|�Srr�r�r r r r�Tsz_Method.__call__Nr�r r r r r�Lsr�c@s�eZdZdeZdZdZddd�dd�Zdd d �Zdd d �Z d d�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�ZdS) � TransportzPython-xmlrpc/%sTNFr )rcCs&||_||_d|_t|�|_g|_dS�N)NN)r��_use_builtin_types� _connectionr��_headers�_extra_headers)rr�r�rr r r rks  zTransport.__init__c Cs�dD]v}z|�||||�WStjjk r<|r8�Yqtk rx}z |sf|jtjtjtjfkrh�W5d}~XYqXqdS)N)rr%) �single_request�http�clientZRemoteDisconnectedr��errnoZ ECONNRESETZ ECONNABORTEDZEPIPE)r�host�handler� request_body�verboser��er r r �request}s�zTransport.requestcCs�z8|�||||�}|��}|jdkr6||_|�|�WSWn2tk rN�Yntk rj|���YnX|�dd�r�|� �t |||j|j t |� ����dS)N��zcontent-lengthro)� send_requestZ getresponseZstatusr �parse_responser"� Exceptionrk� getheaderr�r�reasonr�Z getheaders)rr r r r Z http_connZrespr r r r�s&   �zTransport.single_requestcCst|j|jd�Sr�)r�r�rrr r r r��s�zTransport.getparsercCsri}t|t�r|\}}tj�|�\}}|rdtj�|�}t�|��d�}d� |� ��}dd|fg}ng}|||fS)Nr�roZ AuthorizationzBasic ) r0r1�urllib�parseZ _splituserZunquote_to_bytesrWr[rKrrr�)rr �x509ZauthZ extra_headersr r r � get_host_info�s   �zTransport.get_host_infocCsL|jr||jdkr|jdS|�|�\}|_}|tj�|�f|_|jdS)Nrr%)rrrrrZHTTPConnection�rr Zchostrr r r �make_connection�s  zTransport.make_connectioncCs |j\}}|rd|_|��dSr)rrk)rr � connectionr r r rk�s zTransport.closecCs�|�|�}|j|j}|r$|�d�|jrJtrJ|jd|dd�|�d�n |�d|�|�d�|�d|jf�|� ||�|� ||�|S)Nr%ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr�)z Content-Typeztext/xmlz User-Agent) rrrZset_debuglevel�accept_gzip_encodingr�Z putrequestrp� user_agent� send_headers� send_content)rr r r �debugrrr r r r�s         zTransport.send_requestcCs|D]\}}|�||�qdSr)� putheader)rrr�key�valr r r rs zTransport.send_headerscCsR|jdk r0|jt|�kr0tr0|�dd�t|�}|�dtt|���|�|�dS)N�Content-Encodingr�zContent-Length)�encode_thresholdr�r�r!r�r7Z endheaders)rrr r r r rs  �� zTransport.send_contentcCs�t|d�r*|�dd�dkr$t|�}q.|}n|}|��\}}|�d�}|sJqj|jr^tdt|��|�|�q:||k rz|� �|� �|� �S)Nrr$ror�izbody:) r9rr�r�r�r �printr�rirk)rr��streamr�r�rJr r r r$s      zTransport.parse_response)FF)F)F)rrr� __version__rrr%rrrr�rrrkrrrrr r r r r�]s �  ! r�cs.eZdZd ddd��fdd� Zdd�Z�ZS) � SafeTransportFr N�r�contextcst�j|||d�||_dS)N�r�r�r)�superrr+)rr�r�rr+�rr r rEs �zSafeTransport.__init__cCst|jr||jdkr|jdSttjd�s2td��|�|�\}|_}|tjj|dfd|ji|p`i��f|_|jdS)Nrr%�HTTPSConnectionz1your version of http.client doesn't support HTTPSr+) rr9rrr�rrr/r+rr r r rNs  � ��� zSafeTransport.make_connection)FF)rrrrr� __classcell__r r r.r r)Bs � r)c@sVeZdZdddd�dd�Zdd�Zd d �Zd d �Zd d�Zdd�Zdd�Z dd�Z dS)� ServerProxyNFr r*c Cs�tj�|�\} }| dkr td��tj�|�\|_|_|js@d|_|dkr|| dkr^t} d| i} nt} i} | f|||d�| ��}||_ |p�d|_ ||_ ||_ dS)N)r�httpszunsupported XML-RPC protocolz/RPC2r2r+r,r�) rrZ _splittyper�Z _splithost�_ServerProxy__host�_ServerProxy__handlerr)r��_ServerProxy__transport�_ServerProxy__encoding�_ServerProxy__verbose�_ServerProxy__allow_none) rZuri� transportrfr rnr�r�rr+r:r Z extra_kwargsr r r r�s, �� zServerProxy.__init__cCs|j��dSr)r5rkrr r r Z__close�szServerProxy.__closecCsPt|||j|jd��|jd�}|jj|j|j||jd�}t |�dkrL|d}|S)N)rfrn�xmlcharrefreplace)r r%r) rwr6r8rOr5rr3r4r7r�)rr�r�rr�r r r Z __request�s ��� zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrr3r4rr r r r�s��zServerProxy.__repr__cCs t|j|�Sr)r��_ServerProxy__requestr�r r r r��szServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|f��dS)Nrkr9zAttribute %r not found)�_ServerProxy__closer5rj)r�attrr r r r��s zServerProxy.__call__cCs|Srr rr r r � __enter__�szServerProxy.__enter__cGs |��dSr)r<r�r r r �__exit__�szServerProxy.__exit__)NNFFFF) rrrrr<r;rr�r�r>r?r r r r r1ms��  r1�__main__zhttp://localhost:8000ZERROR� )FF)NNNF)FF)r�)UrW�sysr2r�decimalrZ http.clientrZ urllib.parserZ xml.parsersrrr�rr�� ImportErrorr � version_infor(r�r�Z PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORrrrr!r"r�r�ZBooleanZ_day0r)r,r5r6rQrRrSr]r�r^rlr�r�r�r�r�r�r�r�rwr�r�r�r�rr�r�r�r)r1ZServerrr�r&Z currentTimeZgetCurrentTimeruZmultiZgetData�pow�addr�r r r r ��s�           K #!(C %  '� K  f+h