idWddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl mZddlmZmZmZmZmZmZmZmZmZmZmZddlZddlZdd lmZmZdd l m!Z!dd l"m#Z#dd l m$Z$m%Z%m&Z&m'Z'm(Z(dd l)m*Z*m+Z+ddl,m-Z-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8m9Z9dZ:erddl;me'dde&iiddddej?d Z@GddeAZBGddeAZCejDddd Gd!d"ZEeee'eEfe.fZFGd#de!ZGdS)$N)deque)suppress)escape) HTTPStatus)Logger) TYPE_CHECKINGAny AwaitableCallableDequeOptionalSequenceTupleTypeUnioncast)AbstractAccessLoggerAbstractStreamWriter) BaseProtocol) ceil_timeout)HttpProcessingErrorHttpRequestParser HttpVersion10RawRequestMessage StreamWriter) access_logger server_logger) EMPTY_PAYLOAD StreamReader) tcp_keepalive) HTTPException) AccessLogger) BaseRequest)ResponseStreamResponse)RequestHandlerRequestPayloadErrorPayloadAccessError)Serverr'zasyncio.Task[None]UNKNOWN/TFceZdZdZdS)r(zPayload parsing error.N__name__ __module__ __qualname____doc__I/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/web_protocol.pyr(r(Ns    r4r(ceZdZdZdS)r)z-Payload was accessed after response was sent.Nr.r3r4r5r)r)Rs7777r4r)) auto_attribsfrozenslotsc.eZdZUeed<eed<eed<dS)_ErrInfostatusexcmessageN)r/r0r1int__annotations__ BaseExceptionstrr3r4r5r;r;Vs. KKK  LLLLLr4r;ceZdZdZdZdZddeeeej ddddd d dd d d de j de de dedeededede dededede dede ffdZdefdZede fdZdFd!ee dd"fd#Zd$e jdd"ffd% Zd&eedd"ffd' Zd(edd"fd)ZdGd*Zd+e dd"fd,Z!d-e dd"fd.Z"dGd/Z#dGd0Z$d1e%d2e&d3e dd"fd4Z'd5ed6edd"fd7Z(d5ed6edd"fd8Z)dGd9Z*d1e%d:e d;e+e%ge,e&fde-e&e ffd<Z.dGd=Z/d1e%d>e&d:e de fd?Z0 dHd1e%dAed&eedBeede&f dCZ1dDe2de+e%ge,e&ffdEZ3xZ4S)Ir'aHTTP protocol implementation. RequestHandler handles incoming HTTP request. It reads request line, request headers and request payload and calls handle_request() method. By default it always returns with 404 response. RequestHandler handles errors in incoming request, like bad status line, bad headers or incomplete payload. If any error occurs, connection gets closed. keepalive_timeout -- number of seconds before closing keep-alive connection tcp_keepalive -- TCP keep-alive is on, default is on debug -- enable debug mode logger -- custom logger object access_log_class -- custom class for access_logger access_log -- custom logging object access_log_format -- access log format string loop -- Optional event loop max_line_size -- Optional maximum header line size max_field_size -- Optional maximum header field size max_headers -- Optional maximum header size r)_request_count _keepalive_manager_request_handler_request_factory_tcp_keepalive_keepalive_time_keepalive_handle_keepalive_timeout_lingering_time _messages _message_tail_waiter _task_handler_upgrade_payload_parser_request_parser_reading_pausedloggerdebug access_logr_close _force_close_current_requestgR@TFiig$@i) keepalive_timeoutr!rVaccess_log_classrXaccess_log_formatrW max_line_size max_headersmax_field_sizelingering_time read_bufsizeauto_decompressmanagerr*loopr\r!rVr]rXr^rWr_r`rarbrcrdc <t|d|_d|_d|_||_|j|_|j|_ ||_ d|_ d|_ ||_ t| |_t!|_d|_d|_d|_d|_d|_t/|||| | | t0||_||_| |_||_|r||||_nd|_d|_d|_dS)NrFgr4)r_rar`payload_exceptionrd) super__init__rDrEr[rFrequest_handlerrGrequest_factoryrHrIrJrKrLfloatrMrrNrOrPrQrRrSrr(rTrVrWrXrrYrZ)selfrerfr\r!rVr]rXr^rWr_r`rarbrcrd __class__s r5rjzRequestHandler.__init__s?& 7;*1 ;B;R;B;R+";?"3$^44*/'' 7; ;? $( connected disconnected)formatror/ transportrns r5__repr__zRequestHandler.__repr__s0 N #>5KK>   r4c|jSN)rLrvs r5r\z RequestHandler.keepalive_timeouts &&r4.@timeoutNcKd|_|j|j|jr|jt t jt j5t|4d{V|j +|j t j|j &|j s |j d{Vdddd{Vn#1d{VswxYwYdddn #1swxYwY|j |j |j "|j d|_ dSdS)zDo worker process exit preparations. We need to clean up everything and stop accepting requests. It is especially important for keep-alive connections. TN)rZrKcancelrPrasyncioCancelledError TimeoutErrorrr[_cancelrQdoneruclose)rnr{s r5shutdownzRequestHandler.shutdowns& !  ! -  " ) ) + + + < " L   ! ! !g,g.B C C - -#G,, - - - - - - - -(4)11'2H2J2JKKK%1$:L:Q:Q:S:S1,,,,,,,,  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   )   % % ' ' ' > % N " " "!DNNN & %s7.DA C6$D6 D DD DDDrucBt|ttj|}|jrt ||j| |_ |j ||dSry) riconnection_maderr~ TransportrIr!_loop create_taskstartrQrF)rnrureal_transportros r5rzRequestHandler.connection_mades  ***g/;;   * . ) ) )!Z33DJJLLAA %%dN;;;;;r4r=c|jdS|j||t|d|_d|_d|_d|_d|_|j|j|j +|td}|j ||j |j d|_ |j"|jd|_dSdS)NTzConnection lost)rFconnection_lostrirZrHrGrTrKr}r[ConnectionResetErrorrrPrQrSfeed_eof)rnr=ros r5rzRequestHandler.connection_losts = F %%dC000 $$$   $ $#  ! -  " ) ) + + +  ,{*+<==  ! ) )# . . . < # L   ! ! !!   +  ) ) + + +#'D  , +r4parsercr||_|jr(|j|jd|_dSdS)Nr4)rSrO feed_data)rnrs r5 set_parserzRequestHandler.set_parser7sI &   %  * *4+= > > >!$D    % %r4cdSryr3rvs r5 eof_receivedzRequestHandler.eof_receivedAs r4datac|js|jrdS|j|js |j|\}}}n:#t $r-}td||jtfg}d}d}Yd}~nd}~wwxYw|pdD]1\}}|xj dz c_ |j ||f2|j }|r+|)|s|d||_|r |r ||_dSdSdS|j|jr|r|xj|z c_dS|r5|j|\} }| r|dSdSdS)Ni)r<r=r>Fr4r3r)rZrYrSrRrTrrr;r>rrDrNappendrPr set_resultrOr) rnrmessagesupgradedtailr=msgpayloadwaitereofs r5 data_receivedzRequestHandler.data_receivedDs      F   ' ' +/+?+I+I$+O+O((DD&   Sc3;GGGW!  !)B 6 6 W##q(##%%sGn5555\F (F.v{{}}.!!$'''$DM *D *%)""" * * * * ! )dm ) )   $ &     ,66t< % N " " "!DNNN & %r4requestresponsetimec|j8|j|||j|z dSdSry)rlogrr)rnrrrs r5 log_accesszRequestHandler.log_accesssG   )   " "7Hdjoo6G6G$6N O O O O O * )r4argskwc<|jr|jj|i|dSdSry)rWrVrnrrs r5 log_debugzRequestHandler.log_debugs6 : + DK t *r * * * * * + +r4c*|jj|i|dSry)rV exceptionrs r5 log_exceptionzRequestHandler.log_exceptions" t*r*****r4c |js|jsdS|j|jz}|jr3|j|kr|dS|j|j |j |_ dSry) rZrErJrLrPrrr call_laterKEEPALIVE_RESCHEDULE_DELAY_process_keepaliverK)rnnexts r5rz!RequestHandler._process_keepalives   DO  F#d&== < z  4''  """"&!6!6  +T-D" " r4 start_timerkcK ||_||d{V}d|_n #d|_wxYw t|ddrtjdt||||d{V}n#t $r)}|}||||d{V}Yd}~nd}~wtj$rtj $rT}| d|| |d}||||d{V}Yd}~nNd}~wt$r>}| |d|}||||d{V}Yd}~nd}~wwxYw||fS)N__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadzRequest handler timed out.exc_infoi) r[getattrwarningswarnDeprecationWarningfinish_responser"r~rrr handle_error Exception)rnrrrkrespresetr=s r5_handle_requestzRequestHandler._handle_requests J -(/%,_W55555555(,%%%,,,,%t1599  9' ..wjIIIIIIIIEE- J J JD..wjIIIIIIIIEEEEEE%    # J J J NN7#N F F F$$Wc22D..wjIIIIIIIIEEEEEE J J J$$Wc377D..wjIIIIIIIIEEEEEE JU{s=%A; .A;; E$B))!E$ A D E$&4EE$c K|j}|j}|j}|j}d}|js|jsZ ||_|jd{Vn#tj $r Yd|_nDwxYw d|_n #d|_wxYw|j \}}| }|xj dz c_ t||} t|tr||} t"}n|j} ||||| |} |j|| || } | d{V\}} n#tj t,f$r|dY|j||dn|js^|jrU|jsN|J|j }||_|j#|||z|j|_nnnwxYw~ | r|d |j||dn\|js^|jrU|jsN|J|j }||_|j#|||z|j|_nnnt?|j |_|!s_|j"}|js |r |d|| }||z}tGtj$tj 5|!s||krtK||z 4d{V|&d{Vdddd{Vn#1d{VswxYwY| }|!s||kdddn #1swxYwY|!s0|js)|d|'|(tSn1#tj $r|dY|j||dn|js^|jrU|jsN|J|j }||_|j#|||z|j|_nnntT$r<}|j+r|,d | |-Yd}~nEd}~wt\$r5}|,d | |-Yd}~nd}~wwxYw|j||dn|js\|jrT|jsM|J|j }||_|j#|||z|j|_nnn#|j||dne|js^|jrT|jsM|J|j }||_|j#|||z|j|_nYn wxYw|j|js)d|_|j|j'dSdSdS) a_Process incoming request. It reads request line, request headers and request payload, then calls handle_request() method. Subclass has to override handle_request(). start() handles various exceptions in request or response handling. Connection is being closed always unless keep_alive(True) specified. Nrz&Ignored premature client disconnectionz'Ignored premature client disconnection.z(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.zUncompleted request.z'Ignored premature client disconnection zUnhandled runtime exceptionrzUnhandled exception)/rrQrFrLrZrN create_futurerPr~rpopleftrrequests_countr isinstancer;_make_error_handlerERRORrGrHrrConnectionErrorrrurErYrJrKcall_atrboolris_eofrMrrrreadanyr set_exceptionr) RuntimeErrorrWrrr)rnrfhandlerrer\rr>rrwriterrkrtaskrnowrbend_tr=s r5rzRequestHandler.startsz$- 3#^ > ((#'#5#5#7#7DL,&&&&&&&&-#'DLL'$(DLL4DL''''#~5577 GWIIKKE  " "a ' " "!$--F'8,, 8"&":":7"C"C"&"7++GWdFGTTGE z--((%II(,******KD%%.@NN#KLLL^>)d.>NN#LMMMM*  t{ ,8"&*//"3"3C36D0#5=9=$'*;$;T=T:":" 6 g NN#MNNNR>)d.>NN#LMMMM*  t{ ,8"&*//"3"3C36D0#5=9=$'*;$;T=T:":" 6 Q#'t"7"7~~''%%)%9N, 2 2E~#iikk #n 4%g&:G>++%D4E%'=>>> %%&8&:&:;;;;)   HIII>)d.>NN#LMMMM*  t{ ,8"&*//"3"3C36D0#5=9=$'*;$;T=T:":" 6   # # #:T&&'Ds&SSS  """""""" # # #""#83"GGG  """""""" #>)d.>NN#LMMMM*  t{ ,8"&*//"3"3C36D0#5=9=$'*;$;T=T:":" 6 >)d.>NN#LMMMM*  t{ ,8"&*//"3"3C36D0#5=9=$'*;$;T=T:":" 6}#^ B  '!%D ~)$$&&&&& ' '))s&AA>A2'A>1A22A>> B-/Q0 E)(Q0)+HQ0HQ0BQ03O>N3!O>3 N= =O>N= 1O>2 Q0>PQ0PA(Q0.X$0$VX$ V%2UX$ V)+VX$VX$$BZ*)Z*rcK|jN|jdd|_|jr&|j|jd|_ |j}nA#t $r4|tdtd|wxYw ||d{V| d{V| |||dS#t$r| |||YdSwxYw)aPrepare the response and write_eof, then log access. This has to be called within the context of any exception so the access logger can get exception information. Returns True if the client disconnects prematurely. NFr4z+Missing return statement on request handlerz7Web-handler should return a response instance, got {!r}T) rT set_upgradedrRrOrprepareAttributeErrorrrt write_eofrr)rnrrr prepare_meths r5rzRequestHandler.finish_responseGs[   +  - -e 4 4 4!DM! )$..t/ABBB%(" B#+C''!D  D rr<r>c|d||jjdkrtdd}|tjkrdtj}tjj}d}|jr?tt5tj }dddn #1swxYwYd|j d d vr1|rt|}d |d }d ||}d}n |r|}|dz|z}t!|||} | | S)zHandle errors. Returns HTTP response with specific status code. Logs additional information. It always closes current connection. zError handling requestrrzMResponse is sent already, cannot send another response with the error messagez text/plainz{0.value} {0.phrase}Nz text/htmlAcceptz

Traceback:

z
zV{title}

{title}

{msg} )titlerz )r<text content_type)rr output_sizerrINTERNAL_SERVER_ERRORrt descriptionrWrr traceback format_excheadersget html_escaper%r) rnrr<r=r>ctrrtbrs r5rzRequestHandler.handle_errorls 3cBBB > % ) )!)   Z5 5 5*11*2RSSE2>CBz 0i((00"-//B000000000000000go11(B????B$RBArAAAC0&u#&..  !C&.3.vG"EEE  sB66B:=B:err_infoc4dtdtffd }|S)NrrpcVK|jjjSry)rr<r=r>)rrrns r5rz3RequestHandler._make_error_handler..handlers/$$(,8H r4)r$r&)rnrrs`` r5rz"RequestHandler._make_error_handlers< ; >        r4)rz)rpN)rNN)5r/r0r1r2r __slots__rr#r LOG_FORMATr~AbstractEventLooprmrrrrrBr?rjrwpropertyr\r r BaseTransportrrArr rrbytesrrrrr$r&rrrrr r rrrrrr;r __classcell__)ros@r5r'r'`s!!F"#IB$("&7C*!-!8! " $! $#A"A"A"A"' A" ! A"  A"A"34A"A"A"A"A"A"A"A" !A""#A"A"A"A"A"A"F #    '5'''X'""huo"""""> <)> <4 < < < < < <(8M#:(t((((((<%%%%%%    %%%D%%%%N*d*t****""""""""P"P.<PDIP PPPP +s+#+$+++++3+c+d++++    $%%%";->1J"JK % ~t# $ %%%%Nw'w'w'w'r#"#*8#FK# ####P'+!% 1111m $ 1 # 1  1111f  ;->!:: ;r4)Hr~asyncio.streamsrr collectionsr contextlibrhtmlrrhttprloggingrtypingrr r r r r rrrrrattryarlabcrr base_protocolrhelpersrrrrrrrrrstreamsrr tcp_helpersr!web_exceptionsr"web_logr# web_requestr$ web_responser%r&__all__ web_serverr*_RequestFactory_RequestHandlerURLrrr(r)sr;_MsgTyper'r3r4r5rs&&&&&&                           ;;;;;;;;''''''!!!!!!.-------00000000&&&&&&))))))!!!!!!$$$$$$22222222 I#""""""  K=)N*CCD    DHSMM  !!!!!)!!!88888888T$d33343 ((23\A BG G G G G \G G G G G r4