
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a9�  ã                	   @   s  d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ 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Zd dlZzd dlZW n ek
r¤   dZY nX d*dd„Zd	d
„ ZG dd„ dƒZG dd„ deƒZG dd„ dejeƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ dƒZ G dd„ deƒZ!G dd„ dee ƒZ"G dd„ dee ƒZ#e$dk�r
d dl%Z%G d d!„ d!ƒZ&ed"ƒ�~Z'e' (e)¡ e' (d#d$„ d%¡ e'j*e&ƒ dd&� e' +¡  e,d'ƒ e,d(ƒ ze' -¡  W n( e.k
�rþ   e,d)ƒ e /d ¡ Y nX W 5 Q R X dS )+é    )ÚFaultÚdumpsÚloadsÚgzip_encodeÚgzip_decode)ÚBaseHTTPRequestHandler)Úpartial)Ú	signatureNTc                 C   sF   |r|  d¡}n|g}|D ]&}| d¡r6td| ƒ‚qt| |ƒ} q| S )NÚ.Ú_z(attempt to access private attribute "%s")ÚsplitÚ
startswithÚAttributeErrorÚgetattr)ÚobjÚattrÚallow_dotted_namesZattrsÚi© r   ú2/opt/alt/python38/lib64/python3.8/xmlrpc/server.pyÚresolve_dotted_attribute|   s    

ÿr   c                    s   ‡ fdd„t ˆ ƒD ƒS )Nc                    s(   g | ] }|  d ¡sttˆ |ƒƒr|‘qS )r   )r   Úcallabler   )Ú.0Úmember©r   r   r   Ú
<listcomp>˜   s    
þz'list_public_methods.<locals>.<listcomp>)Údirr   r   r   r   Úlist_public_methods”   s    r   c                   @   sl   e Zd Zddd„Zddd„Zddd„Zd	d
„ Zdd„ Zddd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚSimpleXMLRPCDispatcherFNc                 C   s&   i | _ d | _|| _|pd| _|| _d S ©Núutf-8)ÚfuncsÚinstanceÚ
allow_noneÚencodingÚuse_builtin_types©Úselfr#   r$   r%   r   r   r   Ú__init__¥   s
    
zSimpleXMLRPCDispatcher.__init__c                 C   s   || _ || _d S ©N)r"   r   )r'   r"   r   r   r   r   Úregister_instance­   s    !z(SimpleXMLRPCDispatcher.register_instancec                 C   s2   |d krt | j|d�S |d kr$|j}|| j|< |S )N)Úname)r   Úregister_functionÚ__name__r!   )r'   Zfunctionr+   r   r   r   r,   Ñ   s    
z(SimpleXMLRPCDispatcher.register_functionc                 C   s   | j  | j| j| jdœ¡ d S )N)zsystem.listMethodszsystem.methodSignaturezsystem.methodHelp)r!   ÚupdateÚsystem_listMethodsÚsystem_methodSignatureÚsystem_methodHelp©r'   r   r   r   Ú register_introspection_functionsá   s    
þz7SimpleXMLRPCDispatcher.register_introspection_functionsc                 C   s   | j  d| ji¡ d S )Nzsystem.multicall)r!   r.   Úsystem_multicallr2   r   r   r   Úregister_multicall_functionsì   s    z3SimpleXMLRPCDispatcher.register_multicall_functionsc                 C   sà   zPt || jd�\}}|d k	r(|||ƒ}n|  ||¡}|f}t|d| j| jd�}W n€ tk
r„ } zt|| j| jd�}W 5 d }~X Y nN   t ¡ \}}	}
z$ttdd||	f ƒ| j| jd�}W 5 d  } }	}
X Y nX | 	| jd¡S )N)r%   é   )Zmethodresponser#   r$   )r#   r$   ú%s:%s©r$   r#   Úxmlcharrefreplace)
r   r%   Ú	_dispatchr   r#   r$   r   ÚsysÚexc_infoÚencode)r'   ÚdataÚdispatch_methodÚpathÚparamsÚmethodÚresponseÚfaultÚexc_typeÚ	exc_valueÚexc_tbr   r   r   Ú_marshaled_dispatchô   s0     ÿ
ÿ þ
z*SimpleXMLRPCDispatcher._marshaled_dispatchc                 C   s^   t | j ¡ ƒ}| jd k	rVt| jdƒr8|t | j ¡ ƒO }nt| jdƒsV|t t| jƒƒO }t|ƒS )NÚ_listMethodsr:   )Úsetr!   Úkeysr"   ÚhasattrrI   r   Úsorted)r'   Úmethodsr   r   r   r/     s    
z)SimpleXMLRPCDispatcher.system_listMethodsc                 C   s   dS )Nzsignatures not supportedr   )r'   Úmethod_namer   r   r   r0   /  s    z-SimpleXMLRPCDispatcher.system_methodSignaturec                 C   sŒ   d }|| j kr| j | }nX| jd k	rrt| jdƒr<| j |¡S t| jdƒsrzt| j|| jƒ}W n tk
rp   Y nX |d kr~dS t |¡S d S )NÚ_methodHelpr:   Ú )	r!   r"   rL   rP   r   r   r   ÚpydocÚgetdoc)r'   rO   rB   r   r   r   r1   <  s$    

