bg-.ddZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZdd lmZdd lmZdd lmZdd lmZmZdd lmZmZmZmZmZm Z ddlm!Z!e r&ddl"m#Z#ddl"m$Z$ddl"m%Z%ddl"m&Z&ddl'm(Z(ddlm)Z)m*Z*edZ+dZ,dZ-ddZ.dZ/GddZ0dS)ze An ASGI middleware. Based on Tom Christie's `sentry-asgi `. N)deepcopy)partial) TYPE_CHECKING)continue_trace)OP)Hub_should_send_default_pii)_filter_headers)_get_installed_modules)auto_session_tracking)SOURCE_FOR_STYLETRANSACTION_SOURCE_ROUTE) ContextVarevent_from_exceptionHAS_REAL_CONTEXTVARSCONTEXTVARS_ERROR_MESSAGEloggertransaction_from_function) Transaction)Dict)Any)Optional)Callable)Literal)EventHintsentry_asgi_middleware_appliedzgeneric ASGI request)endpointurlasgic|j;t||jj|dd\}}|||dSdS)NF)typehandled)client_options mechanism)hint)clientroptions capture_event)hubexcmechanism_typeeventr&s S/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/asgi.py_capture_exceptionr/4sc z* :--%@@   t %d+++++ ctj|rt|dStj|rt j|St |dd}t j|S)z Try to figure out if an application object supports ASGI3. This is how uvicorn figures out the application version as well. __await____call__N)inspectisclasshasattr isfunctionasyncioiscoroutinefunctiongetattr)appcalls r._looks_like_asgi3r=Asls1sK(((  C 1*3///sJ--*4000r0cVeZdZdZ ddZdZdZdZd Zd Z d Z d Z d Z dZ dS)SentryAsgiMiddleware)r;r3transaction_styler,Frr cb|ststdtz|tvrt d|dtd|dkodt v}|rt jd||_||_ ||_ t|r|j |_ dS|j|_ dS) ab Instrument an ASGI application with Sentry. Provides HTTP/websocket data to sent events and basic handling for exceptions bubbling up through the middleware. :param unsafe_context_data: Disable errors when a proper contextvars installation could not be found. We do not recommend changing this from the default. zRThe ASGI middleware for Sentry requires Python 3.7+ or the aiocontextvars package.z%Invalid value for transaction_style: z (must be in )r starlettezThe Sentry Python SDK can now automatically support ASGI frameworks like Starlette and FastAPI. Please remove 'SentryAsgiMiddleware' from your project. See https://docs.sentry.io/platforms/python/guides/asgi/ for more information.N)r RuntimeErrorrTRANSACTION_STYLE_VALUES ValueErrorr rwarningr@r,r;r= _run_asgi3r3 _run_asgi2)selfr;unsafe_context_datar@r,0asgi_middleware_while_using_starlette_or_fastapis r.__init__zSentryAsgiMiddleware.__init__Ts# +? 13LM  $< < <*$$$&>&>&>@  f $ P8N8P8P)P 9 <  Na    "3, S ! ! , ODMMM ODMMMr0cfd}|S)NcPKfdd{VS)NcBSNr;receivescoperJsendsr.z@SentryAsgiMiddleware._run_asgi2..inner..sodhhuoogt6T6Tr0_run_app)rTrVrUrJs``r.innerz.SentryAsgiMiddleware._run_asgi2..innersBu.T.T.T.T.T.T.TUUUUUUUU Ur0)rJrUrZs`` r.rIzSentryAsgiMiddleware._run_asgi2s/ V V V V V V r0cRKfdd{VS)Nc2SrQrRrSsr.rWz1SentryAsgiMiddleware._run_asgi3..s$((5'42P2Pr0rX)rJrUrTrVs````r.rHzSentryAsgiMiddleware._run_asgi3sC]]5*P*P*P*P*P*P*PQQQQQQQQQr0c pKtd}|rG |d{VS#t$r)}ttj||j|dd}~wwxYwtd t tj}t|d5|5| 5}| d|_ t|j |}||dddn #1swxYwY|d}|d vr8t||d | } nt%t&j } t*| _t.| _| d ||| d |i5 |d{V cdddcdddcdddtdS#t$r}t|||j|dd}~wwxYw#1swxYwY dddn #1swxYwYdddn #1swxYwYtddS#tdwxYw)NF)r,Trequest) session_moder ) asgi_scoper"http websocketz {}.server)opz asgi.typera)custom_sampling_context)_asgi_middleware_appliedget Exceptionr/rcurrentr,setr configure_scopeclear_breadcrumbs_namerevent_processoradd_event_processorr _get_headersformatrr HTTP_SERVER_DEFAULT_TRANSACTION_NAMEnamersourceset_tagstart_transaction) rJrUcallbackis_recursive_asgi_middlewarer+r* sentry_scope processorty transactions r.rYzSentryAsgiMiddleware._run_apps9'?'C'CE'J'J$ ' $ $%XZZ''''''' $ $ $"3;DDWXXXXt# $ !$$T***& 0ck""C&sCCC" 0" 0!0!0,,..D,$66888-3 *$+D,@U$S$S$S $88CCC DDDDDDDDDDDDDDD vB222&4 --e44*11"55''' '2R^&D&D&D '@K$)AK&'' R888..#lE=R/ 0 0 0)1#3#3#3#3#3#33 0 0 0 0 0 0 0+!0!0!0!0!0!0!0" 0" 0" 0" 0" 0" 0" 0H % ( ( / / / / )000. #S9L#&4/ 0 0 0 0 0 0 0 0 0 0+!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0" 0H % ( ( / / / / / $ ( ( / / / /s0 A#$AA#*J+I2.IAD ID ID B(IIH I$ I20 J I !H; ;I II I I I I2I I2"I #I2& J2I66J9I6:JJ5c<|di}|d}|dvr|d|d<t||x|d<}|||d<|||dkrdnd|d |d <|d }|r(t rd ||i|d <|||j|t||d<|S)Nr_r"rbmethodheaders query_stringrcwshostrr' REMOTE_ADDRenv) rhr rq _get_query_get_urlr _get_ip _set_transaction_name_and_sourcer@r)rJr-r&ra request_infor}rr's r.roz$SentryAsgiMiddleware.event_processors4yyB//   & & &%/^^H%=%=L "0?!!*--11 L #g,0??:+F+FL ("&--bFllFFgkk&>Q>Q##L ))  L.00 L#0$,,z2J2J"KL  --eT5KZXXX#L11i r0c~|dttk}|rdSd}|dkr)|d}|rt|pd}n2|dkr,|d}|rt|dd}||}|st|d<dti|d<dS||d<dt |i|d<dS) Nr~rrroutepathrvtransaction_info)rhrtrr:rr ) rJr-r@ratransaction_name_already_setrurrrs r.rz5SentryAsgiMiddleware._set_transaction_name_and_sources IIm%> ? ?( ) % (  F  * *!~~j11H A0::@b % ' 'NN7++E ufd33#D #rsX  ))))))++++++)))))) 88888888@@@@@@BBBBBB555555+*****.))))))--------&:&FGG2. , , , , 1 1 1 ssssssssssr0