bgZ`ddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZmZdd lmZmZdd lmZdd lmZmZdd lmZmZmZmZmZe rdd l m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z( ddl)Z)ddl)m*Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7ddl8m9Z9m:Z:m'Z;mm?Z?n#e=$r ddl@m?Z?YnwxYw ddlAZAn #e=$rdZAYnwxYwdZBdZCGddeZDdZEd+dZFd ZGd!ZHd"ZId#ZJd$ZKd%ZLd&ZMd'ZNGd(d)ZOd*ZPdS),)absolute_importN)deepcopy) iteritems) TYPE_CHECKING)OP)Hub_should_send_default_pii) DidNotEnable Integration)_is_json_content_typerequest_body_within_bounds)SentryAsgiMiddleware)SOURCE_FOR_STYLETRANSACTION_SOURCE_ROUTE)AnnotatedValuecapture_internal_exceptionsevent_from_exception parse_versiontransaction_from_function)Any AwaitableCallableDictOptional)Scope) __version__) Starlette) UploadFile) Middleware)AuthenticationMiddleware)Request)Match)ASGIAppReceiverSendzStarlette is not installed)ExceptionMiddlewarezgeneric Starlette request)endpointurlc4eZdZdZdZddZedZdS)StarletteIntegration starletter(c\|tvrtd|dtd||_dS)Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES ValueErrortransaction_style)selfr1s X/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/starlette.py__init__zStarletteIntegration.__init__FsJ $< < <*$$$&>&>&>@ "3ctt}|'tdtt t t |dkrtdSdS)Nz Unparsable Starlette version: {})r)rSTARLETTE_VERSIONr formatpatch_middlewarespatch_asgi_apppatch_request_responsepatch_templates)versions r3 setup_oncezStarletteIntegration.setup_onceOs 122 ?299:KLL     g          r5N)r()__name__ __module__ __qualname__ identifierr1r4 staticmethodr?r5r3r*r*AsNJ3333\r5r*cD|jfd}jdv}|r||_|S)Nc Ktj}|t}||jj|tj5}| dfd}tdt} | dk} | s|n} fd} tdt} | dk}|s| n}||| |fi|d{VcdddS#1swxYwYdS||fi|d{VS)Nop descriptionstarlette.middleware_namec Ktj}|tjt dt 5}|d|i|d{VcdddS#1swxYwYdSNrBrHrK)rcurrent start_spanrMIDDLEWARE_STARLETTE_RECEIVEgetattrstrset_tag)argskwargshubspanmiddleware_namereceives r3_sentry_receivezO_enable_span_for_middleware.._create_span_call.._sentry_receivers+C:$+G^S\\$R$R(> %@/RRR%,Wd%=f%=%======= >>>>>>>>>>>>>>>>>> $A>>BBr@rZc Ktj}|tjt dt 5}|d|i|d{VcdddS#1swxYwYdSrM)rrNrOrMIDDLEWARE_STARLETTE_SENDrQrRrS)rTrUrVrWrXsends r3 _sentry_sendzL_enable_span_for_middleware.._create_span_call.._sentry_sends+C7$+D.#d))$L$L(; %@/RRR%)T4%:6%:%::::::: ;;;;;;;;;;;;;;;;;;r[r_) rrNget_integrationr* __class__r@rOrMIDDLEWARE_STARLETTErSrQrR)appscoperYr^rUrV integrationmiddleware_spanrZ receive_namereceive_patched new_receiver_ send_name send_patchednew_sendrXold_calls `` @r3_create_span_callz6_enable_span_for_middleware.._create_span_callesk))*>??  "!m4O* # S ''(C_UUU>>>>>> 'w CLLII ".2C"C5DQoo' ;;;;;;$D*c$ii@@ (N: /;E<<%Xc5+xRR6RRRRRRRRG# S# S# S# S# S# S# S# S# S# S# S# S# S# S# S# S# S# SL"#ugtFFvFFFFFFFF FsBC11C58C5)rn%_sentry_authenticationmiddleware_call _sentry_exceptionmiddleware_call)__call__r@)middleware_classrnnot_yet_patchedrms @r3_enable_span_for_middlewarertasW(H-G-G-G-G-G^'0O 6$5! r5Fctj}|tdSt ||jr |jjndtj|d\}}|||dS)N)typehandled)client_options mechanism)hint) rrNr`r*rclientoptionsrC capture_event) exceptionrwrVeventrzs r3_capture_exceptionrs +C /008&-0ZAsz))T/:wOOKE4 e$'''''r5c|jdtv}|r!fd}||_|jfd}||_dSdS)zX Capture all exceptions in Starlette app and also extract user information. _sentry_middleware_initc|g|Ri||jfd}|jD] }||j|< dS)NcXK|d}t|do$t|jto |jdk}|rt |dd}t |jD]}|vr |}n|dSt|r||g|Ri|d{VS||g|Ri|S)Nr status_codeiT)rw)hasattr isinstancerintrrv__mro___is_async_callable)r2rTrUexpis_http_server_error old_handlercls old_handlerss r3!_sentry_patched_exception_handlerzfpatch_exception_middleware.._sentry_middleware_init.._sentry_patched_exception_handlers1gC///"3?C88/3.% (:&sD9999# 99,Cl**&23&7 +&F%k22>!,T!CD!C!C!CF!C!CCCCCCCC&;t=d===f===r5)_exception_handlerscopykeys)r2rTrUrkeyrold_middleware_inits @r3rz;patch_exception_middleware.._sentry_middleware_inits   6t 6 6 6v 6 6 6 388::L > > > > >6/4466 R R0Q(-- R Rr5cRKt|||||d{VdSN_add_user_to_sentry_scoper2rdrYr^rms r3rpzDpatch_exception_middleware.._sentry_exceptionmiddleware_callsE &e , , ,(466 6 6 6 6 6 6 6 6 6r5N)r4rRrq)rrrsrrprmrs @@r3patch_exception_middlewarers +3/s;N7O7OOO;E# R# R# R# R# RJ%<!#, 7 7 7 7 7 %E!!!w;E;Er5cd|vrdStsdStj}|tdS|5}i}|d}t |dd}|r|d|jt |dd}|r|d|j t |dd}|r|d|j ||_ ddddS#1swxYwYdS)zZ Extracts user information from the ASGI scope and adds it to Sentry's scope. userNusernameidemail) r rrNr`r*configure_scoperQ setdefaultrrrr)rdrV sentry_scope user_infostarlette_userruser_idrs r3rrsi U # % % +C /008    &, v>:t<<  F  ^-D E E E.$55  :  ~'8 9 9 966  @  .*> ? ? ?% !&&&&&&&&&&&&&&&&&&sBC<<DDcX|jdtv}|rfd}||_dSdS)z/ Add user information to Sentry scope. rocRK||||d{Vt|dSrrrs r3rozNpatch_authentication_middleware.._sentry_authenticationmiddleware_call%sC(466 6 6 6 6 6 6 6 %e , , , , ,r5N)rqrR)rrrsrorms @r3patch_authentication_middlewarers]  (H=S]]ROJ - - - - - %J!!!JJr5cltjdtv}|rfd}|t_dSdS)za Patches Starlettes `Middleware` class to record spans for every middleware invoked. rc|tkr ||fi|St|}||fi||tkrt||tkrt |dSdSr)rrtr rr&r)r2rr|span_enabled_clsrs r3rz2patch_middlewares.._sentry_middleware_init9s*****4@@@@@:3??   &6 B B' B B B.../444)))*3/////*)r5N)rr4rR)rsrrs @r3r:r:-s\ %-/s;N7O7OOO6 0 0 0 0 06 !66r5cBtjfd}|t_dS)zG Instrument Starlette ASGI app using the SentryAsgiMiddleware. cKtjt|||d{VSt fdtj}|j|_||||d{VS)Ncg|Ri|SrrE)akwold_appr2s r3zBpatch_asgi_app.._sentry_patched_asgi_app..Ws!WWT4A44444r5)mechanism_type)rrNr`r*rrC _run_asgi3rq)r2rdrYr^ middlewarers` r3_sentry_patched_asgi_appz0patch_asgi_app.._sentry_patched_asgi_appQs ; & &'; < < D ugt<<<<<<<< <) 4 4 4 4 4/:   )3 Zw555555555r5N)rrq)rrs @r3r;r;Js6  G 6 6 6 6 62Ir5ct|tjr!|j}t|tj!t j|p't |ot j|jSr)r functoolspartialfuncasyncioiscoroutinefunctioncallablerq)objs r3rrcsj S)+ , ,h S)+ , ,  &s + +  C'5clCCr5cVtjjfd}|tj_dS)Nc`|t}|rfd}|}nfd}|}|S)NcKtj}|t}| |i|d{VS|5}|d}t ||j|t|}|d{Vfd}dddn #1swxYwYtj |_ | ||| |i|d{VS)Nrcfd}|S)Nc|di}rdvr d|d<dvr d|d<t||d<|S)Nrequestcookiesdatagetr)rrz request_infoinfos r3event_processorzpatch_request_response.._sentry_request_response.._sentry_async_func.._make_request_event_processor..event_processorsh,199Y+C+CL#H#,#4#4>B9oL$;#)T>>;?._sentry_request_response.._sentry_async_func.._make_request_event_processors$ ) ) ) ) ) /.r5) rrNr`r*r _set_transaction_name_and_sourcer1StarletteRequestExtractorextract_request_inforC_nameadd_event_processor) rTrUrVrerr extractorrrold_funcs @r3_sentry_async_funczTpatch_request_response.._sentry_request_response.._sentry_async_funcxsk!112FGG &!)4!:6!:!::::::::((**/l"1gG4$k&CW!:' B BI!*!?!?!A!AAAAAAAD////////////////////8&:%D "0011';GG&Xt6v666666666sA B((B,/B,ctj}|t}| |i|S|5}|j|j|d}t||j|t|}| fd}dddn #1swxYwYtj |_ | ||| |i|S)Nrcfd}|S)Ncf|di}r|d<t||d<|S)Nrrr)rrzrrs r3rzpatch_request_response.._sentry_request_response.._sentry_sync_func.._make_request_event_processor..event_processorsB,199Y+C+CL&B:A Y 7/7 /E/EE),#(Lr5rE)rrerrs r3rzzpatch_request_response.._sentry_request_response.._sentry_sync_func.._make_request_event_processors$ ) ) ) ) ) /.r5)rrNr`r*rprofileupdate_active_thread_idrr1rextract_cookies_from_requestrCrr) rTrUrVrerrrrrrs @r3_sentry_sync_funczSpatch_request_response.._sentry_request_response.._sentry_sync_funcsfk!112FGG &#8T4V444((**/l#+7$,DDFFF"1gG4$k&CW!:' B BI'DDFFG////////////////////:&:%D "0011';GG x0000sA'B::B>B>)r)r is_coroutinerrrold_request_responses @r3_sentry_request_responsez8patch_request_response.._sentry_request_responseqst)(33 Z %( 7( 7( 7( 7( 7T&DD) 1) 1) 1) 1) 1V%D##D)))r5)r+routingrequest_response)rrs @r3r<r<msB$,=a*a*a*a*a*F*BI&&&r5c ddlmn#t$rYdSwxYwddlm}|jdt v}|rfd}||_dSdS)Nr)Markup)Jinja2Templates_sentry_jinja2templates_initcfd}|dg||dvr|d||g|Ri|S)Nc^tj}|}d|iS)Nsentry_trace_meta)rrNtrace_propagation_meta)rrV trace_metars r3add_sentry_trace_metazTpatch_templates.._sentry_jinja2templates_init..add_sentry_trace_metas4k#VC$>$>$@$@AA 'r5context_processors)rappend)r2rTrUrrold_jinja2templates_inits r3rz5patch_templates.._sentry_jinja2templates_inits        2B 7 7 7$F3G,HHH+,334IJJJ++DB4BBB6BB Br5) markupsafer ImportErrorstarlette.templatingrr4rR)rrsrrrs @@r3r=r=s %%%%%%% 544444.74C ==O@ C C C C C C"$@   '@@s  cFeZdZdZdZdZdZdZdZdZ dZ d Z d Z dS) rz Extracts useful information from the Starlette request (like form data or cookies) and adds it to the Sentry event. Nc||_dSr)r)r2rs r3r4z"StarletteRequestExtractor.__init__s  r5cxtjj}|dSd}tr|}|Sr)rrNr{r r)r2r{rs r3rz6StarletteRequestExtractor.extract_cookies_from_request s;# >4 # % % %llnnGr5cKtjj}|dSi}t5t r||d<|d{V}|s|cdddS|r4t||s$tj |d<|cdddS| d{V}|r||d<|cdddS| d{V}|rYi}t|D]4\}}t|t} | s|ntj||<5||d<|cdddStj|d<|cdddS#1swxYwYdS)Nrr)rrNr{rr rcontent_lengthr rremoved_because_over_size_limitjsonformrrrremoved_because_raw_data) r2r{rrrr form_datarvalis_files r3rz.StarletteRequestExtractor.extract_request_infos# >4 ( * *( ( ')) 9*.,,.. Y'$(#6#6#8#8888888N! $#( ( ( ( ( ( ( (  $&@'' $(6'U'W'W V$#( ( ( ( ( ( ( ( $$$$$$$D $'+ V$#+( ( ( ( ( ( ( ( 0$$$$$$D $ )$HC(j99G 'G+DFFcNN (1 V$#I( ( ( ( ( ( ( ( N$2#J#L#LL Q( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( s+AE68)E6."E6A(E6E66E:=E:cdKd|jjvrt|jjdSdS)Nzcontent-length)rheadersrr2s r3rz(StarletteRequestExtractor.content_lengthJs4 t|3 3 3t|+,<=>> >tr5c|jjSr)rrrs r3rz!StarletteRequestExtractor.cookiesQs |##r5cKtdS|jd{V|jd{VSr) multipartrbodyrrs r3rzStarletteRequestExtractor.formUs_  4 l!!!!!!!!!\&&(((((((((r5cZt|jjdS)Nz content-type)r rrrrs r3is_jsonz!StarletteRequestExtractor.is_jsonbs#$T\%9%=%=n%M%MNNNr5cpK|sdS|jd{VSr)rrrrs r3rzStarletteRequestExtractor.jsonfsA||~~ 4\&&(((((((((r5) r@rArB__doc__rr4rrrrrrrrEr5r3rrs G   0 0 0 d$$$ ) ) )OOO)))))r5rcd}|dkr.|jd}|rt|pd}n|dkr{|jd}|jD]f}||j}|dt jkr4|dkrt|ddpd}n|dkr |j}ng|st}t}n t|}| ||dS)Nr,r'r(routerr)source) rdrrroutesmatchesr"FULLpath_DEFAULT_TRANSACTION_NAMErrset_transaction_name) rdr1rnamer'r routematchr s r3rrns DJ&&=$$Z00  =,X66<"D e # #x(]  EMM'-00EQx5:%%$ 224U1Xj5IJJPbDE&%// :DE 5()!"34 tF33333r5)F)Q __future__rrrrrsentry_sdk._compatrsentry_sdk._typesrsentry_sdk.constsrsentry_sdk.hubrr sentry_sdk.integrationsr r $sentry_sdk.integrations._wsgi_commonr r sentry_sdk.integrations.asgirsentry_sdk.tracingrrsentry_sdk.utilsrrrrrtypingrrrrrsentry_sdk.scoper SentryScoper+rr8starlette.applicationsrstarlette.datastructuresrstarlette.middlewarer#starlette.middleware.authenticationr starlette.requestsr!starlette.routingr"starlette.typesr#r$StarletteScoper%rstarlette.middleware.exceptionsr&starlette.exceptionsrrr/r*rtrrrrr:r;rr<r=rrrEr5r3r.s.&&&&&&((((((++++++ 88888888========>=====IIIIIIII6??????????????555555 5::::::000000333333//////+*****''''''OOOOOOOOOOOOO555 ,3 4 4459CCCCCCC999888888889III8.;@<<<~ ( ( ( (EEEEEEP & & &FJJJ&666:2222gBgBgBT&@&@&@Rk)k)k)k)k)k)k)k)\44444s02:B--B>C CCC C*)C*