'J +ddlZddlmZddlmZmZddlmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlmZdd lmZerkdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlm Z edZ!edZ"edZ#GddeZ$edZ%e rd*dZ&nd*dZ&dZ'dZ(Gd d!e)Z* d+d"Z+d#Z,d$Z-d%Z.d&Z/Gd'd(e)Z0d)Z1dS),N)partial)Hub_should_send_default_pii) ContextVarcapture_internal_exceptionsevent_from_exception)PY2reraise iteritems) Transaction)auto_session_tracking)_filter_headers)MYPY)Callable)Dict)Iterator)Any)Tuple)Optional)TypeVar)Protocol)ExcInfo)EventProcessorWsgiResponseIterWsgiResponseHeaders WsgiExcInfoceZdZddZdS) StartResponseNcdSN)selfstatusresponse_headersexc_infos |/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib/python3.11/site-packages/sentry_sdk/integrations/wsgi.py__call__zStartResponse.__call__#s Dr )__name__ __module__ __qualname__r'r!r(r&rr"s(      r(rsentry_wsgi_middleware_appliedutf-8replacec.|||Sr )decodescharseterrorss r&wsgi_decoding_dancer5-sxx(((r(cT|d||S)Nlatin1)encoder0r1s r&r5r54s$xx!!((&999r(cp|dr`|d}|ddkr |dr |dd}nl|ddkr|dr |dd }n@|d r)|d }|d|d fd vr|d |d zz }nd}|S)zEReturn the host for the given WSGI environment. Yanked from Werkzeug. HTTP_HOSTwsgi.url_schemehttpz:80Nhttpsz:443 SERVER_NAME SERVER_PORT))r>443)r<80:unknown)getendswith)environrvs r&get_hostrJ9s{{; [ ! $ % / /BKK4F4F /CRCBB & '7 2 2r{{67J7J 2CRCB ] # #  ] # % & (> ?H    # .. .B Ir(c |ddt|dt|dpddS)zPReturn the absolute URL without query string for the given WSGI environment.r;z:/// PATH_INFO)rFrJr5lstriprHs r&get_request_urlrQPsb  %&&&&GKK 44:;;BB3GGG r(ceZdZdZdZdZdS)SentryWsgiMiddlewareappc||_dSr rT)r"rUs r&__init__zSentryWsgiMiddleware.__init__^s r(c *tdr|||Std t tj}t |5|5t5|5}| d|_ | t|dddn #1swxYwYdddn #1swxYwYtj|dd}||5 ||t!t"||}n&#t$$rt't)|YnwxYwdddn #1swxYwYdddn #1swxYwYdddn #1swxYwYtdn#tdwxYwt+||S)NFTwsgiz http.serverzgeneric WSGI request)opname)_wsgi_middleware_appliedrFrUsetrcurrentr rconfigure_scopeclear_breadcrumbs_nameadd_event_processor_make_wsgi_event_processorr continue_from_environstart_transactionr_sentry_start_response BaseExceptionr _capture_exception_ScopedResponse)r"rHstart_responsehubscope transactionrIs r&r'zSentryWsgiMiddleware.__call__bsK # ' ' . . 588G^44 4 $$T*** 0ck""C&s++ > >>>466 0022e!33555*0EK!55 :7 C C#."CM8N###K..{;; > >>!% ' '$:NK!"!"""BB ->>>#%7%<%<====> > > > > > > > > > > > > > > >>>>>>>>>>>>>>>> > > > > > > > > > > > > > > >2 % ( ( / / / / $ ( ( / / / /sB'''s (G&4G7F)C<>C%  C<%C) )C<,C) -C<0 F)<D F)D /F)3F5*E F F FF F F)F F)F F) G)F- -G0F- 1G4 G&GG&GG&&HN)r)r*r+ __slots__rWr'r!r(r&rSrS[s7I#(#(#(#(#(r(rSct5t|ddd}||dddn #1swxYwY| |||S||||S)N r)rintsplitset_http_status)old_start_responsermr#r$r% status_ints r&rfrfs % & &00c1--a011 ##J///000000000000000"!&*:;;;!!&*:HEEEs?AA!Ac#dKddg}tr|dgz }|D]}||vr |||fVdS)z Returns our explicitly included environment variables we want to capture (server name, port and remote addr if pii is enabled). r@rA REMOTE_ADDRN)r)rHkeyskeys r& _get_environr{sf = )D!!  $$ '>>ws|# # # #$$r(c#NKt|D]\}}t|}|dr9|dvr5|dddd|fVb|dvr,|dd|fVdS)z, Returns only proper HTTP headers. HTTP_)HTTP_CONTENT_TYPEHTTP_CONTENT_LENGTHN_-) CONTENT_TYPECONTENT_LENGTH)r str startswithr.title)rHrzvalues r& _get_headersrs  ((77 U#hh >>' " " 7s3 ( ( abb'//#s++1133U: : : : : 6 6 6++c3''--//6 6 6 677r(c |dddS#ttf$rYnwxYw |dS#t$rYnwxYw|dS)z Infer the user IP address from various headers. This cannot be used in security sensitive situations since the value may be forged from a client, but it's good enough for the event payload. HTTP_X_FORWARDED_FOR,rHTTP_X_REAL_IPrx)rsstripKeyError IndexErrorrFrPs r& get_client_iprs -.44S99!<BBDDD j !      '((       ;;} % %%s!25A A  A A"!A"ctj}|ja|d}t|to|jdv}|s9t ||jjddd\}}||||S)Nrq)rNrYF)typehandled)client_options mechanism)hint) sysr%client isinstance SystemExitcoderoptions capture_event)rkr%eshould_skip_captureeventrs r&rhrhs|~~H z QK)J77OAFi.event_processor#s ( * * . . ++Ir::L')) B!,,VR88 B((yAAA"-L +7L (%+L ""%L &-L # . . . . . . . . . . . . . . . sA,BB B )rrQrFdictr{rr)rHrrrrrrrs @@@@@@r&rcrcsg&&I!'**K;;~..L [[) * *F |G$$ % %Cd<#8#899::G& r()r-r.r )2rsentry_sdk._functoolsrsentry_sdk.hubrrsentry_sdk.utilsrrrsentry_sdk._compatr r r sentry_sdk.tracingr sentry_sdk.sessionsr $sentry_sdk.integrations._wsgi_commonrsentry_sdk._typesrtypingrrrrrrrrrrrrrrr\r5rJrQobjectrSrfr{rrrhrircr!r(r&rs ))))))88888888 7666666666******555555@@@@@@""""""((((((000000w122!'"788'-((K &:&FGG :))))):::: .*(*(*(*(*(6*(*(*(d FFFF*$$$*777"&&&(*88888f888D(((((r(