관리-도구
편집 파일: server.cpython-39.opt-2.pyc
a �����DOg@�������������������� ���@���s ��d�dl�mZmZmZmZmZ�d�dlmZ�d�dlm Z �d�dl mZ�d�dlZd�dlZ d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZzd�dlZW�n�ey����dZY�n0�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�rd�dl%Z%G�d d!��d!�Z&ed"���Z'e'�(e)��e'�(d#d$��d%��e'j*e&��dd&��e'�+���e,d'��e,d(��ze'�-���W�n&�e.�y����e,d)��e�/d���Y�n0�W�d����n1��s0����Y��dS�)+�����)�Fault�dumps�loads�gzip_encode�gzip_decode)�BaseHTTPRequestHandler)�partial)� signatureNTc�����������������C���sF���|r|��d�}n|g}|D�]&}|�d�r6td|���qt|�|�}�q|�S�)N�.�_z(attempt to access private attribute "%s")�split� startswith�AttributeError�getattr)�obj�attr�allow_dotted_names�attrs�i��r����%/usr/lib64/python3.9/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>)�dirr���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��N�utf-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�u�rt�|�j|d�S�|d�u�r$|j}||�j|<�|S�)N)�name)r����register_function�__name__r"���)r(����functionr,���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"���r0����system_multicallr4���r���r���r����register_multicall_functions����s����z3SimpleXMLRPCDispatcher.register_multicall_functionsc�����������������C���s����zPt�||�jd�\}}|d�ur(|||�}n|��||�}|f}t|d|�j|�jd�}W�n��ty��}�zt||�j|�jd�}W�Y�d�}~nbd�}~0����t���\}} } z0ttdd|| f��|�j|�jd�}W�d��}�} } nd��}�} } 0�Y�n0�|� |�jd�S�)N)r&�������)Zmethodresponser$���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����}|�jd�urVt|�jd�r8|t�|�j����O�}nt|�jd�sV|t�t|�j��O�}t|�S�)N�_listMethodsr<���)�setr"����keysr#����hasattrrK���r����sorted)r(����methodsr���r���r���r1�����s���� z)SimpleXMLRPCDispatcher.system_listMethodsc�����������������C���s���dS�)Nzsignatures not supportedr���)r(����method_namer���r���r���r2���/��s����z-SimpleXMLRPCDispatcher.system_methodSignaturec�����������������C���s����d�}||�j�v�r|�j�|�}nV|�jd�urpt|�jd�r<|�j�|�S�t|�jd�spzt|�j||�j�}W�n�tyn���Y�n0�|d�u�r|dS�t�|�S�d�S�)N�_methodHelpr<�����) r"���r#���rN���rR���r���r���r����pydoc�getdoc)r(���rQ���rD���r���r���r���r3���<��s$���� �z(SimpleXMLRPCDispatcher.system_methodHelpc����������� ������C���s����g�}|D�]�}|d�}|d�}z|��|��||�g��W�q�tyl�}�z |��|j|jd���W�Y�d�}~qd�}~0����t���\}}} z(|��dd||f�d���W�d��}�}} nd��}�}} 0�Y�q0�q|S�)NZ methodNamerC���)� faultCode�faultStringr8���r9���)�appendr<���r���rV���rW���r=���r>���) r(���Z call_list�results�callrQ���rC���rF���rG���rH���rI���r���r���r���r6���[��s,���� �� ��$z'SimpleXMLRPCDispatcher.system_multicallc�����������������C���s����z|�j�|�}W�n�ty ���Y�n0�|d�ur2||��S�td|���|�jd�ur�t|�jd�rb|�j�||�S�zt|�j||�j�}W�n�ty����Y�n0�|d�ur�||��S�td|���d�S�)Nzmethod "%s" is not supportedr<���) r"����KeyError� Exceptionr#���rN���r<���r���r���r���)r(���rD���rC����funcr���r���r���r<�����s*���� �z SimpleXMLRPCDispatcher._dispatch)FNF)F)NN)NN)r.���� __module__�__qualname__r)���r+���r-���r5���r7���rJ���r1���r2���r3���r6���r<���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���s^���i�}|�j��dd�}|�d�D�]<}|�j�|�}|r|�d�}|rFt|�nd}|||�d�<�q|S�)NzAccept-EncodingrS����,����g�������?r8���)�headers�getr���� aepattern�match�group�float)r(����rZae�erh����vr���r���r����accept_encodings���s���� z+SimpleXMLRPCRequestHandler.accept_encodingsc�����������������C���s���|�j�r|�j|�j�v�S�dS�d�S�)NT)� rpc_pathsrB���r4���r���r���r����is_rpc_path_valid���s����z,SimpleXMLRPCRequestHandler.is_rpc_path_validc�������������� ���C���s���|�����s|�����d�S�z�d}t|�jd��}g�}|rht||�}|�j�|�}|sLqh|�|��|t|d��8�}q,d� |�}|�� |�}|d�u�r�W�d�S�|�j�|t |�dd��|�j�}W�n��t�y8�}�zx|��d��t|�jd��r|�jj�r|��dt|���t���} t| �d d �d �} |��d| ��|��dd ��|�����W�Y�d�}~n�d�}~0�0�|��d��|��dd��|�jd�u�r�t|�|�jk�r�|�����dd�} | �r�zt|�}|��dd��W�n�t�y����Y�n0�|��dtt|����|�����|�j�|��d�S�)Ni����zcontent-lengthrb��������r<���i����_send_traceback_headerzX-exception�ASCII�backslashreplacezX-traceback�Content-length�0������Content-typeztext/xml�gzipr���zContent-Encoding) rp���� report_404�intre����minZrfile�readrX����len�join�decode_request_content�serverrJ���r���rB���r\���� send_responserN���rr����send_header�str� traceback� format_excr?����end_headers�encode_thresholdrn���rf���r����NotImplementedError�wfile�write)r(���Zmax_chunk_sizeZsize_remaining�LZ chunk_size�chunkr@���rE���rl���Ztrace�qr���r���r����do_POST���s\���� � � z"SimpleXMLRPCRequestHandler.do_POSTc�����������������C���s����|�j��dd����}|dkr|S�|dkrrz t|�W�S��tyR���|��dd|���Y�q��tyn���|��dd��Y�q�0�n|��dd|���|��dd ��|�����d�S�) Nzcontent-encoding�identityry���i���zencoding %r not supported���zerror decoding gzip contentru���rv���) re���rf����lowerr���r����r����� ValueErrorr����r����)r(���r@���r%���r���r���r���r����$��s���� z1SimpleXMLRPCRequestHandler.decode_request_contentc�����������������C���sF���|���d��d}|��dd��|��dtt|����|�����|�j�|��d�S�)Ni���s���No such pagerx���z text/plainru���)r����r����r����r~���r����r����r�����r(���rE���r���r���r���rz���5��s���� z%SimpleXMLRPCRequestHandler.report_404�-c�����������������C���s���|�j�jrt�|�||��d�S�r*���)r�����logRequestsr����log_request)r(����code�sizer���r���r���r����>��s����z&SimpleXMLRPCRequestHandler.log_requestN)r����r����)r.���r^���r_���ro���r����ZwbufsizeZdisable_nagle_algorithm�re�compile�VERBOSE� IGNORECASErg���rn���rp���r����r����rz���r����r���r���r���r���r`������s��� �G r`���c�������������������@���s*���e�Zd�ZdZdZedddddfdd�ZdS�)�SimpleXMLRPCServerTFNc�����������������C���s,���||�_�t�|�|||��tj�|�|||��d�S�r*���)r����r���r)����socketserver� TCPServer�r(����addrZrequestHandlerr����r$���r%���Zbind_and_activater&���r���r���r���r)���W��s����zSimpleXMLRPCServer.__init__)r.���r^���r_���Zallow_reuse_addressrr���r`���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�r ���)r����r)����dispatchersr$���r%���r����r���r���r���r)���h��s�����zMultiPathXMLRPCServer.__init__c�����������������C���s���||�j�|<�|S�r*����r����)r(���rB���� dispatcherr���r���r����add_dispatcherr��s���� z$MultiPathXMLRPCServer.add_dispatcherc�����������������C���s ���|�j�|�S�r*���r����)r(���rB���r���r���r����get_dispatcherv��s����z$MultiPathXMLRPCServer.get_dispatcherc�����������������C���s����z|�j�|��|||�}W�nf���t���d�d��\}}z:ttdd||f��|�j|�jd�}|�|�jd�}W�d��}}n d��}}0�Y�n0�|S�)N����r8���r9���r:���r;���) r����rJ���r=���r>���r���r���r%���r$���r?���)r(���r@���rA���rB���rE���rG���rH���r���r���r���rJ���y��s���� ��z)MultiPathXMLRPCServer._marshaled_dispatch)NN)r.���r^���r_���r`���r)���r����r����rJ���r���r���r���r���r����`��s���� r����c�������������������@���s0���e�Zd�Zddd�Zdd��Zdd��Zdd d �ZdS�) �CGIXMLRPCRequestHandlerFNc�����������������C���s���t��|�|||��d�S�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/xml�Content-Length: %d)rJ����printr~���r=����stdout�flush�bufferr����)r(����request_textrE���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�)Nr����)r�����message�explainr!���z Status: %d %szContent-Type: %sr����)r���Z responses�httpr����ZDEFAULT_ERROR_MESSAGEr?���r����ZDEFAULT_ERROR_CONTENT_TYPEr~���r=���r����r����r����r����)r(���r����r����r����rE���r���r���r���� handle_get���s ������ z"CGIXMLRPCRequestHandler.handle_getc�������������� ���C���sx���|d�u�r$t�j�dd��dkr$|�����nPztt�j�dd���}W�n�ttfyT���d}Y�n0�|d�u�rjtj� |�}|�� |��d�S�)NZREQUEST_METHOD�GETZCONTENT_LENGTHrb���)�os�environrf���r����r{���r����� TypeErrorr=����stdinr}���r����)r(���r�����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�Zd�Zdi�i�i�fdd�Zdi�i�i�dfdd�Zdd��ZdS�)� ServerHTMLDocNc�����������������C���sZ��|p|�j�}g�}d}t�d�}|�||�} | s0�q:| ���\} }|�|||| �����| ���\}} }}}}| r�||��dd�}|�d||f���n�|r�dt|��}|�d|||�f���n~|r�dt|��}|�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"z<a href="%s">%s</a>z'http://www.rfc-editor.org/rfc/rfc%d.txtz)https://www.python.org/dev/peps/pep-%04d/r8����(zself.<strong>%s</strong>rS���)�escaper����r�����search�spanrX����groups�replacer{���Znamelinkr���)r(����textr����r"����classesrP���rY����here�patternrh����start�end�all�schemeZrfcZpepZselfdotr,����urlr���r���r����markup���s4���� 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�) NrS���r����z$<a name="%s"><strong>%s</strong></a>z(...)r���r8���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�tuplerT���rU���Zgreyr����� preformat)r(����objectr,����modr"���r����rP���Zcl�anchorZnote�titleZargspecZ docstringZdecl�docr���r���r���� docroutine���s(����� ��zServerHTMLDoc.docroutinec�������������� ���C���s����i�}|����D�] \}}d|�||<�||�||<�q|��|�}d|�}|��|dd�}|��||�j|�} | ohd| �} |d| ��}g�} t|�����}|D�]\}}| �|�j|||d���q�||��ddd d � | ���}|S�)Nz#-z)<big><big><strong>%s</strong></big></big>z#ffffffz#7799eez<tt>%s</tt>z <p>%s</p> )r"���ZMethodsz#eeaa77rS���) �itemsr�����headingr����r����rO���rX���r����Z bigsectionr���)r(����server_nameZpackage_documentationrP���Zfdict�key�value�head�resultr�����contentsZmethod_itemsr���r���r���� docserver��s$���� �zServerHTMLDoc.docserver)r.���r^���r_���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_titler4���r���r���r���r)���:��s�����zXMLRPCDocGenerator.__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�]�}||�jv�r&|�j|�}n�|�jd�ur�d�d�g}t|�jd�rT|�j�|�|d<�t|�jd�rp|�j�|�|d<�t|�}|dkr�|}q�t|�jd�s�zt|�j|�}W�q��ty����|}Y�q�0�q�|}n�|||<�qt ��}|� |�j|�j|�}|� t�|�j�|�S�)N�_get_method_argstringr���rR���r8���)NNr<���)r1���r"���r#���rN���r����rR���r����r���r���r����r����r����r����Zpage�htmlr����r����)r(���rP���rQ���rD���Zmethod_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�Zd�Zdd��ZdS�)�DocXMLRPCRequestHandlerc�����������������C���sf���|�����s|�����d�S�|�j����d�}|��d��|��dd��|��dtt|����|�� ���|�j �|��d�S�)Nr!���rw���rx���z text/htmlru���)rp���rz���r����r����r?���r����r����r����r~���r����r����r����r����r���r���r����do_GET���s���� zDocXMLRPCRequestHandler.do_GETN)r.���r^���r_���r����r���r���r���r���r�������s��� r����c�������������������@���s"���e�Zd�Zedddddfdd�ZdS�)�DocXMLRPCServerTFNc�������������� ���C���s&���t��|�|||||||��t�|���d�S�r*���)r����r)���r����r����r���r���r���r)������s �����zDocXMLRPCServer.__init__)r.���r^���r_���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�)Nr!���zContent-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����r4���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�Zd�Zdd��ZG�dd��d�ZdS�)�ExampleServicec�����������������C���s���dS�)NZ42r���r4���r���r���r����getData���s����zExampleService.getDatac�������������������@���s���e�Zd�Zedd���ZdS�)zExampleService.currentTimec�������������������C���s ���t�j����S�r*���)�datetimeZnowr���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����)� localhosti@��c�����������������C���s���|�|�S�r*���r���)�x�yr���r���r����<lambda>���rq���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)0� xmlrpc.clientr���r���r���r���r���Zhttp.serverr���� functoolsr����inspectr ���r����r����r����r=���r����r����rT���r����Zfcntl�ImportErrorr���r���r���r`���r����r����r����r����ZHTMLDocr����r����r����r����r����r.���r����r����r����r-����powr+���r7���r����Z serve_forever�KeyboardInterrupt�exitr���r���r���r����<module>k���sf��� ����,EbQ��