U if @sbddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZz ddlZWnek rdZYnXddZdejdd Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gddde"Z#Gddde#Z$Gddde#Z%Gddde#Z&e'Z(Z)edddZ*e*+dd krFd!d"Z,n"e*+d#d kr`d$d"Z,nd%d"Z,[*d&d'Z-Gd(d)d)Z.d*d+Z/d,d-Z0Gd.d/d/Z1d0d1Z2e.e1fZ3Gd2d3d3Z4Gd4d5d5Z5Gd6d7d7Z6Gd8d9d9Z7Gd:d;d;Z8GddZdCdDZ?dEdFZ@d[dHdIZAGdJdKdKerTejBneCZDGdLdMdMZEGdNdOdOZFGdPdQdQeFZGGdRdSdSZHeHZIeJdTkr^eHdUZKzeLeKjMNWn.e#k rZOzeLdVeOW5dZO[OXYnXe9eKZPePQePRd dWePSdd zePD]ZTeLeTqWn.e#k r\ZOzeLdVeOW5dZO[OXYnXdS)\N)datetime)Decimal)expat)BytesIOcCs$|dd}|dd}|ddS)N&z&z>)replace)sr 2/opt/alt/python38/lib64/python3.8/xmlrpc/client.pyescapes  r z%d.%diiiDii ipiԁiCiBiiic@seZdZejZdS)ErrorN)__name__ __module__ __qualname__object__str__r r r r rsrc@seZdZddZddZdS) ProtocolErrorcCs&t|||_||_||_||_dSN)r__init__urlerrcodeerrmsgheaders)selfrrrrr r r rs  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>) __class__rrrrrr r r __repr__szProtocolError.__repr__Nrrrrrr r r r rsrc@s eZdZdS) ResponseErrorN)rrrr r r r r!sr!c@seZdZddZddZdS)FaultcKst|||_||_dSr)rr faultCode faultString)rr#r$Zextrar r r rs zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr#r$rr r r rszFault.__repr__Nr r r r r r"sr"z%YZ0001cCs |dSN%Y%m%dT%H:%M:%Sstrftimevaluer r r _iso8601_format sr,z%4YcCs |dS)Nz%4Y%m%dT%H:%M:%Sr(r*r r r r,scCs|ddS)Nr')r)zfillr*r r r r,scCsLt|trt|St|ttjfs<|dkr2t}t|}d|ddS)Nrz%04d%02d%02dT%02d:%02d:%02d) isinstancerr,tupletime struct_time localtimer*r r r _strftimes  r5c@sneZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)DateTimercCs t|tr||_n t||_dSr)r0strr+r5)rr+r r r r(s zDateTime.__init__cCst|tr|j}|j}nzt|tr2|j}t|}n`t|trH|j}|}nJt|drd|}|}n.t|drv|jj p|t |}t d|jj |f||fS)N timetuplerzCan't compare %s and %s) r0r6r+rr,r7hasattrr8rrtype TypeError)rotherr oZotyper r r make_comparable.s*        zDateTime.make_comparablecCs||\}}||kSrr>rr<r r=r r r __lt__CszDateTime.__lt__cCs||\}}||kSrr?r@r r r __le__GszDateTime.__le__cCs||\}}||kSrr?r@r r r __gt__KszDateTime.__gt__cCs||\}}||kSrr?r@r r r __ge__OszDateTime.__ge__cCs||\}}||kSrr?r@r r r __eq__SszDateTime.__eq__cCst|jdSr&)r2strptimer+rr r r r8WszDateTime.timetuplecCs|jSrr*rr r r r_szDateTime.__str__cCsd|jj|jt|fS)Nz<%s %r at %#x>)rrr+idrr r r rbszDateTime.__repr__cCst||_dSr)r7stripr+rdatar r r decodeeszDateTime.decodecCs$|d||j|ddSNzz )writer+)routr r r encodehs  zDateTime.encodeN)r)rrrrr>rArBrCrDrEr8rrrKrOr r r r r6"s r6cCst}|||Sr)r6rKrJr+r r r _datetimems rQcCs t|dSr&)rrF)rJr r r _datetime_typessrRc@s6eZdZd ddZddZddZdd Zd d ZdS) BinaryNcCs>|dkrd}n&t|ttfs,td|jjt|}||_dS)Nz#expected bytes or bytearray, not %s)r0bytes bytearrayr;rrrJrIr r r rszBinary.__init__cCs t|jdS)Nzlatin-1)r7rJrr r r rszBinary.__str__cCst|tr|j}|j|kSr)r0rSrJ)rr<r r r rEs z Binary.__eq__cCst||_dSr)base64 decodebytesrJrIr r r rKsz Binary.decodecCs4|dt|j}||d|ddSNz asciiz )rMrW encodebytesrJrK)rrNencodedr r r rOs  z Binary.encode)N)rrrrrrErKrOr r r r rS|s  rScCst}|||Sr)rSrKrPr r r _binarys r]c@s$eZdZddZddZddZdS) ExpatParsercCsDtdd|_}||_|j|_|j|_|j|_ d}| |ddSr) rZ ParserCreate_parser_targetstartZStartElementHandlerendZEndElementHandlerrJZCharacterDataHandlerxml)rtargetparserencodingr r r rszExpatParser.__init__cCs|j|ddSNr)r_ParserIr r r feedszExpatParser.feedcCs8z |j}Wntk rYnX|`|`|dddS)NrTT)r_AttributeErrorr`rh)rrer r r closes  zExpatParser.closeN)rrrrrirkr r r r r^s r^c@seZdZdddZiZddZddZd d Zeeed<d d Z e ee <d dZ e ee <e Z ddZeee<efddZeee<ddZeee<eee<ddZeee<eee<efddZeee<ddZeee<ddZeee<eee<eed<dS) MarshallerNFcCsi|_d|_||_||_dSr)memorJrf allow_none)rrfrnr r r rszMarshaller.__init__cCsg}|j}|j}t|tr@|d||j|jd||dn4|d|D]}|d||||dqL|dd|}|S) Nz )r#r$z z z z z )append_Marshaller__dumpr0r"r#r$join)rvaluesrNrMdumpvresultr r r dumpss&     zMarshaller.dumpscCsz|jt|}Wnftk rxt|ds)rnr;rr+rMr r r dump_nil szMarshaller.dump_nilcCs$|d||rdpd|ddS)Nz10z r rr r r dump_boolszMarshaller.dump_boolcCs<|tks|tkrtd|d|tt||ddS)Nzint exceeds XML-RPC limitsz z )MAXINTMININT OverflowErrorr7intrr r r dump_longs zMarshaller.dump_longcCs |d|t||ddS)Nzz )reprrr r r dump_double$s zMarshaller.dump_doublecCs |d||||ddS)Nzz r )rr+rMr r r r dump_unicode*s zMarshaller.dump_unicodecCs,|dt|}||d|ddSrY)rWr[rK)rr+rMr\r r r dump_bytes0s zMarshaller.dump_bytescCsZt|}||jkrtdd|j|<|j}|d|D]}|||q6|d|j|=dS)Nz"cannot marshal recursive sequencesz z )rGrmr;rq)rr+rMirtrur r r dump_array8s   zMarshaller.dump_arraycCst|}||jkrtdd|j|<|j}|d|D]D\}}|dt|ts\td|d||||||dq:|d|j|=dS)Nz%cannot marshal recursive dictionariesz z zdictionary key must be stringz%s z z )rGrmr;rqitemsr0r7)rr+rMr rrtkrur r r dump_structFs     zMarshaller.dump_structcCs |d|t||ddSrL)r5rr r r dump_datetimeXs zMarshaller.dump_datetimecCs2|jtkr ||_|||`n||j|dSr)rWRAPPERSrMrOrrxrr r r dump_instance^s   zMarshaller.dump_instancery)NF) rrrrrzrwrqrr:rboolrrZdump_intrfloatr rr7rrUrVrr1listrdictrrrr6rSr r r r rls:      rlc@sjeZdZdDddZddZddZdd Zd d Zd d ZddZ ddZ iZ ddZ e e d<ddZ e e d<ddZee d<ee d<ee d<ee d<ee d<ee d<d d!Zee d"<ee d#<d$d%Zee d&<d'd(Zee d)<ee d*<d+d,Zee d-<d.d/Zee d0<d1d2Zee d3<d4d5Zee d6<d7d8Zee d9<d:d;Zee d<<d=d>Zee d?<d@dAZee dB<dCS)E UnmarshallerFcCsHd|_g|_g|_g|_d|_d|_d|_|jj|_|p:||_||_ dS)NFutf-8) _type_stack_marks_data_value _methodname _encodingrp _use_datetime _use_bytes)r use_datetimeuse_builtin_typesr r r r~s  zUnmarshaller.__init__cCs:|jdks|jrt|jdkr0tf|jdt|jS)Nfaultr)rrr!r"rr1rr r r rks  zUnmarshaller.closecCs|jSr)rrr r r getmethodnameszUnmarshaller.getmethodnamecCs ||_dSr)r)rrfZ standaloner r r rcszUnmarshaller.xmlcCshd|kr|dd}|dks&|dkr8|jt|jg|_|jrZ||jkrZtd||dk|_dS)N:arraystructzunknown tag %rr+) splitrrplenrrrrzr!)rtagZattrsr r r ras zUnmarshaller.startcCs|j|dSr)rrp)rtextr r r rJszUnmarshaller.datac Csvz|j|}WnTtk rbd|kr,YdSz|j|dd}Wntk r\YYdSXYnX||d|jS)Nrrro)rzr{rrrr)rrr~r r r rbszUnmarshaller.endc Csnz|j|}WnTtk rbd|kr,YdSz|j|dd}Wntk r\YYdSXYnX|||S)Nrr)rzr{r)rrrJr~r r r end_dispatchszUnmarshaller.end_dispatchcCs|dd|_dSrg)rprrIr r r end_nils zUnmarshaller.end_nilZnilcCs:|dkr|dn|dkr(|dntdd|_dS)NrFrTzbad boolean valuer)rpr;rrIr r r end_booleans   zUnmarshaller.end_booleanbooleancCs|t|d|_dSrg)rprrrIr r r end_intszUnmarshaller.end_intZi1Zi2Zi4Zi8rZ bigintegercCs|t|d|_dSrg)rprrrIr r r end_doubleszUnmarshaller.end_doubleZdoublercCs|t|d|_dSrg)rprrrIr r r end_bigdecimalszUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr||j}||d|_dSrg)rrKrprrIr r r end_strings  zUnmarshaller.end_stringstringnamecCs.|j}|j|dg|j|d<d|_dSrg)rpoprr)rrJmarkr r r end_arrays zUnmarshaller.end_arrayrcCs`|j}i}|j|d}tdt|dD]}||d|||<q,|g|j|d<d|_dS)Nrrr%)rrrrangerr)rrJrrrrr r r end_structs zUnmarshaller.end_structrcCs6t}||d|jr"|j}||d|_dS)NrZr)rSrKrOrrJrprrrJr+r r r end_base64 s  zUnmarshaller.end_base64rWcCs,t}|||jrt|}||dSr)r6rKrrRrprr r r end_dateTimes  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr||dSr)rrrIr r r end_valueszUnmarshaller.end_valuer+cCs d|_dS)NparamsrrIr r r end_params"szUnmarshaller.end_paramsrcCs d|_dS)NrrrIr r r end_fault&szUnmarshaller.end_faultrcCs"|jr||j}||_d|_dS)N methodName)rrKrrrIr r r end_methodName*s zUnmarshaller.end_methodNamerN)FF)rrrrrkrrcrarJrbrrzrrrrrrrrrrrrrrr r r r rrsX   rc@s$eZdZddZddZddZdS)_MultiCallMethodcCs||_||_dSr)_MultiCallMethod__call_list_MultiCallMethod__name)rZ call_listrr r r r7sz_MultiCallMethod.__init__cCst|jd|j|fSNz%s.%s)rrrrrr r r __getattr__:sz_MultiCallMethod.__getattr__cGs|j|j|fdSr)rrprrargsr r r __call__<sz_MultiCallMethod.__call__Nrrrrrrr r r r r4src@seZdZddZddZdS)MultiCallIteratorcCs ||_dSr)results)rrr r r rCszMultiCallIterator.__init__cCsR|j|}t|tikr.t|d|dn t|tgkrF|dStddS)Nr#r$rz#unexpected type in multicall result)rr:r" ValueError)rritemr r r __getitem__Fs  zMultiCallIterator.__getitem__N)rrrrrr r r r r?src@s,eZdZddZddZddZddZd S) MultiCallcCs||_g|_dSr)_MultiCall__server_MultiCall__call_list)rserverr r r r`szMultiCall.__init__cCsd|jjt|fS)Nz <%s at %#x>)rrrGrr r r rdszMultiCall.__repr__cCs t|j|Sr)rrrr r r rgszMultiCall.__getattr__cCs6g}|jD]\}}|||dq t|jj|S)N)rr)rrprrsystemZ multicall)rZmarshalled_listrrr r r rjszMultiCall.__call__N)rrrrrrrr r r r rOsrFcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t}t|}n"t||d}trbt|}nt |}||fS)NTFrr) FastParserFastUnmarshallerrRrWrXr]rQr"rr^)rrZ mkdatetimeZmkbytesrdrer r r getparser|s    rcCst|trd}n|rt|tr|s&d}tr4t|}n t||}||}|dkr^dt|}nd}|rx|d|d|df}n|r|d|d f}n|Sd |S) Nr%rz$ z z z z z z ro)r0r"r1FastMarshallerrlrwr7rr)r methodnameZmethodresponserfrnmrJZ xmlheaderr r r rws8    rwcCs2t||d\}}|||||fSNr)rrirkr)rJrrpur r r loadss  rc Cs<tstt}tjd|dd}||W5QRX|S)Nwbr%)modefileobjZ compresslevel)gzipNotImplementedErrorrGzipFilerMgetvalue)rJr~gzfr r r gzip_encodes r@c Cststtjdt|dH}z$|dkr0|}n||d}Wntk r\tdYnXW5QRX|dkrt||krtd|S)Nrbrrrr%z invalid dataz#max gzipped payload length exceeded)rrrrreadOSErrorrr)rJZ max_decoderZdecodedr r r gzip_decodes rc@seZdZddZddZdS)GzipDecodedResponsecCs.tstt||_tjj|d|jddS)Nrr)rrrriorr)rresponser r r r:szGzipDecodedResponse.__init__cCs"ztj|W5|jXdSr)rrkrrrr r r rkBszGzipDecodedResponse.closeN)rrrrrkr r r r r6src@s$eZdZddZddZddZdS)_MethodcCs||_||_dSr _Method__send _Method__name)rsendrr r r rOsz_Method.__init__cCst|jd|j|fSr)rrrrr r r rRsz_Method.__getattr__cGs||j|Srrrr r r rTsz_Method.__call__Nrr r r r rLsrc@seZdZdeZdZdZdddddZdd d Zdd d Z d dZ ddZ ddZ ddZ ddZddZddZddZdS) TransportzPython-xmlrpc/%sTNFr )rcCs&||_||_d|_t||_g|_dSN)NN)r_use_builtin_types _connectionr_headers_extra_headers)rrrrr r r rks  zTransport.__init__c CsdD]v}z|||||WStjjk r<|r8Yqtk rx}z |sf|jtjtjtjfkrhW5d}~XYqXqdS)N)rr%) single_requesthttpclientZRemoteDisconnectedrerrnoZ ECONNRESETZ ECONNABORTEDZEPIPE)rhosthandler request_bodyverboserer r r request}szTransport.requestcCsz8|||||}|}|jdkr6||_||WSWn2tk rNYntk rj|YnX|ddr| t |||j|j t | dS)Nzcontent-lengthro) send_requestZ getresponseZstatusr parse_responser" Exceptionrk getheaderrrreasonrZ getheaders)rr r r r Z http_connZrespr r r rs&   zTransport.single_requestcCst|j|jdSr)rrrrr r r rszTransport.getparsercCsri}t|tr|\}}tj|\}}|rdtj|}t|d}d | }dd|fg}ng}|||fS)NrroZ AuthorizationzBasic ) r0r1urllibparseZ _splituserZunquote_to_bytesrWr[rKrrr)rr x509ZauthZ extra_headersr r r get_host_infos   zTransport.get_host_infocCsL|jr||jdkr|jdS||\}|_}|tj|f|_|jdS)Nrr%)rrrrrZHTTPConnectionrr Zchostrr r r make_connections  zTransport.make_connectioncCs |j\}}|rd|_|dSr)rrk)rr  connectionr r r rks zTransport.closecCs||}|j|j}|r$|d|jrJtrJ|jd|dd|dn |d||d|d|jf| ||| |||S)Nr%ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr)z Content-Typeztext/xmlz User-Agent) rrrZset_debuglevelaccept_gzip_encodingrZ putrequestrp user_agent send_headers send_content)rr r r debugrrr r r rs         zTransport.send_requestcCs|D]\}}|||qdSr) putheader)rrrkeyvalr r r rs zTransport.send_headerscCsR|jdk r0|jt|kr0tr0|ddt|}|dtt|||dS)NContent-EncodingrzContent-Length)encode_thresholdrrr!rr7Z endheaders)rrr r r r rs   zTransport.send_contentcCst|dr*|dddkr$t|}q.|}n|}|\}}|d}|sJqj|jr^tdt|||q:||k rz| | | S)Nrr$rorizbody:) r9rrrrr printrrirk)rrstreamrrrJr r r r$s      zTransport.parse_response)FF)F)F)rrr __version__rrr%rrrrrrrkrrrrr r r r r]s   ! rcs.eZdZd dddfdd ZddZZS) SafeTransportFr Nrcontextcstj|||d||_dS)Nrrr)superrr+)rrrrr+rr r rEs zSafeTransport.__init__cCst|jr||jdkr|jdSttjds2td||\}|_}|tjj|dfd|ji|p`if|_|jdS)Nrr%HTTPSConnectionz1your version of http.client doesn't support HTTPSr+) rr9rrrrrr/r+rr r r rNs    zSafeTransport.make_connection)FF)rrrrr __classcell__r r r.r r)Bs  r)c@sVeZdZddddddZddZd d Zd d Zd dZddZddZ ddZ dS) ServerProxyNFr r*c Cstj|\} }| dkr tdtj|\|_|_|js@d|_|dkr|| dkr^t} d| i} nt} i} | f|||d| }||_ |pd|_ ||_ ||_ dS)N)rhttpszunsupported XML-RPC protocolz/RPC2r2r+r,r) rrZ _splittyperZ _splithost_ServerProxy__host_ServerProxy__handlerr)r_ServerProxy__transport_ServerProxy__encoding_ServerProxy__verbose_ServerProxy__allow_none) rZuri transportrfr rnrrrr+r:r Z extra_kwargsr r r rs,  zServerProxy.__init__cCs|jdSr)r5rkrr r r Z__closeszServerProxy.__closecCsPt|||j|jd|jd}|jj|j|j||jd}t |dkrL|d}|S)N)rfrnxmlcharrefreplace)r r%r) rwr6r8rOr5rr3r4r7r)rrrrrr r r Z __requests  zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrr3r4rr r r rszServerProxy.__repr__cCs t|j|Sr)r_ServerProxy__requestrr r r rszServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|fdS)Nrkr9zAttribute %r not found)_ServerProxy__closer5rj)rattrr r r rs zServerProxy.__call__cCs|Srr rr r r __enter__szServerProxy.__enter__cGs |dSr)r<rr r r __exit__szServerProxy.__exit__)NNFFFF) rrrrr<r;rrrr>r?r r r r r1ms  r1__main__zhttp://localhost:8000ZERROR )FF)NNNF)FF)r)UrWsysr2rdecimalrZ http.clientrZ urllib.parserZ xml.parsersrrrrr ImportErrorr version_infor(rrZ PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORrrrr!r"rrZBooleanZ_day0r)r,r5r6rQrRrSr]rr^rlrrrrrrrrrwrrrrrrrrr)r1ZServerrrr&Z currentTimeZgetCurrentTimeruZmultiZgetDatapowaddrr r r r s           K #!(C %  ' K  f+h