<!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>
a
    XC?h@                  	   @   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y   dZY n0 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.y   e,d) e/d  Y n0 W d   n1 s0    Y  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_namesattrsi r   2/opt/alt/python39/lib64/python3.9/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 u rt | j|dS |d u 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_multicallr3   r   r   r   register_multicall_functions   s    z3SimpleXMLRPCDispatcher.register_multicall_functionsc                 C   s   zPt || jd\}}|d ur(|||}n| ||}|f}t|d| j| jd}W n ty } zt|| j| jd}W Y d }~nbd }~0    t \}}	}
z0ttdd||	f | j| jd}W d  } }	}
nd  } }	}
0 Y n0 |	| 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   s,    
"z*SimpleXMLRPCDispatcher._marshaled_dispatchc                 C   s^   t | j }| jd urVt| jdr8|t | j O }nt| jdsV|t t| jO }t|S )N_listMethodsr;   )setr"   keysr#   hasattrrJ   r   sorted)r(   methodsr   r   r   r0     s    
z)SimpleXMLRPCDispatcher.system_listMethodsc                 C   s   dS )Nzsignatures not supportedr   )r(   method_namer   r   r   r1   /  s    z-SimpleXMLRPCDispatcher.system_methodSignaturec                 C   s   d }|| j v r| j | }nV| jd urpt| jdr<| j|S t| jdspzt| j|| j}W n tyn   Y n0 |d u r|dS t|S d S )N_methodHelpr;    )	r"   r#   rM   rQ   r   r   r   pydocgetdoc)r(   rP   rC   r   r   r   r2   <  s$    

z(SimpleXMLRPCDispatcher.system_methodHelpc           
      C   s   g }|D ]}|d }|d }z| | ||g W q tyl } z | |j|jd W Y d }~qd }~0    t \}}}	z(| dd||f d W d  } }}	nd  } }}	0 Y q0 q|S )NZ
methodNamerB   )	faultCodefaultStringr7   r8   )appendr;   r   rU   rV   r<   r=   )
r(   Z	call_listresultsZcallrP   rB   rE   rF   rG   rH   r   r   r   r5   [  s,    

$z'SimpleXMLRPCDispatcher.system_multicallc                 C   s   z| j | }W n ty    Y n0 |d ur2|| S td| | jd urt| jdrb| j||S zt| j|| j}W n ty   Y n0 |d ur|| S td| d S )Nzmethod "%s" is not supportedr;   )	r"   KeyError	Exceptionr#   rM   r;   r   r   r   )r(   rC   rB   funcr   r   r   r;     s*    
z SimpleXMLRPCDispatcher._dispatch)FNF)F)NN)NN)r.   
__module____qualname__r)   r+   r-   r4   r6   rI   r0   r1   r2   r5   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-EncodingrR   ,   g      ?r7   )headersgetr   	aepatternmatchgroupfloat)r(   rZaeerf   vr   r   r   accept_encodings  s    
z+SimpleXMLRPCRequestHandler.accept_encodingsc                 C   s   | j r| j| j v S dS d S )NT)	rpc_pathsrA   r3   r   r   r   is_rpc_path_valid  s    z,SimpleXMLRPCRequestHandler.is_rpc_path_validc              
   C   s  |   s|   d S zd}t| jd }g }|rht||}| j|}|sLqh|| |t|d 8 }q,d	|}| 
