]v@sddlmZmZmZmZmZddlmZddlZddlZ ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZyddlZWnek rdZYnXdddZddZGd d d ZGd d d eZGd dde jeZGdddeZGdddeZGdddejZGdddZGdddeZGdddeeZGdddeeZ e!dkrddl"Z"GdddZ#ed d!fZ$e$j%e&e$j%d"d#d$e$j'e#d%de$j(e)d&e)d'ye$j*Wn3e+k re)d(e$j,e j-dYnXdS)))Faultdumpsloads gzip_encode gzip_decode)BaseHTTPRequestHandlerNTcCsg|r|jd}n |g}x?|D]7}|jdrPtd|q(t||}q(W|S)N._z(attempt to access private attribute "%s")split startswithAttributeErrorgetattr)objattrallow_dotted_namesZattrsir+/opt/alt/python35/lib64/python3.5/server.pyresolve_dotted_attribute{s   rcsfddtDS)Ncs;g|]1}|jd rtt|r|qS)r )r callabler ).0member)rrr s z'list_public_methods..)dir)rr)rrlist_public_methodssrc@seZdZdddddZdddZdddZd d Zd d Zddd dZddZ ddZ ddZ ddZ ddZ dS)SimpleXMLRPCDispatcherFNcCs7i|_d|_||_|p$d|_||_dS)Nzutf-8)funcsinstance allow_noneencodinguse_builtin_types)selfrrr rrr__init__s    zSimpleXMLRPCDispatcher.__init__cCs||_||_dS)N)rr)r!rrrrrregister_instances! z(SimpleXMLRPCDispatcher.register_instancecCs&|dkr|j}||j|rrrr-Qs      " z'SimpleXMLRPCDispatcher.system_multicallcCsy|j|}Wntk r%Yn'X|dk r<||Std||jdk rt|jdr|jj||Syt|j||j}Wntk rYnX|dk r||Std|dS)Nzmethod "%s" is not supportedr1) rKeyError ExceptionrrCr1rrr )r!r9r8funcrrrr1qs(      z SimpleXMLRPCDispatcher._dispatch)r$ __module__ __qualname__r"r#r'r,r.r?r)r*r+r-r1rrrrrs $ %   rc@seZdZdZdZdZdZejdej ej BZ ddZ d d Z d d Zd dZddZddddZdS)SimpleXMLRPCRequestHandler//RPC2ixr/Tz \s* ([^\s;]+) \s* #content-coding (;\s* q \s*=\s* ([0-9\.]+))? #q cCsi}|jjdd}xi|jdD]X}|jj|}|r+|jd}|rjt|nd}|||jd%sz'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r/(zself.%srH) escaperrsearchspanrMgroupsreplacerpZnamelinkrt)r!textrrclassesrErNherepatternr]startendallschemeZrfcZpepZselfdotr&Zurlrrrmarkups8  " zServerHTMLDoc.markupc Cs|r|jpdd|}d} d|j||j|f} tj|rtj|} tj| jdd| j| j| j d| j d|j } n]tj |rtj|} tj| j| j| j| j d| j d|j } nd} t |tr5|dp| } |dp/d} ntj|} | | | oa|jd | }|j| |j|||}|od |}d ||fS) NrHrz$%sr/ annotations formatvaluez(...)rz'%sz
%s
z
%s
%s
)r$rinspectZismethodZgetfullargspecZ formatargspecargsZvarargsZvarkwdefaultsrrZ isfunction isinstancetuplerIrJZgreyr preformat)r!objectr&modrrrEZclZanchorZnotetitlerZargspecZ docstringZdecldocrrr docroutines<   zServerHTMLDoc.docroutinec Csi}x6|jD](\}}d|||<||||%sz#ffffffz#7799eez %sz

%s

rZMethodsz#eeaa77rH) itemsrheadingrrrDrMrZ bigsectionrt) r! server_nameZpackage_documentationrEZfdictkeyvalueheadresultrcontentsZ method_itemsrrr docservers" # zServerHTMLDoc.docserver)r$rSrTrrrrrrrrs ),rc@sLeZdZddZddZddZddZd d Zd S) XMLRPCDocGeneratorcCsd|_d|_d|_dS)NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)rserver_documentation server_title)r!rrrr"8s  zXMLRPCDocGenerator.__init__cCs ||_dS)N)r)r!rrrrset_server_title@sz#XMLRPCDocGenerator.set_server_titlecCs ||_dS)N)r)r!rrrrset_server_nameEsz"XMLRPCDocGenerator.set_server_namecCs ||_dS)N)r)r!rrrrset_server_documentationJsz+XMLRPCDocGenerator.set_server_documentationc Csai}x|jD] }||jkr8|j|}n|jdk rddg}t|jdr{|jj||dsraddrz&Serving XML-RPC on localhost port 8000zKIt is advisable to run this example server within a secure, closed network.z& Keyboard interrupt received, exiting.). xmlrpc.clientrrrrrZ http.serverrrrrr2rrrIrrzZfcntl ImportErrorrrrrUrrrrZHTMLDocrrrrrr$rrrvr'powr#r.rZ serve_foreverKeyboardInterruptZ server_closeexitrrrrks\(              (ErQ