=Og ddlmZmZmZmZmZddlmZddlm Z ddl m Z ddl Z ddlZ ddlZddlZddlZddlZddlZddlZ ddlZn #e$rdZYnwxYwd'dZdZGd d ZGd d eZGd dejeZGddeZGddeZGddejZGddZ GddeZ!Gddee Z"Gddee Z#e$dkrddl%Z%GddZ&ed 5Z'e'(e)e'(d!d"e'*e&d#e'+e,d$e,d% e'-n&#e.$re,d&ej/dYnwxYwddddS#1swxYwYdSdS)()Faultdumpsloads gzip_encode gzip_decode)BaseHTTPRequestHandler)partial) signatureNTc |r|d}n|g}|D]9}|drtd|zt||}:|S)N._z(attempt to access private attribute "%s")split startswithAttributeErrorgetattr)objattrallow_dotted_namesattrsis 4/opt/alt/python311/lib64/python3.11/xmlrpc/server.pyresolve_dotted_attributer|s| 3 !! <<   ! :Q> #a..CC Jc< fdtDS)Ncxg|]6}|dtt|4|7S)r )rcallabler).0memberrs r z'list_public_methods..sU 4 4 4v((-- 4WS&1122 4F 4 4 4r)dir)rs`rlist_public_methodsr!s83 4 4 4 4S 4 4 44rc^eZdZ ddZddZddZdZdZddZd Z d Z d Z d Z d Z dS)SimpleXMLRPCDispatcherFNcPi|_d|_||_|pd|_||_dSNutf-8)funcsinstance allow_noneencodinguse_builtin_typesselfr)r*r+s r__init__zSimpleXMLRPCDispatcher.__init__s1  $ +G !2rc$ ||_||_dSN)r(r)r-r(rs rregister_instancez(SimpleXMLRPCDispatcher.register_instances @! "4rc^ |t|j|S||j}||j|<|S)N)name)r register_function__name__r')r-functionr3s rr4z(SimpleXMLRPCDispatcher.register_functionsC  41=== = <$D# 4rcb |j|j|j|jddS)N)zsystem.listMethodszsystem.methodSignaturezsystem.methodHelp)r'updatesystem_listMethodssystem_methodSignaturesystem_methodHelpr-s r register_introspection_functionsz7SimpleXMLRPCDispatcher.register_introspection_functionssO $2I151L,0,BDD E E E E ErcJ |jd|jidS)Nzsystem.multicall)r'r8system_multicallr<s rregister_multicall_functionsz3SimpleXMLRPCDispatcher.register_multicall_functionss. < -0EFGGGGGrc  t||j\}}| |||}n|||}|f}t|d|j|j}n#t $r&}t||j|j}Yd}~nVd}~wt$rF}tt dt|d||j|j}Yd}~nd}~wwxYw| |jdS)N)r+)methodresponser)r*)r)r*:r*r)xmlcharrefreplace) rr+ _dispatchrr)r*r BaseExceptiontypeencode) r-datadispatch_methodpathparamsmethodresponsefaultexcs r_marshaled_dispatchz*SimpleXMLRPCDispatcher._marshaled_dispatchs<  "44;QRRRNFF**?66::>>&&99 {HXa(,$-QQQHH 5 5 5Ut&*m555HHHHHH   aDIIIIss3444?HHHHHH  t}.ABBBs$AA"" C ,B  C 2<'' 's'B BBcv g}|D]}|d}|d} ||||g>#t$r,}||j|jdYd}~od}~wt $r4}|dt |d|dYd}~d}~wwxYw|S)N methodNamerN) faultCode faultStringrBrD)appendrGrrerfrHrI)r- call_listresultscallr]rNrQrRs rr?z'SimpleXMLRPCDispatcher.system_multicallUs1   D|,K(^F {F C CDEEEE   #(?%*%688!   #$04S 33%?AA  s#*A B6"A55 B6*B11B6cl |j|}|||Std|z#t$rYnwxYw|jdt |jdr|j||S t |j||j}|||Sn#t$rYnwxYwtd|z)Nzmethod "%s" is not supportedrG) r' ExceptionKeyErrorr(rXrGrrr)r-rOrNfuncs rrGz SimpleXMLRPCDispatcher._dispatchts  ( E:f%DtV}$:VCDD D     D  = $t}k22 ?}..vv>>> )/M+#4=($"     6?@@@s ) 661B B! B!FNF)FNN)r5 __module__ __qualname__r.r1r4r=r@rSr9r:r;r?rGr\rrr#r#s37#(3333"5"5"5"5H E E EHHH!C!C!C!CF$ * * *(((>>1A1A1A1A1Arr#ceZdZ dZdZdZdZejdej ej zZ dZ dZ dZd Zd Zdd Zd S)SimpleXMLRPCRequestHandler)/z/RPC2 /pydoc.cssixTz \s* ([^\s;]+) \s* #content-coding (;\s* q \s*=\s* ([0-9\.]+))? #q c(i}|jdd}|dD]^}|j|}|r@|d}|rt |nd}|||d<_|S)NzAccept-Encodingr`,g?rB)headersgetr aepatternmatchgroupfloat)r-raeer~vs raccept_encodingsz+SimpleXMLRPCRequestHandler.accept_encodingss  \  / 4 4# & &AN((++E &KKNN !*E!HHHs$%%++a..!rc0|jr|j|jvSdS)NT) rpc_pathsrMr<s ris_rpc_path_validz,SimpleXMLRPCRequestHandler.is_rpc_path_valids" > 9. .4rc |s|dS d}t|jd}g}|r\t ||}|j|}|sn/|||t|dz}|\d |}| |}|dS|j |t|dd|j}|d|dd|jyt||jkra|d d }|r7 t)|}|d d n#t*$rYnwxYw|d t-t|||j|dS#t4$r} |d t7|j dr||j jrp|dt-| t;j} t-| ddd} |d| |d d|Yd} ~ dSd} ~ wwxYw)Nizcontent-lengthrwrrG Content-typeztext/xmlgziprzContent-EncodingContent-lengthi_send_traceback_headerz X-exceptionASCIIbackslashreplacez X-traceback0) r report_404intr{minrfilereadrglenjoindecode_request_contentserverrSrrM send_response send_headerencode_thresholdrr|rNotImplementedErrorstr end_headerswfilewriterlrXr traceback format_excrJ) r-max_chunk_sizesize_remainingL chunk_sizechunkrKrPqrtraces rdo_POSTz"SimpleXMLRPCRequestHandler.do_POSTs %%''  OO    F9 ' *N .>!?@@NA  - @@   33#ae**, ! -88A;;D..t44D|{66'$ T::DIH$   s # # #   ^Z 8 8 8$0x==4#888--//33FA>>A!!'28'<'t $r|ddYnwxYw|dd|z|dd |dS) Nzcontent-encodingidentityrizencoding %r not supportedzerror decoding gzip contentrr) r{r|lowerrrr ValueErrorrr)r-rKr*s rrz1SimpleXMLRPCRequestHandler.decode_request_contents<##$6 CCIIKK z ! !K v   G"4(((& P P P""3(Ch(NOOOOO G G G""3(EFFFFF G   s$?($J K K K )3/// sA #B1BBc|dd}|dd|dtt|||j|dS)Nis No such pagerz text/plainr)rrrrrrrr-rPs rrz%SimpleXMLRPCRequestHandler.report_404*s 3" 666 )3s8}}+=+=>>>  """""r-cP |jjrtj|||dSdSr0)r logRequestsr log_request)r-codesizes rrz&SimpleXMLRPCRequestHandler.log_request3s:2 ; " A " .tT4 @ @ @ @ @ A ArN)rr)r5rqrrrrwbufsizedisable_nagle_algorithmrecompileVERBOSE IGNORECASEr}rrrrrrr\rrrtrts-IH"  "$bm!;==I   E'E'E'N"###AAAAAArrtc,eZdZ dZdZedddddfdZdS)SimpleXMLRPCServerTFNc||_t||||tj||||dSr0)rr#r. socketserver TCPServerr-addrrequestHandlerrr)r*bind_and_activater+s rr.zSimpleXMLRPCServer.__init__LsK'''j(DUVVV''dNDUVVVVVr)r5rqrrallow_reuse_addressrrtr.r\rrrr9sR #,F!ed#'5WWWWWWrrc8eZdZ edddddfdZdZdZddZdS) MultiPathXMLRPCServerTFNc vt||||||||i|_||_|pd|_dSr%)rr. dispatchersr)r*rs rr.zMultiPathXMLRPCServer.__init__]sQ ##D$ Z$,.?AR T T T$ +G rc||j|<|Sr0r)r-rM dispatchers radd_dispatcherz$MultiPathXMLRPCServer.add_dispatchergs!+rc|j|Sr0r)r-rMs rget_dispatcherz$MultiPathXMLRPCServer.get_dispatcherks%%rc * |j||||}nn#t$ra}tt dt |d||j|j}||jd}Yd}~nd}~wwxYw|S)NrBrDrErF) rrSrHrrrIr*r)rJ)r-rKrLrMrPrRs rrSz)MultiPathXMLRPCServer._marshaled_dispatchns K'-AA_d,,HH K K KaDIIIIss3444?DDDH t}6IJJHHHHHH Ks"% BAB  Brp)r5rqrrrtr.rrrSr\rrrrUsq-G!ed#'5,,,,&&&      rrc,eZdZ ddZdZdZddZdS) CGIXMLRPCRequestHandlerFNc@t||||dSr0)r#r.r,s rr.z CGIXMLRPCRequestHandler.__init__s#''j(DUVVVVVrct ||}tdtdt|zttjtjj|tjjdS)NzContent-Type: text/xmlContent-Length: %d)rSprintrsysstdoutflushbufferr)r- request_textrPs r handle_xmlrpcz%CGIXMLRPCRequestHandler.handle_xmlrpcs-++L99 &''' "S]]2333   ))) !!!!!rc d}tj|\}}tjj|||dz}|d}t d||fzt dtjjzt dt|zt tj tj j |tj j dS)Nr)rmessageexplainr&z Status: %d %szContent-Type: %sr)r responseshttprDEFAULT_ERROR_MESSAGErJrDEFAULT_ERROR_CONTENT_TYPErrrrrr)r-rrrrPs r handle_getz"CGIXMLRPCRequestHandler.handle_gets 1;DA;4     ??7++ ow/000  4;#IIJJJ "S]]2333   ))) !!!!!rc| |:tjdddkr|dS t tjdd}n#t t f$rd}YnwxYw|tj |}| |dS)NREQUEST_METHODGETCONTENT_LENGTHrw) osenvironr|rrr TypeErrorrstdinrr)r-rlengths rhandle_requestz&CGIXMLRPCRequestHandler.handle_requests    JNN+T 2 2e ; ; OO      RZ^^,eZdZ diiifdZdiiidfdZdZdZdS) ServerHTMLDocNc |p|j}g}d}tjd} |||} | sn| \} } ||||| | \} } }}}}| r<|| dd}|d|d|dn|r8d t|z}|d|d|| dn|r8d t|z}|d|d|| dn|| | dzd kr,|| ||||nD|r|d |zn)|| ||| }||||dd |S)NrzS\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\brB"z"z zz(https://www.rfc-editor.org/rfc/rfc%d.txtz!https://peps.python.org/pep-%04d/(zself.%sr`) escaperrsearchspanrggroupsreplacernamelinkr)r-textrr'classesrZriherepatternr~startendallschemerfcpepselfdotr3urls rmarkupzServerHTMLDoc.markups: F&4; *<== NN4..E %JE3 NN66$tEz"233 4 4 438<<>> 0Cc7D =fSkk))#x88SSSABBBB =@3s88KVVC[[[[IJJJJ =9CHHDVVC[[[[IJJJJc#a%iC''t}}T7E7KKLLLL =9D@AAAAt}}T7;;<<<D- . vvd455k**+++wwwrc |r|jpddz|z}d} d||d||d} t|rtt |} nd} t |t r|dp| } |dpd} ntj|} | | z| o| d | zz} | | |j |||}|od |z}d | d |d S)Nr`rz z z(...)rrBz'%sz
%s
z
z
z
) r5rrrr isinstancetuplerarbgreyr  preformat)r-objectr3modr'rrZclanchornotetitleargspec docstringdecldocs r docroutinezServerHTMLDoc.docroutines?I$*c1D8 KK    T!2!2!2!24 F   )F++,,GGG fe $ $ -Qi*7Gq RII V,,Iw$#A49984?,A,ABkk t~ugw@@2,s2-1TT33377rc  i}|D]\}}d|z||<||||<||}d|z}||}|||j|} | od| z} |d| zz}g} t |} | D]0\}}| ||||1||ddd | z}|S) Nz#-z)%sz %sz

