g֏F ddlmZmZmZmZmZddlmZddlm Z ddl m Z ddl Z ddlZ ddlZddlZddlZddlZddlZddlZ ddlZd'dZdZGd d ZGd d eZGd dej4eZGddeZGddeZGddej<ZGddZ GddeZ!Gddee Z"Gddee Z#e$dk(rddl%Z%GddZ&ed 5Z'e'jQe)e'jQd!d"e'jUe&d#e'jWe,d$e,d% e'j[dddyy#e$rdZY'wxYw#e.$re,d&ej^dY9wxYw#1swYyxYw)()Faultdumpsloads gzip_encode gzip_decode)BaseHTTPRequestHandler)partial) signatureNTc |r|jd}n|g}|D]-}|jdrtd|zt||}/|S)N._z(attempt to access private attribute "%s")split startswithAttributeErrorgetattr)objattrallow_dotted_namesattrsis 4/opt/alt/python312/lib64/python3.12/xmlrpc/server.pyresolve_dotted_attributer|s_ 3  <<  :Q> #a.C  Jc  t|Dcgc]*}|jdstt||r|,c}Scc}w)Nr )dirrcallabler)rmembers rlist_public_methodsrsM3"%S 4v((-WS&12  44 4s/Ac\eZdZ d dZddZddZdZdZddZdZ d Z d Z d Z d Z y)SimpleXMLRPCDispatcherNcRi|_d|_||_|xsd|_||_yNutf-8)funcsinstance allow_noneencodinguse_builtin_typesselfr&r'r(s r__init__zSimpleXMLRPCDispatcher.__init__s+  $ +G !2rc" ||_||_yN)r%r)r*r%rs rregister_instancez(SimpleXMLRPCDispatcher.register_instances @! "4rct |t|j|S| |j}||j|<|S)N)name)r register_function__name__r$)r*functionr0s rr1z(SimpleXMLRPCDispatcher.register_functionsE  411= = <$$D# 4rc |jj|j|j|jdy)N)zsystem.listMethodszsystem.methodSignaturezsystem.methodHelp)r$updatesystem_listMethodssystem_methodSignaturesystem_methodHelpr*s r register_introspection_functionsz7SimpleXMLRPCDispatcher.register_introspection_functionss< $2I2I151L1L,0,B,BD ErcT |jjd|jiy)Nzsystem.multicall)r$r5system_multicallr9s rregister_multicall_functionsz3SimpleXMLRPCDispatcher.register_multicall_functionss' < -0E0EFGrc  t||j\}}| |||}n|j||}|f}t|d|j|j }|j|j dS#t $r,}t||j|j }Yd}~Ld}~wt$rD}tt dt|d||j |j}Yd}~d}~wwxYw)N)r()methodresponser&r')r&r':r'r&xmlcharrefreplace) rr( _dispatchrr&r'r BaseExceptiontypeencode) r*datadispatch_methodpathparamsmethodresponsefaultexcs r_marshaled_dispatchz*SimpleXMLRPCDispatcher._marshaled_dispatchs  "44;Q;QRNFF**66:>>&&9 {HXa(,$--QHt}}.ABB 5Ut&*mm5H aDIs344??H s$AA== C="B-- C=9:C88C=ct t|jj}|j~t |jdr1|t|jj z}t|St |jds!|tt |jz}t|S)N _listMethodsrD)setr$keysr%hasattrrRrsorted)r*methodss rr6z)SimpleXMLRPCDispatcher.system_listMethodss Bdjjoo'( == $t}}n53t}}99;<< gT]]K8324==ABBgrc y)Nzsignatures not supported)r* method_names rr7z-SimpleXMLRPCDispatcher.system_methodSignature)s  @*rc| d}||jvr|j|}nu|jit|jdr|jj|St|jds" t |j||j }|ytj|S#t $rY#wxYw)N _methodHelprD) r$r%rUr\rrrpydocgetdoc)r*rZrLs rr8z(SimpleXMLRPCDispatcher.system_methodHelp6s O $** $ZZ ,F ]] &t}}m4}}00==T]]K85 $ + $ 7 7"F ><<' '&s6!B// B;:B;cV g}|D]/}|d}|d} |j|j||g1|S#t$r2}|j|j|jdYd}~jd}~wt $r,}|jdt |d|dYd}~d}~wwxYw)N methodNamerK) faultCode faultStringr?rA)appendrDrrbrcrErF)r* call_listresultscallrZrKrNrOs rr<z'SimpleXMLRPCDispatcher.system_multicallUs D|,K(^F {F CDE$ #(??%*%6%68! #$04S 3%?A s!": B((A00 B(<"B##B(ct |j|}|||Std|z#t$rYnwxYw|jjt |jdr|jj ||S t |j||j}|||S#t$rYnwxYwtd|z)Nzmethod "%s" is not supportedrD) r$ ExceptionKeyErrorr%rUrDrrr)r*rLrKfuncs rrDz SimpleXMLRPCDispatcher._dispatchts ( E::f%DV}$:VCD D     == $t}}k2}}..vv>> )/MM++#=( "   6?@@s' 335!B B)(B)FNF)FNN)r2 __module__ __qualname__r+r.r1r:r=rPr6r7r8r<rDrYrrr r sL37#(3"5H EH!CF$ *(>>1Arr ceZdZ dZdZdZdZejdejejzZ dZ dZ dZd Zd Zd d Zy )SimpleXMLRPCRequestHandler)/z/RPC2 /pydoc.cssixTz \s* ([^\s;]+) \s* #content-coding (;\s* q \s*=\s* ([0-9\.]+))? #q ci}|jjdd}|jdD]T}|jj |}|s!|j d}|r t |nd}|||j d<V|S)NzAccept-Encodingr],g?r?)headersgetr aepatternmatchgroupfloat)r*raeer{vs raccept_encodingsz+SimpleXMLRPCRequestHandler.accept_encodingssz  \\  / 4#ANN((+EKKN !E!Hs$%%++a.!  rcL|jr|j|jvSy)NT) rpc_pathsrJr9s ris_rpc_path_validz,SimpleXMLRPCRequestHandler.is_rpc_path_valids! >>99. .rc@ |js|jy d}t|jd}g}|rOt ||}|j j |}|sn%|j||t|dz}|rOdj|}|j|}|y|jj|t|dd|j}|jd|j!dd|j"Xt||j"kDr@|j%j'd d }|r t)|}|j!d d |j!d t-t||j/|j0j3|y#t*$rY[wxYw#t4$r} |jd t7|jdrs|jj8r]|j!dt-| t;j<} t-| j?ddd} |j!d| |j!d d|j/Yd} ~ yd} ~ wwxYw)Nizcontent-lengthrtrrD Content-typeztext/xmlgziprzContent-EncodingContent-lengthi_send_traceback_headerz X-exceptionASCIIbackslashreplacez X-traceback0) r report_404intrxminrfilereadrdlenjoindecode_request_contentserverrPrrJ send_response send_headerencode_thresholdrryrNotImplementedErrorstr end_headerswfilewriterirUr traceback format_excrG) r*max_chunk_sizesize_remainingL chunk_sizechunkrHrMqrtraces rdo_POSTz"SimpleXMLRPCRequestHandler.do_POSTsR %%' OO  9 ' *N .>!?@NA  @   3#ae*, !88A;D..t4D|{{66'$ T:DIIH$   s #   ^Z 8$$0x=4#8#88--/33FA>A!'28'  "rcb |jjrtj|||yyr-)r logRequestsr log_request)r*codesizes rrz&SimpleXMLRPCRequestHandler.log_request3s)2 ;; " " " . .tT4 @ #rN)-r)r2rnrorrwbufsizedisable_nagle_algorithmrecompileVERBOSE IGNORECASErzrrrrrrrYrrrqrqsm-IH"  "$bmm!;=I E'N"#Arrqc*eZdZ dZdZedddddfdZy)SimpleXMLRPCServerTFNc||_tj||||tjj||||yr-)rr r+ socketserver TCPServerr*addrrequestHandlerrr&r'bind_and_activater(s rr+zSimpleXMLRPCServer.__init__Ls<'''j(DUV''dNDUVr)r2rnroallow_reuse_addressrrqr+rYrrrr9s, #,F!ed#'5Wrrc6eZdZ edddddfdZdZdZddZy) MultiPathXMLRPCServerTFNc ntj||||||||i|_||_|xsd|_yr")rr+ dispatchersr&r'rs rr+zMultiPathXMLRPCServer.__init__]sA ##D$ Z$,.?AR T$ +G rc$||j|<|Sr-r)r*rJ dispatchers radd_dispatcherz$MultiPathXMLRPCServer.add_dispatchergs!+rc |j|Sr-r)r*rJs rget_dispatcherz$MultiPathXMLRPCServer.get_dispatcherks%%rc " |j|j|||}|S#t$ra}tt dt |d||j |j}|j|j d}Yd}~|Sd}~wwxYw)Nr?rArBrC) rrPrErrrFr'r&rG)r*rHrIrJrMrOs rrPz)MultiPathXMLRPCServer._marshaled_dispatchns K''-AA_d,H KaDIs344??DH t}}6IJH Ks $ BAB  Brm)r2rnrorqr+rrrPrYrrrrUs--G!ed#'5,& rrc*eZdZ ddZdZdZddZy)CGIXMLRPCRequestHandlerNc4tj||||yr-)r r+r)s rr+z CGIXMLRPCRequestHandler.__init__s''j(DUVrc^ |j|}tdtdt|zttjj tjj j|tjj j y)NzContent-Type: text/xmlContent-Length: %d)rPprintrsysstdoutflushbufferr)r* request_textrMs r handle_xmlrpcz%CGIXMLRPCRequestHandler.handle_xmlrpcss-++L9 &' "S]23   ) !rc& d}tj|\}}tjj|||dz}|j d}t d||fzt dtjjzt dt|zt tjjtjjj|tjjjy)Nr)rmessageexplainr#z Status: %d %szContent-Type: %sr)r responseshttprDEFAULT_ERROR_MESSAGErGrDEFAULT_ERROR_CONTENT_TYPErrrrrr)r*rrrrMs r handle_getz"CGIXMLRPCRequestHandler.handle_gets 1;;DA;;44    ??7+ ow/0  4;;#I#IIJ "S]23   ) !rcX |4tjjdddk(r|jy t tjjdd}|tjj|}|j|y#t t f$rd}YFwxYw)NREQUEST_METHODGETCONTENT_LENGTHrt) osenvironryrrr TypeErrorrstdinrr)r*rlengths rhandle_requestz&CGIXMLRPCRequestHandler.handle_requests    JJNN+T 2e ; OO  RZZ^^,zz(https://www.rfc-editor.org/rfc/rfc%d.txtz!https://peps.python.org/pep-%04d/r?(zself.%sr]) escaperrsearchspanrdgroupsreplacernamelinkr)r*textrr$classesrWrfherepatternr{startendallschemerfcpepselfdotr0urls rmarkupzServerHTMLDoc.markups F&4;; **<=~~dD11e1JE3 NN6$tE"23 438<<> 0Cc7DSk))#x8SAB@3s8KVC[IJ9CHDVC[IJc#a%C't}}T7E7KL9D@At}}T7;<D)~~dD11e1* vd45k*+wwwrc |xr |jxsddz|z}d} d|j|d|j|d} t|rtt |} nd} t |t r|dxs| } |dxsd} ntj|} | | z| xr|jd | zz} |j| |j|||}|xrd |z}d | d |d S)Nr]rz z z(...)rr?z'%sz
%s
z
z
z
) r2rrrr isinstancetupler^r_greyr preformat)r*objectr0modr$rrWclanchornotetitleargspec docstringdecldocs r docroutinezServerHTMLDoc.docroutinesI$*c1D8 KK T!24 F )F+,GG fe $Qi*7Gq RI V,Iw$#A49984?,ABkk t~~ugw@2,s2-1377rc i}|jD]\}}d|z||<||||<|j|}d|z}|j|}|j||j|} | xrd| z} |d| zz}g} t |j} | D](\}}| j |j|||*||jdddj| z}|S) Nz#-z)%sz %sz

