a  zeT@sddlmZmZmZddlmZddlZddlZddlZgdZ gdZ gdZ dd Z hd j Zd d Zd dZGdddZGdddeZGdddeZGdddeZGdddeZdS)) FileWrapper guess_scheme is_hop_by_hop)HeadersN) BaseHandler SimpleHandlerBaseCGIHandler CGIHandler IISCGIHandler read_environ)ZMonZTueZWedZThuZFriZSatZSun) NZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecc Cs:t|\ }}}}}}}}} dt||t|||||fS)Nz#%s, %02d %3s %4d %02d:%02d:%02d GMT)timegmtime _weekdayname _monthname) Z timestampZyearZmonthZdayZhhZmmssZwdyzrD/opt/bitninja-python-dojo/embedded/lib/python3.9/wsgiref/handlers.pyformat_date_timesr> Z REMOTE_IDENTZCONTENT_LENGTHZ CONTENT_TYPEZHTTPS PATH_INFOZ AUTH_TYPEZ QUERY_STRINGZ REMOTE_USER SCRIPT_NAMEZREQUEST_METHODcCs6t|p4|dp4|dp4|do4t|ddS)NZHTTP_ZSSL_Z REDIRECT_ ) _is_request startswith_needs_transcode)krrrrsrcCst}d}zdd|Wnty2d}Yn0i}tjD]\}}t|rtjdkrtj dd }| dr|d d}q| d rq| d rd |vr|d d}q||d d}n||| d}|||<qB|S) Nsurrogateescapezutf-8replacewin32SERVER_SOFTWAREzmicrosoft-iis/ iso-8859-1zapache/z simplehttp/zpython/3) sysgetfilesystemencodingencode LookupErrorosenvironitemsrplatformgetlowerrdecode)encZescr)rvZsoftwarerrrr "s0      r c@seZdZdZdZdZdZdZdZdZ e Z e Z eZdZdZdgZdZdZZdZdZd Zd d Zd d ZddZddZddZddZd:ddZddZ ddZ!ddZ"ddZ#d d!Z$d"d#Z%d$d%Z&d&d'Z'd(d)Z(d*d+Z)d,d-Z*d.d/Z+d0d1Z,d2d3Z-d4d5Z.d6d7Z/d8d9Z0dS);r)rrTFz1.0Nz500 Internal Server Error)z Content-Typez text/plains;A server error occurred. Please contact the administrator.rc Csrz$|||j|j|_|WnHtttfy>YdSz |Wn| Yn0Yn0dSN) setup_environr)start_responseresultfinish_responseConnectionAbortedErrorBrokenPipeErrorConnectionResetError handle_errorclose)selfZ applicationrrrruns  zBaseHandler.runcCs|j}|_|||d<||d<|j|d<|j|d<||d<|j |d<|j |d<|j durx|j |d<|j r|j r|d |j dS) Nz wsgi.inputz wsgi.errorsz wsgi.versionz wsgi.run_oncezwsgi.url_schemezwsgi.multithreadzwsgi.multiprocesszwsgi.file_wrapperr") os_environcopyr) add_cgi_vars get_stdin get_stderr wsgi_version wsgi_run_once get_schemewsgi_multithreadwsgi_multiprocesswsgi_file_wrapper origin_serverserver_software setdefault)r;envrrrr2s          zBaseHandler.setup_environcCsdz2|r|s0|jD]}||q|Wn$t|jdrP|jYn 0|dS)Nr:)result_is_filesendfiler4writefinish_contenthasattrr:r;datarrrr5s     zBaseHandler.finish_responsecCs t|jSr1)rr)r;rrrrDszBaseHandler.get_schemec CsHzt|j}Wntttfy&Yn0|dkrDt|j|jd<dSdS)NrContent-Length)lenr4 TypeErrorAttributeErrorNotImplementedErrorstr bytes_sentheaders)r;Zblocksrrrset_content_lengthszBaseHandler.set_content_lengthcCsd|jvr|dS)NrT)r[r\rSrrrcleanup_headerss zBaseHandler.cleanup_headerscCsl|r6z(|jr&|d|d|dWd}qHd}0n|jdurHtd||_|||_||d}|jS)NrrzHeaders already set!ZStatus) headers_sentwith_tracebackr[AssertionErrorstatus headers_class_convert_string_typerN)r;rbr[exc_inforrrr3s   zBaseHandler.start_responsecCs(t|tur|Std|t|dS)Nz!{0} must be of type str (got {1}))typerYraformatrepr)r;valuetitlerrrrds  z BaseHandler._convert_string_typecCs|jrx|r|d|j|jfdd|jvrP|dttd|j rd|jvr|d|j dn|d|jddS)Nz HTTP/%s %s r#ZDatez Date: %s ZServerz Server: %s z Status: %s ) rHclient_is_modern_write http_versionrbr&r[rr rIrSrrr send_preambles zBaseHandler.send_preamblecCsR|jstdn,|js*t||_|n|jt|7_|||dS)Nzwrite() before start_response())rbrar_rUrZ send_headersrl_flushrQrrrrNs    zBaseHandler.writecCsdS)NFrrSrrrrM)szBaseHandler.sendfilecCs"|js|jdd|ndS)NrT0)r_r[rJrorSrrrrO>s zBaseHandler.finish_contentc Csjz>t|jdr|jWd|_|_|_|_d|_d|_n&d|_|_|_|_d|_d|_0dS)Nr:rF)rPr4r:r[rbr)rZr_rSrrrr:Hs  zBaseHandler.closecCs8|d|_|jr|r4||t|jdS)NT)r]r_rHrkrnrlbytesr[rSrrrroUs zBaseHandler.send_headerscCs|j}|duot|j|Sr1)rG isinstancer4)r;wrapperrrrrL^szBaseHandler.result_is_filecCs|jddkS)NZSERVER_PROTOCOLzHTTP/0.9)r)upperrSrrrrkdszBaseHandler.client_is_moderncCsNzBddlm}|}||d|d|d|j||Wd}nd}0dS)Nr)print_exceptionrr^) tracebackrvrAtraceback_limitflush)r;rervstderrrrr log_exceptionis  zBaseHandler.log_exceptioncCs2|t|js.||j|j|_|dSr1) r{r$rer_ error_outputr)r3r4r5rSrrrr9yszBaseHandler.handle_errorcCs$||j|jddt|jgSr1) error_status error_headersr$re error_body)r;r)r3rrrr|s zBaseHandler.error_outputcCstdSr1rXrQrrrrlszBaseHandler._writecCstdSr1rrSrrrrpszBaseHandler._flushcCstdSr1rrSrrrr@szBaseHandler.get_stdincCstdSr1rrSrrrrAszBaseHandler.get_stderrcCstdSr1rrSrrrr?szBaseHandler.add_cgi_vars)N)1__name__ __module__ __qualname__rBrErFrCrHrmrIr r=rrGrrcrxr}r~rrbr4r_r[rZr<r2r5rDr\r]r3rdrnrNrMrOr:rorLrkr{r9r|rlrpr@rAr?rrrrr^sT      rc@s>eZdZdddZddZddZd d Zd d Zd dZdS)rTFcCs(||_||_||_||_||_||_dSr1)stdinstdoutrzbase_envrErF)r;rrrzr) multithread multiprocessrrr__init__s zSimpleHandler.__init__cCs|jSr1)rrSrrrr@szSimpleHandler.get_stdincCs|jSr1)rzrSrrrrAszSimpleHandler.get_stderrcCs|j|jdSr1)r)updaterrSrrrr?szSimpleHandler.add_cgi_varscCs^|j|}|dus |t|kr$dSddlm}|dt||d}|sLqZ|j|}q:dS)Nr)warnz9SimpleHandler.stdout.write() should not do partial writes)rrNrUwarningsrDeprecationWarning)r;rRr4rrrrrls   zSimpleHandler._writecCs|j|jj|_dSr1)rryrprSrrrrps zSimpleHandler._flushN)TF) rrrrr@rAr?rlrprrrrrs  rc@seZdZdZdS)r FN)rrrrHrrrrr sr c@seZdZdZiZddZdS)r Tc Cs(tj|tjjtjjtjtddddS)NFTrr)r rr$rbufferrrzr rSrrrrszCGIHandler.__init__NrrrrCr=rrrrrr sr c@seZdZdZiZddZdS)r Tc Csjt}|dd}|dd}|d|drD|t|d|d<tj|tjjtj jtj |ddddS)Nrrr/FTr) r r,rrUr rr$rrrrz)r;r)pathZscriptrrrr2s  zIISCGIHandler.__init__Nrrrrrr sr )utilrrrr[rr$r(r __all__rrr __contains__rrr rrr r r rrrrs   <V2