ýz(SimpleXMLRPCDispatcher.system_methodHelpc           
      C   s¶   g }|D ]¨}|d }|d }z|  |  ||¡g¡ W q tk
rj } z|  |j|jdœ¡ W 5 d }~X Y q   t ¡ \}}}	z|  dd||f dœ¡ W 5 d  } }}	X Y qX q|S )NZ
methodNamerA   )Ú	faultCodeÚfaultStringr6   r7   )Úappendr:   r   rT   rU   r;   r<   )
r'   Z	call_listÚresultsZcallrO   rA   rD   rE   rF   rG   r   r   r   r4   [  s,    
ÿÿ
ÿÿz'SimpleXMLRPCDispatcher.system_multicallc                 C   s®   z| j | }W n tk
r"   Y nX |d k	r4||Ž S td| ƒ‚| jd k	ržt| jdƒrd| j ||¡S zt| j|| jƒ}W n tk
rŒ   Y nX |d k	rž||Ž S td| ƒ‚d S )Nzmethod "%s" is not supportedr:   )	r!   ÚKeyErrorÚ	Exceptionr"   rL   r:   r   r   r   )r'   rB   rA   Úfuncr   r   r   r:     s*    
ýz SimpleXMLRPCDispatcher._dispatch)FNF)F)NN)NN)r-   Ú
__module__Ú__qualname__r(   r*   r,   r3   r5   rH   r/   r0   r1   r4   r:   r   r   r   r   r   œ   s   	  ÿ

$

)$r   c                   @   sb   e Zd ZdZdZdZdZe dej	ej
B ¡Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zddd„ZdS )ÚSimpleXMLRPCRequestHandler)ú/z/RPC2ix  éÿÿÿÿTz¢
                            \s* ([^\s;]+) \s*            #content-coding
                            (;\s* q \s*=\s* ([0-9\.]+))? #q
                            c                 C   s^   i }| j  dd¡}| d¡D ]<}| j |¡}|r| d¡}|rFt|ƒnd}||| d¡< q|S )NzAccept-EncodingrQ   ú,é   g      ð?r6   )ÚheadersÚgetr   Ú	aepatternÚmatchÚgroupÚfloat)r'   ÚrZaeÚere   Úvr   r   r   Úaccept_encodingsË  s    
z+SimpleXMLRPCRequestHandler.accept_encodingsc                 C   s   | j r| j| j kS dS d S )NT)Ú	rpc_pathsr@   r2   r   r   r   Úis_rpc_path_validÖ  s    z,SimpleXMLRPCRequestHandler.is_rpc_path_validc              
   C   sÜ  |   ¡ s|  ¡  d S z’d}t| jd ƒ}g }|rht||ƒ}| j |¡}|sLqh| |¡ |t|d ƒ8 }q,d 	|¡}|  