%s

)r$Methods functionsr]) itemsrheadingrr rVrdr bigsectionr) r* server_namepackage_documentationrWfdictkeyvalueheadresultrcontents method_itemss r docserverzServerHTMLDoc.docservers?!--/JCE#J :E%L*kk+. :[Hd#kk/G)mc)-#--gmmo. &JC OODOOE3eOD E'$// {BGGH$577 rc* d}d|z}d|d|d|dS)Nrsz1zI Python: z z zrY)r*rr%css_pathcss_links rpagezServerHTMLDoc.page"s/" ?   ',Xx A Ar)r2rnrorrr'r+rYrrrrs2A"&b"b% N,0R8:4 Arrc,eZdZ dZdZdZdZdZy)XMLRPCDocGeneratorc.d|_d|_d|_y)NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)rserver_documentation server_titler9s rr+zXMLRPCDocGenerator.__init__7s!9  !;rc ||_yr-)r0)r*r0s rset_server_titlez#XMLRPCDocGenerator.set_server_title?s F(rc ||_yr-)r)r*rs rset_server_namez"XMLRPCDocGenerator.set_server_nameDs E&rc ||_yr-)r/)r*r/s rset_server_documentationz+XMLRPCDocGenerator.set_server_documentationIs A$8!rc i}|jD]}||jvr|j|}n|jddg}t|jdr|jj ||d<t|jdr|jj ||d<t |}|dk7r|}n1t|jds t|j|}n|} ||<t}|j|j|j|}|jtj|j |S#t$r|}YtwxYw)N_get_method_argstringrr\r?rmrD)r6r$r%rUr8r\r rrrr'rr/r+htmlrr0)r*rWrZrL method_info documenter documentations rgenerate_html_documentationz.XMLRPCDocGenerator.generate_html_documentationNsR !224Kdjj(K0*#Tl 4==*AB%)]]%H%H%UKN4==-8%)]]%>%>{%KKN#K0 ,.(F  <-!9$(MM$/"&)F $*GK 75:#_ ",, $ 0 0 $ 9 9 ' t{{4+<+<=}MM#*-!,-sE E&%E&N)r2rnror+r2r4r6r=rYrrr-r-0s! ;) ' 9 1Nrr-ceZdZ dZdZy)DocXMLRPCRequestHandlerc,tjjtjjt}tjj |ddd}t |d5}|jcdddS#1swYyxYw)Nz.. pydoc_dataz _pydoc.cssrb)mode)rrJdirnamerealpath__file__ropenr)r*r path_herer)fps r_get_cssz DocXMLRPCRequestHandler._get_csss\GGOOBGG$4$4X$>? 77<< 4|L ( &"779' & &s 0B  Bc |js|jy|jjdrd}|j |j}n+d}|j j jd}|jd|jdd|z|jdtt||j|jj|y) Nz.cssztext/cssz text/htmlr#rz Content-Typez%s; charset=UTF-8r)rrrJendswithrJrr=rGrrrrrrr)r* content_typerMs rdo_GETzDocXMLRPCRequestHandler.do_GETs %%' OO   99  f %%L}}TYY/H&L{{>>@GGPH 3 )<|)KL )3s8}+=>  "rN)r2rnrorJrNrYrrr?r?s #rr?c"eZdZ edddddfdZy)DocXMLRPCServerTFNc ftj||||||||tj|yr-)rr+r-rs rr+zDocXMLRPCServer.__init__s5 ##D$ $.:K$5 7 ##D)r)r2rnror?r+rYrrrPrPs -D!ed#'5*rrPceZdZ dZdZy)DocCGIXMLRPCRequestHandlercz |jjd}tdtdt|zttj j tj jj|tj jj y)Nr#zContent-Type: text/htmlr) r=rGrrrrrrrrs rrz%DocCGIXMLRPCRequestHandler.handle_gets 335<tjjSr-)datetimenowrYrrgetCurrentTimez)ExampleService.currentTime.getCurrentTimes((,,..rN)r2rnro staticmethodrarYrr currentTimer]s  / /rrcN)r2rnror[rcrYrrrXrXs  / /rrX) localhosti@c ||zSr-rY)xys rrhsQqSradd)rz&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.clientrrrrr http.serverr functoolsr inspectr r9rrrrrr^rfcntl ImportErrorrrr rqrrrrHTMLDocrr-r?rPrSr2r_rXrr1powr.r=r serve_foreverKeyboardInterruptexitrYrrruseTHG.  04IAIAVPA!7PAdW///W8%.%N?-4?-JmAEMMmA^ONONb&#8&#P**** *$;$6*4 z// / 0F  %  %8  !1d K++- 67 [\   " 1 0u E^!  ; < CHHQK  1 0s=E$,AF E2$E/.E/2FFFFF