Edit File: server.cpython-37.opt-2.pyc
B ����0��c9���������������� ���@���s��d�dl�mZmZmZmZmZ�d�dlmZ�d�dlm Z �d�dl mZ�d�dlZd�dlZ d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZyd�dlZW�n�ek r����dZY�nX�d*dd�Zd d ��ZG�dd��d�ZG�d d��de�ZG�dd��deje�ZG�dd��de�ZG�dd��de�ZG�dd��dej�ZG�dd��d�Z G�dd��de�Z!G�dd��dee �Z"G�dd��dee �Z#e$dk�r d�dl%Z%G�d d!��d!�Z&ed"��~Z'e'�(e)��e'�(d#d$��d%��e'j*e&��dd&��e'�+���e,d'��e,d(��ye'�-���W�n(�e.k �r����e,d)��e�/d���Y�nX�W�dQ�R�X�dS�)+�����)�Fault�dumps�loads�gzip_encode�gzip_decode)�BaseHTTPRequestHandler)�partial)� signatureNTc�������������C���sJ���|r|��d�}n|g}x.|D�]&}|�d�r8td|���qt|�|�}�qW�|�S�)N�.�_z(attempt to access private attribute "%s")�split� startswith�AttributeError�getattr)�obj�attr�allow_dotted_namesZattrs�i��r����2/opt/alt/python37/lib64/python3.7/xmlrpc/server.py�resolve_dotted_attribute|���s���� r���c����������������s�����fdd�t����D��S�)Nc����������������s(���g�|�] }|��d��stt��|��r|�qS�)r���)r ����callabler���)�.0�member)r���r���r���� <listcomp>����s���� z'list_public_methods.<locals>.<listcomp>)�dir)r���r���)r���r����list_public_methods����s����r���c���������������@���sl���e�Zd�Zddd�Zddd�Zddd�Zd d ��Zdd��Zdd d�Zdd��Z dd��Z dd��Zdd��Zdd��Z dS�)�SimpleXMLRPCDispatcherFNc�������������C���s&���i�|�_�d�|�_||�_|pd|�_||�_d�S�)Nzutf-8)�funcs�instance� allow_none�encoding�use_builtin_types)�selfr ���r!���r"���r���r���r����__init__����s ���� zSimpleXMLRPCDispatcher.__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�krt�|�j|d�S�|d�kr$|j}||�j|<�|S�)N)�name)r����register_function�__name__r���)r#���Zfunctionr&���r���r���r���r'�������s���� z(SimpleXMLRPCDispatcher.register_functionc�������������C���s���|�j��|�j|�j|�jd���d�S�)N)zsystem.listMethodszsystem.methodSignaturezsystem.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|�ji��d�S�)Nzsystem.multicall)r���r)����system_multicall)r#���r���r���r����register_multicall_functions����s����z3SimpleXMLRPCDispatcher.register_multicall_functionsc�������������C���s����yPt�||�jd�\}}|d�k r(|||�}n|��||�}|f}t|d|�j|�jd�}W�n��tk r��}�zt||�j|�jd�}W�d�d�}~X�Y�nN���t���\}} } z$ttdd|| f��|�j|�jd�}W�d�d��}�} } X�Y�nX�|� |�jd�S�)N)r"�������)Zmethodresponser ���r!���)r ���r!���z%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����}|�jd�k rVt|�jd�r8|t�|�j����O�}nt|�jd�sV|t�t|�j��O�}t|�S�)N�_listMethodsr2���)�setr����keysr����hasattrrA���r����sorted)r#����methodsr���r���r���r*�����s���� z)SimpleXMLRPCDispatcher.system_listMethodsc�������������C���s���dS�)Nzsignatures not supportedr���)r#����method_namer���r���r���r+���/��s����z-SimpleXMLRPCDispatcher.system_methodSignaturec�������������C���s����d�}||�j�kr|�j�|�}nX|�jd�k rrt|�jd�r<|�j�|�S�t|�jd�sryt|�j||�j�}W�n�tk rp���Y�nX�|d�kr~dS�t�|�S�d�S�)N�_methodHelpr2�����) r���r���rD���rH���r���r���r����pydoc�getdoc)r#���rG���r:���r���r���r���r,���<��s"���� z(SimpleXMLRPCDispatcher.system_methodHelpc������� ������C���s����g�}x�|D�]�}|d�}|d�}y|��|��||�g��W�q �tk rl�}�z|��|j|jd���W�d�d�}~X�Y�q ���t���\}}} z|��dd||f�d���W�d�d��}�}} X�Y�q X�q W�|S�)NZ methodNamer9���)� faultCode�faultStringr0���z%s:%s)�appendr2���r���rL���rM���r3���r4���) r#���Z call_list�resultsZcallrG���r9���r<���r=���r>���r?���r���r���r���r.���[��s$���� z'SimpleXMLRPCDispatcher.system_multicallc�������������C���s����y|�j�|�}W�n�tk r"���Y�nX�|d�k r4||��S�td|���|�jd�k r�t|�jd�rd|�j�||�S�yt|�j||�j�}W�n�tk r����Y�nX�|d�k r�||��S�td|���d�S�)Nzmethod "%s" is not supportedr2���) r����KeyError� Exceptionr���rD���r2���r���r���r���)r#���r:���r9����funcr���r���r���r2�����s(���� z SimpleXMLRPCDispatcher._dispatch)FNF)F)NN)NN)r(���� __module__�__qualname__r$���r%���r'���r-���r/���r@���r*���r+���r,���r.���r2���r���r���r���r���r�������s��� � $ ) $r���c���������������@���sb���e�Zd�ZdZdZdZdZe�dej ej B��Zdd��Zdd ��Z d d��Zdd ��Zdd��Zddd�ZdS�)�SimpleXMLRPCRequestHandler)�/z/RPC2ix�����Tz� \s* ([^\s;]+) \s* #content-coding (;\s* q \s*=\s* ([0-9\.]+))? #q c�������������C���sb���i�}|�j��dd�}xJ|�d�D�]<}|�j�|�}|r|�d�}|rHt|�nd}|||�d�<�qW�|S�)NzAccept-EncodingrI����,����g�������?r0���)�headers�getr���� aepattern�match�group�float)r#����rZae�er]����vr���r���r����accept_encodings���s���� z+SimpleXMLRPCRequestHandler.accept_encodingsc�������������C���s���|�j�r|�j|�j�kS�dS�d�S�)NT)� rpc_pathsr8���)r#���r���r���r����is_rpc_path_valid���s����z,SimpleXMLRPCRequestHandler.is_rpc_path_validc���������� ���C���s���|�����s|�����d�S�y�d}t|�jd��}g�}x>|rjt||�}|�j�|�}|sNP�|�|��|t|d��8�}q.W�d� |�}|�� |�}|d�kr�d�S�|�j�|t |�dd��|�j�}W�n��tk �r8�}�zp|��d��t|�jd��r|�jj�r|��dt|���t���} t| �d d �d �} |��d| ��|��dd ��|�����W�d�d�}~X�Y�n�X�|��d��|��dd��|�jd�k �r�t|�|�jk�r�|�����dd�} | �r�yt|�}|��dd��W�n�tk �r����Y�nX�|��dtt|����|�����|�j�|��d�S�)Ni����zcontent-lengthrW��������r2���i����_send_traceback_headerzX-exception�ASCII�backslashreplacezX-tracebackzContent-length�0�����zContent-typeztext/xml�gzipr���zContent-Encoding) re���� report_404�intrZ����minZrfile�readrN����len�join�decode_request_content�serverr@���r���r8���rQ���� send_responserD���rg����send_header�str� traceback� format_excr5����end_headers�encode_thresholdrc���r[���r����NotImplementedError�wfile�write)r#���Zmax_chunk_sizeZsize_remaining�LZ chunk_size�chunkr6���r;���ra���Ztrace�qr���r���r����do_POST���sX���� z"SimpleXMLRPCRequestHandler.do_POSTc�������������C���s����|�j��dd����}|dkr|S�|dkrtyt|�S��tk rR���|��dd|���Y�q��tk rp���|��dd��Y�q�X�n|��dd|���|��dd ��|�����d�S�) Nzcontent-encoding�identityrl���i���zencoding %r not supportedi���zerror decoding gzip contentzContent-lengthrj���) rZ���r[����lowerr���r|���ru���� ValueErrorrv���rz���)r#���r6���r!���r���r���r���rs���$��s����z1SimpleXMLRPCRequestHandler.decode_request_contentc�������������C���sF���|���d��d}|��dd��|��dtt|����|�����|�j�|��d�S�)Ni���s���No such pagezContent-typez text/plainzContent-length)ru���rv���rw���rq���rz���r}���r~���)r#���r;���r���r���r���rm���5��s���� z%SimpleXMLRPCRequestHandler.report_404�-c�������������C���s���|�j�jrt�|�||��d�S�)N)rt����logRequestsr����log_request)r#����code�sizer���r���r���r����>��s����z&SimpleXMLRPCRequestHandler.log_requestN)r����r����)r(���rS���rT���rd���r{���ZwbufsizeZdisable_nagle_algorithm�re�compile�VERBOSE� IGNORECASEr\���rc���re���r����rs���rm���r����r���r���r���r���rU������s��� G rU���c���������������@���s*���e�Zd�ZdZdZedddddfdd�ZdS�)�SimpleXMLRPCServerTFNc�������������C���s,���||�_�t�|�|||��tj�|�|||��d�S�)N)r����r���r$����socketserver� TCPServer)r#����addr�requestHandlerr����r ���r!����bind_and_activater"���r���r���r���r$���W��s����zSimpleXMLRPCServer.__init__)r(���rS���rT���Zallow_reuse_addressrg���rU���r$���r���r���r���r���r����D��s ���r����c���������������@���s<���e�Zd�Zedddddfdd�Zdd��Zdd ��Zdd d�ZdS�) �MultiPathXMLRPCServerTFNc���������� ���C���s2���t��|�|||||||��i�|�_||�_|p*d|�_d�S�)Nzutf-8)r����r$����dispatchersr ���r!���)r#���r����r����r����r ���r!���r����r"���r���r���r���r$���h��s ���� zMultiPathXMLRPCServer.__init__c�������������C���s���||�j�|<�|S�)N)r����)r#���r8���Z dispatcherr���r���r����add_dispatcherr��s���� z$MultiPathXMLRPCServer.add_dispatcherc�������������C���s ���|�j�|�S�)N)r����)r#���r8���r���r���r����get_dispatcherv��s����z$MultiPathXMLRPCServer.get_dispatcherc�������������C���s|���y|�j�|��|||�}W�n^���t���d�d��\}}z2ttdd||f��|�j|�jd�}|�|�jd�}W�d�d��}}X�Y�nX�|S�)N����r0���z%s:%s)r!���r ���r1���) r����r@���r3���r4���r���r���r!���r ���r5���)r#���r6���r7���r8���r;���r=���r>���r���r���r���r@���y��s���� z)MultiPathXMLRPCServer._marshaled_dispatch)NN)r(���rS���rT���rU���r$���r����r����r@���r���r���r���r���r����`��s���r����c���������������@���s0���e�Zd�Zddd�Zdd��Zdd��Zdd d �ZdS�) �CGIXMLRPCRequestHandlerFNc�������������C���s���t��|�|||��d�S�)N)r���r$���)r#���r ���r!���r"���r���r���r���r$������s����z CGIXMLRPCRequestHandler.__init__c�������������C���sP���|���|�}td��tdt|����t���tj����tjj�|��tjj����d�S�)NzContent-Type: text/xmlzContent-Length: %d)r@����printrq���r3����stdout�flush�bufferr~���)r#����request_textr;���r���r���r���� handle_xmlrpc���s���� z%CGIXMLRPCRequestHandler.handle_xmlrpcc�������������C���s����d}t�j|�\}}tjj|||d��}|�d�}td||f���tdtjj���tdt|����t���t j ����t j j� |��t j j����d�S�)Ni���)r�����message�explainzutf-8z Status: %d %szContent-Type: %szContent-Length: %d)r���Z responses�httprt���ZDEFAULT_ERROR_MESSAGEr5���r����ZDEFAULT_ERROR_CONTENT_TYPErq���r3���r����r����r����r~���)r#���r����r����r����r;���r���r���r���� handle_get���s���� z"CGIXMLRPCRequestHandler.handle_getc���������� ���C���sz���|d�kr$t�j�dd��dkr$|�����nRytt�j�dd���}W�n�ttfk rV���d}Y�nX�|d�krltj� |�}|�� |��d�S�)NZREQUEST_METHODZGETZCONTENT_LENGTHrW���)�os�environr[���r����rn���r����� TypeErrorr3����stdinrp���r����)r#���r�����lengthr���r���r����handle_request���s���� z&CGIXMLRPCRequestHandler.handle_request)FNF)N)r(���rS���rT���r$���r����r����r����r���r���r���r���r�������s��� r����c���������������@���s:���e�Zd�Zdi�i�i�fdd�Zdi�i�i�dfdd�Zdd��ZdS�)� ServerHTMLDocNc�������������C���s^��|p|�j�}g�}d}t�d�}�x|�||�} | s2P�| ���\} }|�|||| �����| ���\}} }}}}| r�||��dd�}|�d||f���n�|r�dt|��}|�d|||�f���n~|r�dt|��}|�d|||�f���nV|||d���d k�r|�|�� ||||���n(|�r$|�d |���n|�|�� ||���|}q W�|�|||d������d� |�S�)Nr���zM\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\b�"z"z<a href="%s">%s</a>z'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r0����(zself.<strong>%s</strong>rI���)�escaper����r�����search�spanrN����groups�replacern���Znamelinkrr���)r#����textr����r����classesrF���rO����here�patternr]����start�end�allZschemeZrfcZpepZselfdotr&���Zurlr���r���r����markup���s8���� �zServerHTMLDoc.markupc�������������C���s����|r |j�pdd�|�}d} d|��|�|��|�f�} t|�rHtt|��}nd}t|t�rp|d�p`|}|d�pld}n t�|�}| |�| o�|�� d| ���} |�� ||�j|||�}|o�d|�}d | |f�S�) NrI���r����z$<a name="%s"><strong>%s</strong></a>z(...)r���r0���z'<font face="helvetica, arial">%s</font>z<dd><tt>%s</tt></dd>z<dl><dt>%s</dt>%s</dl> )r(���r����r���rw���r ���� isinstance�tuplerJ���rK���Zgreyr����� preformat)r#����objectr&����modr���r����rF���ZclZanchorZnote�titleZargspecZ docstringZdecl�docr���r���r���� docroutine���s"���� zServerHTMLDoc.docroutinec���������� ���C���s����i�}x,|����D�] \}}d|�||<�||�||<�qW�|��|�}d|�}|��|dd�}|��||�j|�} | old| �} |d| ��}g�} t|�����}x&|D�]\}}| �|�j|||d���q�W�||��ddd d � | ���}|S�)Nz#-z)<big><big><strong>%s</strong></big></big>z#ffffffz#7799eez<tt>%s</tt>z <p>%s</p> )r���ZMethodsz#eeaa77rI���) �itemsr�����headingr����r����rE���rN���r����Z bigsectionrr���)r#����server_nameZpackage_documentationrF���Zfdict�key�value�head�resultr�����contentsZmethod_itemsr���r���r���� docserver��s"���� zServerHTMLDoc.docserver)r(���rS���rT���r����r����r����r���r���r���r���r�������s���)r����c���������������@���s4���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��ZdS�)�XMLRPCDocGeneratorc�������������C���s���d|�_�d|�_d|�_d�S�)NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)r�����server_documentation�server_title)r#���r���r���r���r$���:��s����zXMLRPCDocGenerator.__init__c�������������C���s ���||�_�d�S�)N)r����)r#���r����r���r���r����set_server_titleB��s����z#XMLRPCDocGenerator.set_server_titlec�������������C���s ���||�_�d�S�)N)r����)r#���r����r���r���r����set_server_nameG��s����z"XMLRPCDocGenerator.set_server_namec�������������C���s ���||�_�d�S�)N)r����)r#���r����r���r���r����set_server_documentationL��s����z+XMLRPCDocGenerator.set_server_documentationc���������� ���C���s����i�}x�|�����D�]�}||�jkr(|�j|�}n�|�jd�k r�d�d�g}t|�jd�rV|�j�|�|d<�t|�jd�rr|�j�|�|d<�t|�}|dkr�|}q�t|�jd�s�yt|�j|�}W�q��tk r����|}Y�q�X�q�|}n�|||<�qW�t ��}|� |�j|�j|�}|� t�|�j�|�S�)N�_get_method_argstringr���rH���r0���)NNr2���)r*���r���r���rD���r����rH���r����r���r���r����r����r����r����Zpage�htmlr����r����)r#���rF���rG���r:���Zmethod_infoZ documenterZ documentationr���r���r����generate_html_documentationQ��s8���� z.XMLRPCDocGenerator.generate_html_documentationN)r(���rS���rT���r$���r����r����r����r����r���r���r���r���r����3��s ���r����c���������������@���s���e�Zd�Zdd��ZdS�)�DocXMLRPCRequestHandlerc�������������C���sf���|�����s|�����d�S�|�j����d�}|��d��|��dd��|��dtt|����|�� ���|�j �|��d�S�)Nzutf-8rk���zContent-typez text/htmlzContent-length)re���rm���rt���r����r5���ru���rv���rw���rq���rz���r}���r~���)r#���r;���r���r���r����do_GET���s���� zDocXMLRPCRequestHandler.do_GETN)r(���rS���rT���r����r���r���r���r���r�������s��� r����c���������������@���s"���e�Zd�Zedddddfdd�ZdS�)�DocXMLRPCServerTFNc���������� ���C���s&���t��|�|||||||��t�|���d�S�)N)r����r$���r����)r#���r����r����r����r ���r!���r����r"���r���r���r���r$������s����zDocXMLRPCServer.__init__)r(���rS���rT���r����r$���r���r���r���r���r�������s���r����c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)�DocCGIXMLRPCRequestHandlerc�������������C���sT���|������d�}td��tdt|����t���tj����tjj�|��tjj����d�S�)Nzutf-8zContent-Type: text/htmlzContent-Length: %d) r����r5���r����rq���r3���r����r����r����r~���)r#���r;���r���r���r���r�������s���� z%DocCGIXMLRPCRequestHandler.handle_getc�������������C���s���t��|���t�|���d�S�)N)r����r$���r����)r#���r���r���r���r$������s���� z#DocCGIXMLRPCRequestHandler.__init__N)r(���rS���rT���r����r$���r���r���r���r���r�������s���r�����__main__c���������������@���s"���e�Zd�Zdd��ZG�dd��d�ZdS�)�ExampleServicec�������������C���s���dS�)NZ42r���)r#���r���r���r����getData���s����zExampleService.getDatac���������������@���s���e�Zd�Zedd���ZdS�)zExampleService.currentTimec���������������C���s ���t�j����S�)N)�datetimeZnowr���r���r���r����getCurrentTime���s����z)ExampleService.currentTime.getCurrentTimeN)r(���rS���rT����staticmethodr����r���r���r���r����currentTime���s���r����N)r(���rS���rT���r����r����r���r���r���r���r�������s���r����)Z localhosti@��c�������������C���s���|�|�S�)Nr���)�x�yr���r���r����<lambda>���rf���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���Zhttp.serverr���� functoolsr����inspectr ���r����r����r����r3���r����r����rJ���rx���Zfcntl�ImportErrorr���r���r���rU���r����r����r����r����ZHTMLDocr����r����r����r����r����r(���r����r����rt���r'����powr%���r/���r����Z serve_forever�KeyboardInterrupt�exitr���r���r���r����<module>k���s`��� ���,EbQ