|}|d u rW d S | j|t| dd | j}W n ty8 } zx| d t| jdr| jjr| dt| t }	t|	d	d
d	}	| d|	 | dd |   W Y d }~nd }~0 0 | d | dd | jd urt|| jkr|  dd}
|
rzt|}| dd W n ty   Y n0 | 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) rn   
report_404intrc   minZrfilereadrW   lenjoindecode_request_contentserverrI   r   rA   rZ   send_responserM   rp   send_headerstr	traceback
format_excr>   end_headersencode_thresholdrl   rd   r   NotImplementedErrorwfilewrite)r(   Zmax_chunk_sizeZsize_remainingLZ
chunk_sizechunkr?   rD   rj   Ztraceqr   r   r   do_POST  s\    





z"SimpleXMLRPCRequestHandler.do_POSTc                 C   s   | j dd }|dkr|S |dkrrz
t|W S  tyR   | dd|  Y q tyn   | dd Y q0 n| dd|  | dd	 |   d S )
Nzcontent-encodingZidentityrw   i  zencoding %r not supported  zerror decoding gzip contentrs   rt   )	rc   rd   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 pagerv   z
text/plainrs   )r   r   r   r|   r   r   r   r(   rD   r   r   r   rx   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]   rm   r   ZwbufsizeZdisable_nagle_algorithmrecompileVERBOSE
IGNORECASEre   rl   rn   r   r~   rx   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_addressrp   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(   rA   
dispatcherr   r   r   add_dispatcherr  s    
z$MultiPathXMLRPCServer.add_dispatcherc                 C   s
   | j | S r*   r   )r(   rA   r   r   r   get_dispatcherv  s    z$MultiPathXMLRPCServer.get_dispatcherc                 C   s   z| j | |||}W nf   t d d \}}z:ttdd||f | j| jd}|| jd}W d  }}n
d  }}0 Y n0 |S )N   r7   r8   r9   r:   )	r   rI   r<   r=   r   r   r%   r$   r>   )r(   r?   r@   rA   rD   rF   rG   r   r   r   rI   y  s    
z)MultiPathXMLRPCServer._marshaled_dispatch)NN)r.   r\   r]   r^   r)   r   r   rI   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)rI   printr|   r<   stdoutflushbufferr   )r(   request_textrD   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   rD   r   r   r   
handle_get  s     

z"CGIXMLRPCRequestHandler.handle_getc              	   C   sx   |d u r$t jdd dkr$|   nPztt jdd }W n ttfyT   d}Y n0 |d u rjtj	|}| 
| d S )NZREQUEST_METHODZGETZCONTENT_LENGTHr`   )osenvironrd   r   ry   r   	TypeErrorr<   stdinr{   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|rdt| }|d|||f  n~|rdt| }|d|||f  nV|||d  d	kr|| 	|||| n(|r"|d
|  n|| 	|| |}q||||d   d
|S )Nr   zS\b((http|https|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)https://www.python.org/dev/peps/pep-%04d/r7   (zself.<strong>%s</strong>rR   )escaper   r   searchspanrW   groupsreplacery   Znamelinkr}   )r(   textr   r"   classesrO   rX   herepatternrf   startendallZschemeZrfcZpepZselfdotr,   Zurlr   r   r   markup  s4    

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|||}|od| }d	||f S )
NrR   r   z$<a name="%s"><strong>%s</strong></a>z(...)r   r7   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tuplerS   rT   Zgreyr   	preformat)r(   objectr,   modr"   r   rO   ZclZanchorZnotetitleZargspecZ	docstringZdecldocr   r   r   
docroutine  s(    

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#eeaa77rR   )
itemsr   Zheadingr   r   rN   rW   r   Z
bigsectionr}   )r(   server_nameZpackage_documentationrO   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_titler3   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v r&| j| }n| jd urd d g}t| jdrT| j||d< t| jdrp| j||d< t|}|dkr|}qt| jdszt| j|}W q ty   |}Y q0 q|}n |||< qt	 }|
| j| j|}|t| j|S )N_get_method_argstringr   rQ   r7   )NNr;   )r0   r"   r#   rM   r   rQ   r   r   r   r   r   r   r   Zpagehtmlr   r   )r(   rO   rP   rC   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!   ru   rv   z	text/htmlrs   )rn   rx   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   r3   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   r3   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>  ro   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   rS   r   ZfcntlImportErrorr   r   r   r^   r   r   r   r   ZHTMLDocr   r   r   r   r   r.   r   r   r   r-   powr+   r6   r   Zserve_foreverKeyboardInterruptexitr   r   r   r   <module>k   sf   

   ,EbQ
	