|¡}|d krŠW d S | j |t| dd ƒ| j¡}W n� tk
�r6 } zp|  d¡ t| jdƒ�r| jj�r|  dt|ƒ¡ t ¡ }	t|	 d	d
¡d	ƒ}	|  d|	¡ |  dd¡ |  ¡  W 5 d }~X Y n¢X |  d¡ |  dd¡ | jd k	�r°t|ƒ| jk�r°|  ¡  dd¡}
|
�r°zt|ƒ}|  dd¡ W n tk
�r®   Y nX |  dtt|ƒƒ¡ |  ¡  | j |¡ d S )Ni    zcontent-lengthr_   ó    r:   iô  Ú_send_traceback_headerzX-exceptionÚASCIIÚbackslashreplacezX-tracebackúContent-lengthÚ0éÈ   úContent-typeztext/xmlÚgzipr   zContent-Encoding) rm   Ú
report_404Úintrb   ÚminZrfileÚreadrV   ÚlenÚjoinÚdecode_request_contentÚserverrH   r   r@   rY   Úsend_responserL   ro   Úsend_headerÚstrÚ	tracebackÚ
format_excr=   Úend_headersÚencode_thresholdrk   rc   r   ÚNotImplementedErrorÚwfileÚwrite)r'   Zmax_chunk_sizeZsize_remainingÚLZ
chunk_sizeÚchunkr>   rC   ri   ZtraceÚqr   r   r   Údo_POSTÝ  s`    



 
 ÿ
ÿ
z"SimpleXMLRPCRequestHandler.do_POSTc                 C   sž   | j  dd¡ ¡ }|dkr|S |dkrvz
t|ƒW S  tk
rT   |  dd| ¡ Y q† tk
rr   |  dd¡ Y q†X n|  dd| ¡ |  dd	¡ |  ¡  d S )
Nzcontent-encodingZidentityrv   iõ  zencoding %r not supportedé�  zerror decoding gzip contentrr   rs   )	rb   rc   Úlowerr   r†   r   Ú
ValueErrorr€   r„   )r'   r>   r$   r   r   r   r}   $  s    
z1SimpleXMLRPCRequestHandler.decode_request_contentc                 C   sF   |   d¡ d}|  dd¡ |  dtt|ƒƒ¡ |  ¡  | j |¡ d S )Ni”  s   No such pageru   z
text/plainrr   )r   r€   r�   r{   r„   r‡   rˆ   ©r'   rC   r   r   r   rw   5  s    
z%SimpleXMLRPCRequestHandler.report_404ú-c                 C   s   | j jrt | ||¡ d S r)   )r~   ÚlogRequestsr   Úlog_request)r'   ÚcodeÚsizer   r   r   r“   >  s    z&SimpleXMLRPCRequestHandler.log_requestN)r‘   r‘   )r-   r[   r\   rl   r…   ZwbufsizeZdisable_nagle_algorithmÚreÚcompileÚVERBOSEÚ
IGNORECASErd   rk   rm   rŒ   r}   rw   r“   r   r   r   r   r]   ²  s   	
ýG	r]   c                   @   s*   e Zd ZdZdZedddddfdd„ZdS )ÚSimpleXMLRPCServerTFNc                 C   s,   || _ t | |||¡ tj | |||¡ d S r)   )r’   r   r(   ÚsocketserverÚ	TCPServer©r'   ZaddrZrequestHandlerr’   r#   r$   Zbind_and_activater%   r   r   r   r(   W  s    zSimpleXMLRPCServer.__init__)r-   r[   r\   Zallow_reuse_addressro   r]   r(   r   r   r   r   rš   D  s      þrš   c                   @   s<   e Zd Zedddddfdd„Zdd„ Zdd	„ Zdd
d„ZdS )ÚMultiPathXMLRPCServerTFNc              
   C   s2   t  | |||||||¡ i | _|| _|p*d| _d S r   )rš   r(   Údispatchersr#   r$   r�   r   r   r   r(   h  s      ÿzMultiPathXMLRPCServer.__init__c                 C   s   || j |< |S r)   ©rŸ   )r'   r@   Ú
dispatcherr   r   r   Úadd_dispatcherr  s    
z$MultiPathXMLRPCServer.add_dispatcherc                 C   s
   | j | S r)   r    )r'   r@   r   r   r   Úget_dispatcherv  s    z$MultiPathXMLRPCServer.get_dispatcherc                 C   s|   z| j |  |||¡}W n^   t ¡ d d… \}}z2ttdd||f ƒ| j| jd�}| | jd¡}W 5 d  }}X Y nX |S )Né   r6   r7   r8   r9   )	rŸ   rH   r;   r<   r   r   r$   r#   r=   )r'   r>   r?   r@   rC   rE   rF   r   r   r   rH   y  s"    
  ÿ þz)MultiPathXMLRPCServer._marshaled_dispatch)NN)r-   r[   r\   r]   r(   r¢   r£   rH   r   r   r   r   rž   `  s      þ