%s

)r'Methods functionsr`) itemsrheadingr rrYrgr bigsectionr) r- server_namepackage_documentationrZfdictkeyvalueheadresultrcontents method_itemss r docserverzServerHTMLDoc.docserver s-?!--// & &JCE#J :E%LLkk+.. :[Hd##kk/GG)mc)-#--gmmoo.. & F FJC OODOOE3eODD E E E E$// {BGGH$5$5777 rc* d}d|z}d|d|d|dS)Nrvz1zI Python: z z zr\)r-rr(css_pathcss_links rpagezServerHTMLDoc.page$s=" ?   ',eeXXXxxx A Ar)r5rqrrr rr*r.r\rrrrszA"&b"b' ' ' ' R,0R8888:4 A A A A Arrc.eZdZ dZdZdZdZdZdS)XMLRPCDocGeneratorc0d|_d|_d|_dS)NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)r!server_documentation server_titler<s rr.zXMLRPCDocGenerator.__init__9s'9  !;rc ||_dSr0)r3)r-r3s rset_server_titlez#XMLRPCDocGenerator.set_server_titleAsF(rc ||_dSr0)r!)r-r!s rset_server_namez"XMLRPCDocGenerator.set_server_nameFsE&rc ||_dSr0)r2)r-r2s rset_server_documentationz+XMLRPCDocGenerator.set_server_documentationKsA$8!!!rc i}|D]}||jvr|j|}n|jddg}t|jdr|j||d<t|jdr|j||d<t |}|dkr|}nAt|jds) t|j|}n#t$r|}YnwxYw|} |||<t}| |j |j |}| tj|j|S)N_get_method_argstringrr_rBrprG)r9r'r(rXr;r_r rrrr*r!r2r.htmlrr3)r-rZr]rO method_info documenter documentations rgenerate_html_documentationz.XMLRPCDocGenerator.generate_html_documentationPs !2244 * *Kdj((K0*#Tl 4=*ABBV%)]%H%H%U%UKN4=-88L%)]%>%>{%K%KKN#K00 ,..(FF  << )-!9$(M$/"&"&*---!,-)FF $*GK "__ ",, $ 0 $ 9 ' t{4+<==}MMMsC$$ C32C3N)r5rqrrr.r5r7r9r@r\rrr0r02si ;;;))) ''' 999 1N1N1N1N1Nrr0ceZdZ dZdZdS)DocXMLRPCRequestHandlercFtjtjt}tj|ddd}t |d5}|cdddS#1swxYwYdS)Nz.. pydoc_dataz _pydoc.cssrb)mode)rrMdirnamerealpath__file__ropenr)r-r  path_herer,fps r_get_cssz DocXMLRPCRequestHandler._get_csssGOOBG$4$4X$>$>?? 7<< 4|LL ( & & & "7799                  s5BBBc> |s|dS|jdrd}||j}n.d}|jd}|d| dd|z| dtt|| |j |dS) Nz.cssztext/cssz text/htmlr&rz Content-Typez%s; charset=UTF-8r)rrrMendswithrMrr@rJrrrrrrr)r- content_typerPs rdo_GETzDocXMLRPCRequestHandler.do_GETs %%''  OO    F 9  f % % Q%L}}TY//HH&L{>>@@GGPPH 3 )<|)KLLL )3s8}}+=+=>>>  """""rN)r5rqrrrMrQr\rrrBrBs7 #####rrBc$eZdZ edddddfdZdS)DocXMLRPCServerTFNc |t||||||||t|dSr0)rr.r0rs rr.zDocXMLRPCServer.__init__sK ##D$ $.:K$5 7 7 7 ##D)))))r)r5rqrrrBr.r\rrrSrSs? -D!ed#'5******rrSceZdZ dZdZdS)DocCGIXMLRPCRequestHandlerc |d}tdtdt|zttjtjj|tjjdS)Nr&zContent-Type: text/htmlr) r@rJrrrrrrrrs rrz%DocCGIXMLRPCRequestHandler.handle_gets 3355<tjSr0)datetimenowr\rrgetCurrentTimez)ExampleService.currentTime.getCurrentTimes(,,...rN)r5rqrr staticmethodrdr\rr currentTimer`s-  / /\ / / /rrfN)r5rqrrr^rfr\rrr[r[sK    / / / / / / / / / /rr[) localhosti@c ||zSr0r\)xys rrks QqSradd)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 r<rrrrrrarfcntl ImportErrorrr!r#rtrrrrHTMLDocrr0rBrSrVr5rbr[rr4powr1r@r serve_foreverKeyboardInterruptexitr\rrrxseTHGGGGGGGGGGGGG......  LLLL EEE0444IAIAIAIAIAIAIAIAVPAPAPAPAPA!7PAPAPAdWWWWW//WWW8%%%%%.%%%N?-?-?-?-?-4?-?-?-JoAoAoAoAoAEMoAoAoAbONONONONONONONONb&#&#&#&#&#8&#&#&#P********** *****$;$6***4 zOOO////////  / 0 0 F  %%%  %888  !1!1d KKK++--- 6777 [\\\   " " " "     E; < < < CHQKKKKK                   sIAAAA6G F! G! GGGGGG