a  ze@sJddlZddlZddlZddlZddlZddlZddlZddlZ ddl m Z gdZ dZ dZdZdZdZd Zeejjd d ejjDZd Zd ZdZedjZedjZ edZ!edZ"hdZ#d?ddZ$Gdddej%j&Z'ddZ(e'fddZ)Gdddej*Z+Gdd d Z,z ddl-Z-Wne.yDYn0Gd!d"d"e,Z/e 0d"Gd#d$d$e1Z2Gd%d&d&e2Z3Gd'd(d(e2Z4Gd)d*d*e2Z5Gd+d,d,e2Z6Gd-d.d.e2Z7Gd/d0d0e2Z8Gd1d2d2e2Z9Gd3d4d4e9Z:Gd5d6d6e9Z;Gd7d8d8e9ZGd=d>d>e?e=Z@e2ZAdS)@N)urlsplit) HTTPResponseHTTPConnection HTTPException NotConnectedUnknownProtocolUnknownTransferEncodingUnimplementedFileModeIncompleteRead InvalidURLImproperConnectionStateCannotSendRequestCannotSendHeaderResponseNotReady BadStatusLine LineTooLongRemoteDisconnectederror responsesPiZUNKNOWNZIdlezRequest-startedz Request-sentcCsi|] }||jqS)phrase).0vrr?/opt/bitninja-python-dojo/embedded/lib/python3.9/http/client.py kriids[^:\s][^:\r\n]*s\n(?![ \t])|\r(?![ \t\n])z[- ]z[-]>ZPOSTPUTZPATCHdatac Csjz |dWStyd}z@t|j|j|j|jd|||j|j|fdWYd}~n d}~00dS)Nlatin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.)encodeUnicodeEncodeErrorencodingobjectstartendtitle)rnameerrrrr_encodes r*c@seZdZddZdS) HTTPMessagecCsj|d}t|}g}d}|D]@}|d||krBd}n|ddsVd}|r$||q$|S)N:r)lowerlenkeysisspaceappend)selfr(nZlstZhitlinerrrgetallmatchingheaderss   z!HTTPMessage.getallmatchingheadersN)__name__ __module__ __qualname__r6rrrrr+sr+cCsXg}|td}t|tkr&td||t|tkrHtdt|dvrqTq|S)Nr- header linezgot more than %d headers  r)readline_MAXLINEr/rr2 _MAXHEADERSr)fpheadersr5rrr _read_headerss    rCcCs,t|}d|d}tjj|d|S)Nr iso-8859-1)_class)rCjoindecodeemailparserZParserZparsestr)rArErBZhstringrrr parse_headerss rJcseZdZd@ddZddZddZd d Zd d Zfd dZfddZ ddZ ddZ dAddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&ZdBd(d)ZdCd*d+ZdDfd,d- Zd.d/Zd0d1Zd2d3ZdEd4d5Zd6d7Zd8d9Zd:d;Zdd?Z Z!S)FrrNcCsR|d|_||_||_d|_|_t|_t|_t|_ t|_ t|_ t|_ t|_ dS)Nrb)makefilerA debuglevel_methodrBmsg_UNKNOWNversionstatusreasonchunked chunk_leftlength will_close)r3sockrMmethodurlrrr__init__s  zHTTPResponse.__init__c Cst|jtdd}t|tkr*td|jdkrBtdt||sNt dz| dd\}}}WnBt yz| dd\}}d}Wnt yd}Yn0Yn0| d s| t|z$t|}|d ks|d krt|Wnt yt|Yn0|||fS) Nr-rDz status linerzreply:z-Remote end closed connection without responsezHTTP/ri)strrAr>r?r/rrMprintreprrsplit ValueError startswith _close_connrint)r3r5rQrRrSrrr _read_statuss2      zHTTPResponse._read_statusc Cs|jdurdS|\}}}|tkr&qHt|j}|jdkrDtd|~q||_|_| |_ |dvrnd|_ n| drd|_ nt |t|j|_|_|jdkr|jD]\}}td|d|q|jd }|r|d krd |_d|_nd |_||_d|_|jd }|r`|js`zt||_WntyJd|_Yn0|jdkrfd|_nd|_|tks|tksd|krdksn|jdkrd|_|js|js|jdurd |_dS)Nrzheaders:)zHTTP/1.0zHTTP/0.9 zHTTP/1. header:r,transfer-encodingrTTFcontent-lengthrHEAD)rBrfZCONTINUErCrArMr_coderRstriprSrQrcrrJrOitemsgetr.rTrU _check_closerWrVrerbZ NO_CONTENTZ NOT_MODIFIEDrN) r3rQrRrSZskipped_headershdrvalZtr_encrVrrrbegin9sd               zHTTPResponse.begincCsv|jd}|jdkr.|r*d|vr*dSdS|jdr>dS|rRd|vrRdS|jd}|rrd|vrrdSdS)N connectionrhcloseTFz keep-alivezproxy-connection)rBrqrQr.)r3connZpconnrrrrrs    zHTTPResponse._check_closecCs|j}d|_|dSN)rArw)r3rArrrrdszHTTPResponse._close_conncs2ztW|jr.|n|jr,|0dSry)superrwrArdr3 __class__rrrws   zHTTPResponse.closecst|jr|jdSry)rzflushrAr{r|rrr~s zHTTPResponse.flushcCsdS)NTrr{rrrreadableszHTTPResponse.readablecCs |jduSry)rAr{rrrisclosedszHTTPResponse.isclosedcCs|jdurdS|jdkr$|dS|durRt|}||}t|d|S|jr`|S|j durv|j }n4z| |j }Wnt y|Yn0d|_ ||SdS)Nrrmr) rArNrd bytearrayreadinto memoryviewtobytesrT_readall_chunkedrVread _safe_readr )r3amtbr4srrrrs*      zHTTPResponse.readcCs|jdurdS|jdkr$|dS|jr4||S|jdur^t||jkr^t|d|j}|j|}|s||r||n&|jdur|j|8_|js||S)Nrrm) rArNrdrT_readinto_chunkedrVr/rr)r3rr4rrrrs$       zHTTPResponse.readintocCsp|jtd}t|tkr$td|d}|dkrB|d|}z t|dWStyj|Yn0dS)Nr-z chunk size;r) rAr>r?r/rfindrerbrd)r3r5irrr_read_next_chunk_sizes     z"HTTPResponse._read_next_chunk_sizecCs:|jtd}t|tkr$td|s*q6|dvrq6qdS)Nr-z trailer liner;)rAr>r?r/rr3r5rrr_read_and_discard_trailers z&HTTPResponse._read_and_discard_trailercCsj|j}|sf|dur|dz |}WntyBtdYn0|dkr`||d}||_|S)Nr\rr)rUrrrbr rrd)r3rUrrr_get_chunk_left$s   zHTTPResponse._get_chunk_leftcCs`g}z6|}|durq0|||d|_qd|WStyZtd|Yn0dSNrr)rr2rrUrFr )r3valuerUrrrr<s  zHTTPResponse._readall_chunkedcCsd}t|}zv|}|dur$|WSt||krN||}|||_||WS|d|}||}||d}||7}d|_qWn&tytt|d|Yn0dSNr)rrr/_safe_readintorUr bytes)r3r total_bytesmvbrUr4temp_mvbrrrrJs"         zHTTPResponse._readinto_chunkedcCsTg}|dkrJ|jt|t}|s2td|||||t|8}qd|Sr)rArmin MAXAMOUNTr rFr2r/)r3rrchunkrrrrbs zHTTPResponse._safe_readcCsd}t|}|t|kr~tt|kr>|dt}|j|}n |j|}|shtt|d|t|||d}||7}q |Sr)rr/rrArr r)r3rrrrr4rrrrys      zHTTPResponse._safe_readintocCs|jdus|jdkrdS|jr(||S|jdurJ|dksD||jkrJ|j}|j|}|sh|rh|n|jdur|jt|8_|SNrmrr)rArNrT_read1_chunkedrVread1rdr/)r3r4resultrrrrs    zHTTPResponse.read1cCs4|jdus|jdkrdS|jr(||S|j|S)Nrmr)rArNrT _peek_chunkedpeek)r3r4rrrrs  zHTTPResponse.peekcs|jdus|jdkrdS|jr*t|S|jdurL|dksF||jkrL|j}|j|}|sj|rj|n|jdur|jt|8_|Sr)rArNrTrzr>rVrdr/)r3limitrr|rrr>s    zHTTPResponse.readlinecCsd|}|dus|dkrdSd|kr0|ks6n|}|j|}|jt|8_|s`td|Sr)rrArrUr/r )r3r4rUrrrrrs zHTTPResponse._read1_chunkedcCsBz |}Wnty YdS0|dur.dS|j|d|S)Nr)rr rAr)r3r4rUrrrrs  zHTTPResponse._peek_chunkedcCs |jSry)rAfilenor{rrrrszHTTPResponse.filenocCsF|jdurt|j|p|}t|ts4t|ds8|Sd|SdS)N__iter__z, )rBrZget_all isinstancer^hasattrrF)r3r(defaultrBrrr getheaders zHTTPResponse.getheadercCs|jdurtt|jSry)rBrlistrpr{rrr getheaderss zHTTPResponse.getheaderscCs|Sryrr{rrrrszHTTPResponse.__iter__cCs|jSry)rBr{rrrinfoszHTTPResponse.infocCs|jSry)rZr{rrrgeturls zHTTPResponse.geturlcCs|jSry)rRr{rrrgetcodeszHTTPResponse.getcode)rNN)N)r)r)r)N)"r7r8r9r[rfrurrrdrwr~rrrrrrrrrrrrrr>rrrrrrrrr __classcell__rrr|rrs< !H  "     rc@s eZdZdZdZeZeZdZ dZ e ddZ e ddZ d ejd d fd d Zd7d dZddZddZddZddZddZddZddZddZd8d d!Zd9d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d:dd.d/d0Z!d ifdd.d1d2Z"d3d4Z#d5d6Z$d S);rrhzHTTP/1.1r-rcCs t|tjSry)rio TextIOBase)streamrrr _is_textIO%szHTTPConnection._is_textIOcCsd|dur|tvrdSdSt|dr*dSzt|}|jWStyLYn0t|tr`t|SdS)Nrr) upper_METHODS_EXPECTING_BODYrrnbytes TypeErrorrr^r/)bodyrYmvrrr_get_content_length+s    z"HTTPConnection._get_content_lengthN cCsn||_||_||_d|_g|_d|_t|_d|_d|_ d|_ i|_ | ||\|_ |_||j tj|_dSry)timeoutsource_address blocksizerX_buffer_HTTPConnection__response_CS_IDLE_HTTPConnection__staterN _tunnel_host _tunnel_port_tunnel_headers _get_hostporthostport_validate_hostsocketcreate_connection_create_connection)r3rrrrrrrrr[Ks zHTTPConnection.__init__cCs<|jrtd|||\|_|_|r.||_n |jdS)Nz.Can't set up tunnel for established connection)rX RuntimeErrorrrrrclear)r3rrrBrrr set_tunnelas zHTTPConnection.set_tunnelcCs|dur|d}|d}||krzt||dd}WnFty||dddkrf|j}ntd||ddYn0|d|}n|j}|r|ddkr|ddkr|dd}||fS) Nr,]r-r]znonnumeric port: '%s'r[r)rfindrerb default_portr )r3rrrjrrrrys    zHTTPConnection._get_hostportcCs ||_dSry)rM)r3levelrrrset_debuglevelszHTTPConnection.set_debuglevelc Cs d|jd|jf}|g}|jD]$\}}||d|ddq&|d|d|~|j|j |j d}| \}}}|t j jkr|td |d ||jtd } t| tkrtd | sq| d vrq|jdkrtd| qdS)NsCONNECT %s:%d HTTP/1.0 asciiz:  r r<rrYzTunnel connection failed:  r-r:r;rri)rr!rrrpr2sendrFresponse_classrXrNrfhttp HTTPStatusZOKrwOSErrorrorAr>r?r/rrMr_rG) r3connectrBheaderrresponserQrnmessager5rrr_tunnels.    zHTTPConnection._tunnelc Csz||j|jf|j|j|_z|jtjtj dWn2t yf}z|j t j krRWYd}~n d}~00|j rv|dS)Nr-)rrrrrrX setsockoptr IPPROTO_TCP TCP_NODELAYrerrnoZ ENOPROTOOPTrrr3errrrs zHTTPConnection.connectcCsZt|_z4|j}|r d|_|W|j}|rVd|_|n|j}|rTd|_|0dSry)rrrXrwr)r3rXrrrrrws  zHTTPConnection.closecCs|jdur |jr|nt|jdkr8tdt|t|dr|jdkrTtd||}|rt|jdkrttd| |j }|sq|r| d}|j |qtdSz|j |WnHt yt|tjjr|D]}|j |qnt dt|Yn0dS)Nrzsend:rsendIng a read()ableencoding file using iso-8859-1rDz9data should be a bytes-like object or an iterable, got %r)rX auto_openrrrMr_r`rrrrr!sendallrr collectionsabcIterabletype)r3rr! datablockdrrrrs8         zHTTPConnection.sendcCs|j|dSry)rr2)r3rrrr_outputszHTTPConnection._outputccs^|jdkrtd||}|r2|jdkr2td||j}|sDqZ|rR|d}|Vq2dS)NrrrrD)rMr_rrrr!)r3rr!rrrr_read_readables    zHTTPConnection._read_readableFc Cs|jdd|j}|jdd=|||durt|drN||}nVz t|WnBtyz t|}Wn"tytdt |Yn0Yn0|f}|D]R}|s|j dkrt dq|r|j dkrt |dd d |d}||q|r|j dkr|d dS) N)rrr<rzAmessage_body should be a bytes-like object or an iterable, got %rrzZero length chunk ignoredrhXrrs0 )rextendrFrrrrriterrrMr_ _http_vsnr/r!)r3 message_bodyencode_chunkedrOchunksrrrr _send_outputs:             zHTTPConnection._send_outputc Cs|jr|jrd|_|jtkr(t|_n t|j||||_|pHd}||d|||j f}| | ||j dkr|sd}| drt|\}}}}}|rz|d}Wnty|d}Yn0|d|n|jr|j} |j} n |j} |j} z| d} Wnty0| d} Yn0| d d krNd | d } | |jkrh|d| n| d} |dd | | f|s|ddndS)N/z%s %s %srhr]rrZidnaZHostr,r[]z%s:%szAccept-Encodingidentity)rrrr_CS_REQ_STARTEDr _validate_methodrN_validate_path _http_vsn_strr_encode_requestrrcrr!r" putheaderrrrrrrrG) r3rYrZ skip_hostskip_accept_encodingrequestnetlocnilZ netloc_encrrZhost_encrrr putrequest=sP             zHTTPConnection.putrequestcCs |dS)Nr)r!)r3rrrrr szHTTPConnection._encode_requestcCs,t|}|r(td|d|ddS)Nz)method can't contain control characters.  (found at least ))$_contains_disallowed_method_pchar_researchrbgroup)r3rYmatchrrrrs zHTTPConnection._validate_methodcCs,t|}|r(td|d|ddSNz&URL can't contain control characters. rr!_contains_disallowed_url_pchar_rerr r)r3rZrrrrrs   zHTTPConnection._validate_pathcCs,t|}|r(td|d|ddSrr)r3rrrrrrs   zHTTPConnection._validate_hostcGs|jtkrtt|dr$|d}t|s:td|ft|}t|D]\\}}t|drl|d||<nt |t rt |d||<t ||rJtd||fqJd |}|d|}||dS)Nr!rzInvalid header name %rr zInvalid header value %rs s: )rrrrr!_is_legal_header_namerbr enumeraterrer^_is_illegal_header_valuerFr)r3rvaluesrZ one_valuerrrrr s"        zHTTPConnection.putheaderrcCs*|jtkrt|_nt|j||ddS)Nr)rr _CS_REQ_SENTrr)r3rrrrr endheaderss zHTTPConnection.endheaderscCs||||||dSry) _send_request)r3rYrZrrBrrrrrszHTTPConnection.requestc Cstdd|D}i}d|vr&d|d<d|vr6d|d<|j||fi|d|vrd |vrd }|||}|dur|dur|jd krtd |d }|ddq|dt|nd }|D]\} } || | qt|trt |d}|j ||ddS)Ncss|]}|VqdSry)r.)rkrrr rz/HTTPConnection._send_request..rr-r zaccept-encodingr rkrjFrzUnable to determine size of %rTzTransfer-EncodingrTzContent-Lengthrr) frozensetrrrMr_r r^rprr*r!) r3rYrZrrBrZ header_namesZskipsZcontent_lengthrsrrrrr"s0      zHTTPConnection._send_requestcCs|jr|jrd|_|jtks&|jr0t|j|jdkrR|j|j|j|jd}n|j|j|jd}zLz | Wnt y| Yn0t |_|j r| n||_|WS| Yn0dS)Nrr)rrrr rrMrrXrNruConnectionErrorrwrrW)r3rrrr getresponse5s.      zHTTPConnection.getresponse)NN)NF)FF)N)%r7r8r9rr rr HTTP_PORTrrrM staticmethodrrr_GLOBAL_DEFAULT_TIMEOUTr[rrrrrrwrrrrrr rrrr r!rr"r'rrrrrsJ     & 6    .rcsDeZdZeZdddejdfddddfdd ZfddZZ S)HTTPSConnectionNr)contextcheck_hostnamerc stt|j||||| d|dus2|dus2|durHddl} | dtd||_||_|durtt }|j durtd|_ |j tj k} |dur|j }|r| std|s|r||||j durd|_ ||_|dur||j_ dS)N)rrzTkey_file, cert_file and check_hostname are deprecated, use a custom context instead.r\TzMcheck_hostname needs a SSL context with either CERT_OPTIONAL or CERT_REQUIRED)rzr+r[warningswarnDeprecationWarningkey_file cert_filesslZ_create_default_https_contextZpost_handshake_authZ verify_modeZ CERT_NONEr-rbZload_cert_chain_context) r3rrr1r2rrr,r-rr.Z will_verifyr|rrr[s:    zHTTPSConnection.__init__cs6t|jr|j}n|j}|jj|j|d|_dS)N)server_hostname)rzrrrr4Z wrap_socketrX)r3r5r|rrrs  zHTTPSConnection.connect) r7r8r9 HTTPS_PORTrrr*r[rrrrr|rr+ys$r+c@s eZdZdS)rNr7r8r9rrrrrsrc@s eZdZdS)rNr7rrrrrsrc@s eZdZdS)r Nr7rrrrr sr c@seZdZddZdS)rcCs|f|_||_dSry)argsrQ)r3rQrrrr[szUnknownProtocol.__init__Nr7r8r9r[rrrrrsrc@s eZdZdS)rNr7rrrrrsrc@s eZdZdS)r Nr7rrrrr sr c@s$eZdZdddZddZejZdS)r NcCs|f|_||_||_dSry)r8partialexpected)r3r:r;rrrr[szIncompleteRead.__init__cCs2|jdurd|j}nd}d|jjt|j|fS)Nz, %i more expectedr]z%s(%i bytes read%s))r;r}r7r/r:rrrr__repr__s    zIncompleteRead.__repr__)N)r7r8r9r[r<r$__str__rrrrr s r c@s eZdZdS)r Nr7rrrrr sr c@s eZdZdS)r Nr7rrrrr sr c@s eZdZdS)rNr7rrrrrsrc@s eZdZdS)rNr7rrrrrsrc@seZdZddZdS)rcCs|s t|}|f|_||_dSry)r`r8r5rrrrr[szBadStatusLine.__init__Nr9rrrrrsrc@seZdZddZdS)rcCst|dt|fdS)Nz&got more than %d bytes when reading %s)rr[r?)r3Z line_typerrrr[szLineTooLong.__init__Nr9rrrrrsrc@seZdZddZdS)rcOs(t|dtj|g|Ri|dS)Nr])rr[ConnectionResetError)r3poskwrrrr[s zRemoteDisconnected.__init__Nr9rrrrrsr)r)BZ email.parserrHZ email.messagerrrrercollections.abcr urllib.parser__all__r(r6rPrrr globalsupdater __members__rrrr?r@compile fullmatchrrrrrrr*rZMessager+rCrJBufferedIOBaserrr3 ImportErrorr+r2 Exceptionrrr rrr r r r rrrrr>rrrrrrGsx       .] 8