rž   c                   @   s0   e Zd Zddd„Zdd„ Zdd„ Zdd	d
„ZdS )ÚCGIXMLRPCRequestHandlerFNc                 C   s   t  | |||¡ d S r)   )r   r(   r&   r   r   r   r(   �  s    z CGIXMLRPCRequestHandler.__init__c                 C   sP   |   |¡}tdƒ tdt|ƒ ƒ tƒ  tj ¡  tjj |¡ tjj ¡  d S )NzContent-Type: text/xmlúContent-Length: %d)rH   Úprintr{   r;   ÚstdoutÚflushÚbufferrˆ   )r'   Úrequest_textrC   r   r   r   Úhandle_xmlrpc’  s    

z%CGIXMLRPCRequestHandler.handle_xmlrpcc                 C   sŽ   d}t j| \}}tjj|||dœ }| d¡}td||f ƒ tdtjj ƒ tdt|ƒ ƒ tƒ  t	j
 ¡  t	j
j |¡ t	j
j ¡  d S )Nr�   )r”   ÚmessageÚexplainr    zStatus: %d %szContent-Type: %sr¦   )r   Z	responsesÚhttpr~   ZDEFAULT_ERROR_MESSAGEr=   r§   ZDEFAULT_ERROR_CONTENT_TYPEr{   r;   r¨   r©   rª   rˆ   )r'   r”   r­   r®   rC   r   r   r   Ú
handle_getž  s     ýÿ

z"CGIXMLRPCRequestHandler.handle_getc              	   C   sz   |d kr$t j dd ¡dkr$|  ¡  nRztt j dd ¡ƒ}W n ttfk
rV   d}Y nX |d krltj 	|¡}|  
|¡ d S )NZREQUEST_METHODZGETZCONTENT_LENGTHr_   )ÚosÚenvironrc   r°   rx   r�   Ú	TypeErrorr;   Ústdinrz   r¬   )r'   r«   Zlengthr   r   r   Úhandle_request·  s    ÿ

