Edit File: server.cpython-36.opt-2.pyc
3 48eK�������������������@���s���d�dl�mZmZmZmZmZ�d�dlmZ�d�dlZd�dlZ d�dl Z d�dlZd�dlZd�dl Z d�dlZd�dlZd�dlZyd�dlZW�n�ek r����dZY�nX�d)dd�Zdd��ZG�d d ��d �ZG�dd��de�ZG�d d��de je�ZG�dd��de�ZG�dd��de�ZG�dd��dej�ZG�dd��d�ZG�dd��de�ZG�dd��dee�ZG�dd��dee�Z e!dk�r�d�dl"Z"G�dd��d�Z#ed*��~Z$e$j%e&��e$j%d"d#��d$��e$j'e#��dd%��e$j(���e)d&��e)d'��ye$j*���W�n(�e+k �r����e)d(��ej,d���Y�nX�W�dQ�R�X�dS�)+�����)�Fault�dumps�loads�gzip_encode�gzip_decode)�BaseHTTPRequestHandlerNTc�������������C���sJ���|r|j�d�}n|g}x.|D�]&}|jd�r8td|���qt|�|�}�qW�|�S�)N�.�_z(attempt to access private attribute "%s")�split� startswith�AttributeError�getattr)�obj�attr�allow_dotted_namesZattrs�i��r����%/usr/lib64/python3.6/xmlrpc/server.py�resolve_dotted_attribute{���s���� r���c����������������s�����fdd�t����D��S�)Nc����������������s*���g�|�]"}|j�d���rtt��|��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���s���|d�kr|j�}||�j|<�d�S�)N)�__name__r���)r!���Zfunction�namer���r���r����register_function����s����z(SimpleXMLRPCDispatcher.register_functionc�������������C���s���|�j�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�jd|�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|�j||�}|f}t|d|�j|�jd�}W�n��tk r��}�zt||�j|�jd�}W�Y�d�d�}~X�nN���tj��\}} } z$ttdd|| f��|�j|�jd�}W�d�d��}�} } X�Y�nX�|j |�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�|�jj���}|�jd�k rVt|�jd�r8|t�|�jj���O�}nt|�jd�sV|t�t|�j��O�}t|�S�)N�_listMethodsr0���)�setr����keysr����hasattrr?���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<|�jj|�S�t|�jd�sryt|�j||�j�}W�n�tk rp���Y�nX�|d�kr~dS�tj|�S�d�S�)N�_methodHelpr0�����) r���r���rB���rF���r���r���r����pydoc�getdoc)r!���rE���r8���r���r���r���r*���6��s"���� z(SimpleXMLRPCDispatcher.system_methodHelpc������� ������C���s����g�}x�|D�]�}|d�}|d�}y|j�|�j||�g��W�q �tk rl�}�z|j�|j|jd���W�Y�d�d�}~X�q ���tj��\}}} z|j�dd||f�d���W�d�d��}�}} X�Y�q X�q W�|S�)NZ methodNamer7���)� faultCode�faultStringr.���z%s:%s)�appendr0���r���rJ���rK���r1���r2���) r!���Z call_list�resultsZcallrE���r7���r:���r;���r<���r=���r���r���r���r,���U��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|�jj||�S�yt|�j||�j�}W�n�tk r����Y�nX�|d�k r�||��S�td|���d�S�)Nzmethod "%s" is not supportedr0���) r����KeyError� Exceptionr���rB���r0���r���r���r���)r!���r8���r7����funcr���r���r���r0���y��s(���� z SimpleXMLRPCDispatcher._dispatch)FNF)F)N)NN)r$���� __module__�__qualname__r"���r#���r&���r+���r-���r>���r(���r)���r*���r,���r0���r���r���r���r���r�������s��� � $ ) $r���c���������������@���sb���e�Zd�ZdZdZdZdZejdej ej B��Zdd��Zd d ��Z dd��Zd d��Zdd��Zddd�ZdS�)�SimpleXMLRPCRequestHandler�/�/RPC2ix��r.���Tz� \s* ([^\s;]+) \s* #content-coding (;\s* q \s*=\s* ([0-9\.]+))? #q c�������������C���sb���i�}|�j�jdd�}xJ|jd�D�]<}|�jj|�}|r|jd�}|rHt|�nd}|||jd�<�qW�|S�)NzAccept-EncodingrG����,����g�������?r.���)�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_pathsr6���)r!���r���r���r����is_rpc_path_valid���s����z,SimpleXMLRPCRequestHandler.is_rpc_path_validc�������������C���s���|�j���s|�j���d�S�y�d}t|�jd��}g�}x>|rjt||�}|�jj|�}|sNP�|j|��|t|d��8�}q.W�dj |�}|�j |�}|d�kr�d�S�|�jj|t |�dd��|�j�}W�n��tk �r6�}�zp|�jd��t|�jd�o�|�jj�r|�jd t|���tj��} t| jd d�d �} |�jd| ��|�jd d��|�j���W�Y�d�d�}~X�n�X�|�jd��|�jdd��|�jd�k �r�t|�|�jk�r�|�j��jdd�} | �r�yt|�}|�jdd��W�n�tk �r����Y�nX�|�jd tt|����|�j���|�jj|��d�S�)N� ���i���zcontent-lengthr.��������r0���i����_send_traceback_headerzX-exception�ASCII�backslashreplacezX-tracebackzContent-length�0�����zContent-typeztext/xml�gzipr���zContent-Encodingi�(��i�������) rc���� report_404�intrX����minZrfile�readrL����len�join�decode_request_content�serverr>���r ���r6���rO���� send_responserB���rf����send_header�str� traceback� format_excr3����end_headers�encode_thresholdra���rY���r����NotImplementedError�wfile�write)r!���Zmax_chunk_sizeZsize_remaining�LZ chunk_size�chunkr4���r9���r_���Ztrace�qr���r���r����do_POST���sX���� z"SimpleXMLRPCRequestHandler.do_POSTc�������������C���s����|�j�jdd�j��}|dkr|S�|dkrtyt|�S��tk rR���|�jdd|���Y�q��tk rp���|�jdd��Y�q�X�n|�jdd|���|�jdd ��|�j���d�S�) Nzcontent-encodingZidentityrk���i���zencoding %r not supportedi���zerror decoding gzip contentzContent-lengthri���) rX���rY����lowerr���r|���ru���� ValueErrorrv���rz���)r!���r4���r���r���r���r���rs�����s����z1SimpleXMLRPCRequestHandler.decode_request_contentc�������������C���sF���|�j�d��d}|�jdd��|�jdtt|����|�j���|�jj|��d�S�)Ni���s���No such pagezContent-typez text/plainzContent-length)ru���rv���rw���rq���rz���r}���r~���)r!���r9���r���r���r���rm���/��s���� z%SimpleXMLRPCRequestHandler.report_404�-c�������������C���s���|�j�jrtj|�||��d�S�)N)rt����logRequestsr����log_request)r!����code�sizer���r���r���r����8��s����z&SimpleXMLRPCRequestHandler.log_requestN)rT���rU���rl���)r����r����)r$���rQ���rR���rb���r{���ZwbufsizeZdisable_nagle_algorithm�re�compile�VERBOSE� IGNORECASErZ���ra���rc���r����rs���rm���r����r���r���r���r���rS������s��� G rS���c���������������@���s*���e�Zd�ZdZdZedddddfdd�ZdS�)�SimpleXMLRPCServerTFNc�������������C���s,���||�_�tj|�|||��tjj|�|||��d�S�)N)r����r���r"����socketserver� TCPServer)r!����addr�requestHandlerr����r���r����bind_and_activater ���r���r���r���r"���Q��s����zSimpleXMLRPCServer.__init__)r$���rQ���rR���Zallow_reuse_addressrf���rS���r"���r���r���r���r���r����>��s ���r����c���������������@���s<���e�Zd�Zedddddfdd�Zdd��Zdd ��Zdd d�ZdS�) �MultiPathXMLRPCServerTFNc���������� ���C���s2���t�j|�|||||||��i�|�_||�_|p*d|�_d�S�)Nzutf-8)r����r"����dispatchersr���r���)r!���r����r����r����r���r���r����r ���r���r���r���r"���b��s ���� zMultiPathXMLRPCServer.__init__c�������������C���s���||�j�|<�|S�)N)r����)r!���r6���Z dispatcherr���r���r����add_dispatcherl��s���� z$MultiPathXMLRPCServer.add_dispatcherc�������������C���s ���|�j�|�S�)N)r����)r!���r6���r���r���r����get_dispatcherp��s����z$MultiPathXMLRPCServer.get_dispatcherc�������������C���s|���y|�j�|�j|||�}W�n^���tj��d�d��\}}z2ttdd||f��|�j|�jd�}|j|�jd�}W�d�d��}}X�Y�nX�|S�)N����r.���z%s:%s)r���r���r/���) r����r>���r1���r2���r���r���r���r���r3���)r!���r4���r5���r6���r9���r;���r<���r���r���r���r>���s��s���� z)MultiPathXMLRPCServer._marshaled_dispatch)NN)r$���rQ���rR���rS���r"���r����r����r>���r���r���r���r���r����Z��s���r����c���������������@���s0���e�Zd�Zddd�Zdd��Zdd��Zdd d �ZdS�) �CGIXMLRPCRequestHandlerFNc�������������C���s���t�j|�|||��d�S�)N)r���r"���)r!���r���r���r ���r���r���r���r"������s����z CGIXMLRPCRequestHandler.__init__c�������������C���sP���|�j�|�}td��tdt|����t���tjj���tjjj|��tjjj���d�S�)NzContent-Type: text/xmlzContent-Length: %d)r>����printrq���r1����stdout�flush�bufferr~���)r!����request_textr9���r���r���r���� handle_xmlrpc���s���� z%CGIXMLRPCRequestHandler.handle_xmlrpcc�������������C���s����d}t�j|�\}}tjj|||d��}|jd�}td||f���tdtjj���tdt|����t���t j j���t j jj |��t j jj���d�S�)Ni���)r�����message�explainzutf-8z Status: %d %szContent-Type: %szContent-Length: %d)r���Z responses�httprt���ZDEFAULT_ERROR_MESSAGEr3���r����ZDEFAULT_ERROR_CONTENT_TYPErq���r1���r����r����r����r~���)r!���r����r����r����r9���r���r���r���� handle_get���s���� z"CGIXMLRPCRequestHandler.handle_getc�������������C���sz���|d�kr$t�jjdd��dkr$|�j���nRytt�jjdd���}W�n�ttfk rV���d}Y�nX�|d�krltjj |�}|�j |��d�S�)NZREQUEST_METHODZGETZCONTENT_LENGTHr.���rl���)�os�environrY���r����rn���r����� TypeErrorr1����stdinrp���r����)r!���r����Zlengthr���r���r����handle_request���s���� z&CGIXMLRPCRequestHandler.handle_request)FNF)N)r$���rQ���rR���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}tjd�}�x|j||�} | s2P�| j��\} }|j|||| �����| j��\}} }}}}| r�||�jdd�}|jd||f���n�|r�dt|��}|jd|||�f���n~|r�dt|��}|jd|||�f���nV|||d���d k�r|j|�j ||||���n(|�r$|jd |���n|j|�j ||���|}q W�|j|||d������dj |�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/r.����(zself.<strong>%s</strong>rG���)�escaper����r�����search�spanrL����groups�replacern���Znamelinkrr���)r!����textr����r����classesrD���rM����here�patternr[����start�end�all�schemeZrfcZpepZselfdotr%���Zurlr���r���r����markup���s8���� �zServerHTMLDoc.markupc�������������C���s$��|r |j�pdd�|�}d} d|�j|�|�j|�f�} tj|�rrtj|�}tj|jdd���|j|j|j |j |�jd�}n<tj|�r�tj|�}tj|j|j|j|j |j |�jd�}nd}t |t�r�|d�p�|}|d�p�d} n tj|�} | |�| o�|�jd| ���}|�j| |�j|||�}|�od |�}d ||f�S�)NrG���r����z$<a name="%s"><strong>%s</strong></a>r.���)�annotations�formatvaluez(...)r���z'<font face="helvetica, arial">%s</font>z<dd><tt>%s</tt></dd>z<dl><dt>%s</dt>%s</dl> )r$���r�����inspectZismethodZgetfullargspecZ formatargspec�argsZvarargsZvarkwZdefaultsr����r����Z isfunction� isinstance�tuplerH���rI���Zgreyr����� preformat)r!����objectr%����modr���r����rD���ZclZanchorZnote�titler����ZargspecZ docstringZdecl�docr���r���r���� docroutine���s<���� zServerHTMLDoc.docroutinec�������������C���s����i�}x,|j���D�] \}}d|�||<�||�||<�qW�|�j|�}d|�}|�j|dd�}|�j||�j|�} | old| �} |d| ��}g�} t|j����}x&|D�]\}}| j|�j|||d���q�W�||�jddd d j | ���}|S�)Nz#-z)<big><big><strong>%s</strong></big></big>z#ffffffz#7799eez<tt>%s</tt>z <p>%s</p> )r���ZMethodsz#eeaa77rG���) �itemsr����Zheadingr����r����rC���rL���r����Z bigsectionrr���)r!����server_nameZpackage_documentationrD���Zfdict�key�value�head�resultr�����contentsZmethod_itemsr���r���r���� docserver$��s"���� zServerHTMLDoc.docserver)r$���rQ���rR���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"���D��s����zXMLRPCDocGenerator.__init__c�������������C���s ���||�_�d�S�)N)r����)r!���r����r���r���r����set_server_titleL��s����z#XMLRPCDocGenerator.set_server_titlec�������������C���s ���||�_�d�S�)N)r����)r!���r����r���r���r����set_server_nameQ��s����z"XMLRPCDocGenerator.set_server_namec�������������C���s ���||�_�d�S�)N)r����)r!���r����r���r���r����set_server_documentationV��s����z+XMLRPCDocGenerator.set_server_documentationc�������������C���s����i�}x�|�j���D�]�}||�jkr(|�j|�}n�|�jd�k r�d�d�g}t|�jd�rV|�jj|�|d<�t|�jd�rr|�jj|�|d<�t|�}|dkr�|}q�t|�jd�s�yt|�j|�}W�q��tk r����|}Y�q�X�q�|}n�|||<�qW�t ��}|j |�j|�j|�}|j tj|�j�|�S�)N�_get_method_argstringr���rF���r.���r0���)NN)r(���r���r���rB���r����rF���r����r���r���r����r����r����r����Zpage�htmlr����r����)r!���rD���rE���r8���Zmethod_infoZ documenterZ documentationr���r���r����generate_html_documentation[��s8���� z.XMLRPCDocGenerator.generate_html_documentationN)r$���rQ���rR���r"���r����r����r����r����r���r���r���r���r����=��s ���r����c���������������@���s���e�Zd�Zdd��ZdS�)�DocXMLRPCRequestHandlerc�������������C���sf���|�j���s|�j���d�S�|�jj��jd�}|�jd��|�jdd��|�jdtt|����|�j ���|�j j|��d�S�)Nzutf-8rj���zContent-typez text/htmlzContent-length)rc���rm���rt���r����r3���ru���rv���rw���rq���rz���r}���r~���)r!���r9���r���r���r����do_GET���s���� zDocXMLRPCRequestHandler.do_GETN)r$���rQ���rR���r����r���r���r���r���r�������s��� r����c���������������@���s"���e�Zd�Zedddddfdd�ZdS�)�DocXMLRPCServerTFNc���������� ���C���s&���t�j|�|||||||��tj|���d�S�)N)r����r"���r����)r!���r����r����r����r���r���r����r ���r���r���r���r"������s����zDocXMLRPCServer.__init__)r$���rQ���rR���r����r"���r���r���r���r���r�������s���r����c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)�DocCGIXMLRPCRequestHandlerc�������������C���sT���|�j���jd�}td��tdt|����t���tjj���tjjj|��tjjj���d�S�)Nzutf-8zContent-Type: text/htmlzContent-Length: %d) r����r3���r����rq���r1���r����r����r����r~���)r!���r9���r���r���r���r�������s���� z%DocCGIXMLRPCRequestHandler.handle_getc�������������C���s���t�j|���tj|���d�S�)N)r����r"���r����)r!���r���r���r���r"������s���� z#DocCGIXMLRPCRequestHandler.__init__N)r$���rQ���rR���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�j��S�)N)�datetimeZnowr���r���r���r����getCurrentTime���s����z)ExampleService.currentTime.getCurrentTimeN)r$���rQ���rR����staticmethodr����r���r���r���r����currentTime���s���r����N)r$���rQ���rR���r����r����r���r���r���r���r�������s���r����� localhost�@��c�������������C���s���|�|�S�)Nr���)�x�yr���r���r����<lambda>���s����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)r����r����)-Z xmlrpc.clientr���r���r���r���r���Zhttp.serverr���r����r����r����r1���r����r����rH���r����rx���Zfcntl�ImportErrorr���r���r���rS���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^��� ���,ErQ