z&CGIXMLRPCRequestHandler.handle_request)FNF)N)r-   r[   r\   r(   r¬   r°   rµ   r   r   r   r   r¥   Œ  s   
r¥   c                   @   s:   e Zd Zdi i i fdd„Zdi i i dfdd„Zdd„ ZdS )ÚServerHTMLDocNc                 C   sZ  |p| j }g }d}t d¡}| ||¡}	|	s0�q:|	 ¡ \}
}| ||||
… ƒ¡ |	 ¡ \}}}}}}|rŽ||ƒ dd¡}| d||f ¡ n¦|r¶dt|ƒ }| d|||ƒf ¡ n~|rÞdt|ƒ }| d|||ƒf ¡ nV|||d … d	k�r| |  	||||¡¡ n(|�r"| d
| ¡ n| |  	||¡¡ |}q| |||d … ƒ¡ d 
|¡S )Nr   zM\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\bú"z&quot;z<a href="%s">%s</a>z'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r6   ú(zself.<strong>%s</strong>rQ   )Úescaper–   r—   ÚsearchÚspanrV   ÚgroupsÚreplacerx   Znamelinkr|   )r'   Útextr¹   r!   ÚclassesrN   rW   ÚhereÚpatternre   ÚstartÚendÚallZschemeZrfcZpepZselfdotr+   Zurlr   r   r   ÚmarkupÔ  s6    

 zServerHTMLDoc.markupc                 C   sÀ   |r
|j pdd | }d}	d|  |¡|  |¡f }
t|ƒrHtt|ƒƒ}nd}t|tƒrp|d p`|}|d pld}n
t |¡}|
| |	o�|  	d|	 ¡ }|  
|| j|||¡}|o²d| }d	||f S )
NrQ   r‘   z$<a name="%s"><strong>%s</strong></a>z(...)r   r6   z'<font face="helvetica, arial">%s</font>z<dd><tt>%s</tt></dd>z<dl><dt>%s</dt>%s</dl>
)r-   r¹   r   r�   r	   Ú
isinstanceÚtuplerR   rS   ZgreyrÅ   Ú	preformat)r'   Úobjectr+   Úmodr!   r¿   rN   ZclZanchorZnoteÚtitleZargspecZ	docstringZdeclÚdocr   r   r   Ú
docroutineý  s2     ÿ

ÿ    ÿzServerHTMLDoc.docroutinec              	   C   sÈ   i }|  ¡ D ] \}}d| ||< || ||< q|  |¡}d| }|  |dd¡}|  || j|¡}	|	ohd|	 }	|d|	  }g }
t|  ¡ ƒ}|D ]\}}|
 | j|||d�¡ qŠ||  ddd	d
 	|
¡¡ }|S )Nz#-z)<big><big><strong>%s</strong></big></big>z#ffffffz#7799eez<tt>%s</tt>z
<p>%s</p>
)r!   ZMethodsz#eeaa77rQ   )
Úitemsr¹   ZheadingrÅ   rÈ   rM   rV   rÍ   Z
bigsectionr|   )r'   Úserver_nameZpackage_documentationrN   ZfdictÚkeyÚvalueÚheadÚresultrÌ   ÚcontentsZmethod_itemsr   r   r   Ú	docserver  s*    
   ÿzServerHTMLDoc.docserver)r-   r[   r\   rÅ   rÍ   rÕ   r   r   r   r   r¶   Ñ  s   )   ÿ
r¶   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚXMLRPCDocGeneratorc                 C   s   d| _ d| _d| _d S )NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)rÏ   Úserver_documentationÚserver_titler2   r   r   r   r(   :  s    ÿzXMLRPCDocGenerator.__init__c                 C   s
   || _ d S r)   )rØ   )r'   rØ   r   r   r   Úset_server_titleB  s    z#XMLRPCDocGenerator.set_server_titlec                 C   s
   || _ d S r)   )rÏ   )r'   rÏ   r   r   r   Úset_server_nameG  s    z"XMLRPCDocGenerator.set_server_namec                 C   s
   || _ d S r)   )r×   )r'   r×   r   r   r   Úset_server_documentationL  s    z+XMLRPCDocGenerator.set_server_documentationc              	   C   sú   i }|   ¡ D ]À}|| jkr&| j| }nž| jd k	rÄd d g}t| jdƒrT| j |¡|d< t| jdƒrp| j |¡|d< t|ƒ}|dkr†|}qÄt| jdƒs¾zt| j|ƒ}W qÂ tk
rº   |}Y qÂX qÄ|}n |||< qt	ƒ }| 
| j| j|¡}| t | j¡|¡S )NÚ_get_method_argstringr   rP   r6   )NNr:   )r/   r!   r"   rL   rÜ   rP   rÇ   r   r   r¶   rÕ   rÏ   r×   ZpageÚhtmlr¹   rØ   )r'   rN   rO   rB   Zmethod_infoZ
documenterZdocumentationr   r   r   Úgenerate_html_documentationQ  s<    

þ
ýz.XMLRPCDocGenerator.generate_html_documentationN)r-   r[   r\   r(   rÙ   rÚ   rÛ   rÞ   r   r   r   r   rÖ   3  s
   rÖ   c                   @   s   e Zd Zdd„ ZdS )ÚDocXMLRPCRequestHandlerc                 C   sf   |   ¡ s|  ¡  d S | j ¡  d¡}|  d¡ |  dd¡ |  dtt|ƒƒ¡ |  	¡  | j
 |¡ d S )Nr    rt   ru   z	text/htmlrr   )rm   rw   r~   rÞ   r=   r   r€   r�   r{   r„   r‡   rˆ   r�   r   r   r   Údo_GETŽ  s    
zDocXMLRPCRequestHandler.do_GETN)r-   r[   r\   rà   r   r   r   r   rß   „  s   
rß   c                   @   s"   e Zd Zedddddfdd„ZdS )ÚDocXMLRPCServerTFNc              
   C   s&   t  | |||||||¡ t | ¡ d S r)   )rš   r(   rÖ   r�   r   r   r   r(   ¨  s      þzDocXMLRPCServer.__init__)r-   r[   r\   rß   r(   r   r   r   r   rá      s      þrá   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDocCGIXMLRPCRequestHandlerc                 C   sT   |   ¡  d¡}tdƒ tdt|ƒ ƒ tƒ  tj ¡  tjj |¡ tjj ¡  d S )Nr    zContent-Type: text/htmlr¦   )	rÞ   r=   r§   r{   r;   r¨   r©   rª   rˆ   r�   r   r   r   r°   µ  s    
z%DocCGIXMLRPCRequestHandler.handle_getc                 C   s   t  | ¡ t | ¡ d S r)   )r¥   r(   rÖ   r2   r   r   r   r(   Å  s    
z#DocCGIXMLRPCRequestHandler.__init__N)r-   r[   r\   r°   r(   r   r   r   r   râ   °  s   râ   Ú__main__c                   @   s"   e Zd Zdd„ ZG dd„ dƒZdS )ÚExampleServicec                 C   s   dS )NZ42r   r2   r   r   r   ÚgetDataÎ  s    zExampleService.getDatac                   @   s   e Zd Zedd„ ƒZdS )zExampleService.currentTimec                   C   s
   t j  ¡ S r)   )ÚdatetimeZnowr   r   r   r   ÚgetCurrentTimeÒ  s    z)ExampleService.currentTime.getCurrentTimeN)r-   r[   r\   Ústaticmethodrç   r   r   r   r   ÚcurrentTimeÑ  s   ré   N)r-   r[   r\   rå   ré   r   r   r   r   rä   Í  s   rä   )Z	localhosti@  c                 C   s   | | S r)   r   )ÚxÚyr   r   r   Ú<lambda>Ø  rn   rì   Úadd)r   z&Serving XML-RPC on localhost port 8000zKIt is advisable to run this example server within a secure, closed network.z&
Keyboard interrupt received, exiting.)T)0Zxmlrpc.clientr   r   r   r   r   Zhttp.serverr   Ú	functoolsr   Úinspectr	   rÝ   r¯   r›   r;   r±   r–   rR   r‚   ZfcntlÚImportErrorr   r   r   r]   rœ   rš   rž   r¥   ZHTMLDocr¶   rÖ   rß   rá   râ   r-   ræ   rä   r~   r,   Úpowr*   r5   r§   Zserve_foreverÚKeyboardInterruptÚexitr   r   r   r   Ú<module>k   sf   

   ÿ,EbQÿÿ
	

