
    gh!              
          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
Jr  S SKJr  \(       a  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  \R4                  " S5      rSrSr " S S5      r S SKJr  S SK J!r!J"r"J#r#  S SK$J%r%  Sr&Sr'Sr(Sr)Sr*\+" S \" \," \*R[                  5       \*R]                  5       5      6  5       5      r/ " S S\5      r0S r2g! \1 a    Sr% Nf = f)    N)chainproduct)TYPE_CHECKING)Any)Callable)Dict)Optional)Self)loggerenv_to_boolcapture_internal_exceptions)Envelope	spotlightzhttp://localhost:8969/streamz(sentry_sdk.spotlight.SpotlightMiddlewarec                        \ rS rSrS rS rSrg)SpotlightClient$   c                 R    Xl         [        R                  " 5       U l        SU l        g )Nr   )urlurllib3PoolManagerhttpfails)selfr   s     W/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/spotlight.py__init__SpotlightClient.__init__%   s    '')	
    c                 ,   [         R                  " 5       nUR                  U5         U R                  R	                  U R
                  UR                  5       SSS0S9nUR                  5         SU l        g ! [         a  nU R                  S:  a9  [        R                  " [        U5      5        U =R                  S-  sl         S nAg U R                  S:X  a0  U =R                  S-  sl        [        R                  " S5         S nAg  S nAg S nAff = f)	NPOSTContent-Typezapplication/x-sentry-envelope)r   bodymethodheadersr         z]Looks like Spotlight is not running, will keep trying to send events but will not log errors.)ioBytesIOserialize_intor   requestr   getvaluecloser   	Exceptionsentry_loggerwarningstr)r   enveloper!   reqes        r   capture_envelope SpotlightClient.capture_envelope+   s    zz|%	))##HH]]_"$C	 $ C IIKDJ 	zzA~%%c!f-

a

q

a
%%s  !		s   AA6 6
D AD	;DD)r   r   r   N)__name__
__module____qualname____firstlineno__r   r3   __static_attributes__ r   r   r   r   $   s    r   r   )MiddlewareMixin)HttpResponseServerErrorHttpResponseHttpRequest)settingsz/assets/main.jsz<script>window.__spotlight = {{ initOptions: {{ sidecarUrl: '{spotlight_url}', fullPage: false }} }};</script>
<script type="module" crossorigin src="{spotlight_js_url}"></script>
z<html><base href="{spotlight_url}">
<script>window.__spotlight = {{ initOptions: {{ fullPage: true, startFrom: "/errors/{event_id}" }}}};</script>
zcharset=r!   c              #   b   #    U  H%  nS R                  SR                  U5      5      v   M'     g7f)z</{}> N)formatjoin).0charss     r   	<genexpr>rF   W   s+      )PE 	rwwu~&&Ps   -/c                   L   ^  \ rS rSrSrSrU 4S jr\S 5       rS r	S r
SrU =r$ )SpotlightMiddleware\   Nc                 (  > [         TU ]  U5        SS KnUR                  U l        U R                  R                  5       R                  nUc  [        R                  " S5        g [        R                  R                  UR                  S5      U l        g )Nr   zPCannot find Spotlight client from SpotlightMiddleware, disabling the middleware.z../)superr   sentry_sdk.apiapi
sentry_sdk
get_clientr   r-   r.   urllibparseurljoinr   _spotlight_url)r   get_responserN   spotlight_client	__class__s       r   r   SpotlightMiddleware.__init__`   ss    G\*!(nnDO#99;EE'%%f "(,,"6"67G7K7KU"SDr   c                    U R                   b  U R                  c   [        R                  R	                  U R                   [
        5      n[        R                  R                  USS9n[        R                  R                  U5        [        R                  U R                   US9U l        U R                  $ U R                  $ ! [        R                  R                   a+  n[        R                  " SWUS9   S nAU R                  $ S nAff = f)NHEAD)r"   )spotlight_urlspotlight_js_urlzUCannot get Spotlight JS to inject at %s. SpotlightMiddleware will not be very useful.)exc_info)rS   _spotlight_scriptrP   rQ   rR   SPOTLIGHT_JS_ENTRY_PATHr)   RequesturlopenSPOTLIGHT_JS_SNIPPET_PATTERNrB   errorURLErrorr-   debug)r   r[   r1   errs       r   spotlight_script$SpotlightMiddleware.spotlight_scriptq   s     "".43I3I3Q'-||';';++-D($ !..00(% 1 C NN**3/-I-P-P&*&9&9)9 .Q .D* )))4))) ||,, !''o(!$ )))s   BC D DDc                   ^^ [        S TR                  R                  SS5      R                  5       R	                  S5       5       5      nUS   n[        U5      S:  a3  US   R                  [        5      (       a  US   [        [        5      S  mOSmU R                  b  TR                  (       d  US:X  a  [        TR                  5      nU R                  R                  T5      n[        S	 UU4S
 j[         5        5       U5      nTR                  S U U-   TR                  US  -   Tl
        TR                  S5      (       a  U[        U5      -   TR                  S'   T$ )Nc              3   B   #    U  H  nUR                  5       v   M     g 7fN)strip)rD   ps     r   rF   7SpotlightMiddleware.process_response.<locals>.<genexpr>   s      (TA 		Ts   r    rA   ;r   r%   utf-8z	text/htmlc              3   6   #    U  H  nUS :  d  M  Uv   M     g7f)Nr:   )rD   idxs     r   rF   rm      s&      $C 8 $s   
	c              3   x   >#    U  H/  nTR                   R                  UR                  T5      5      v   M1     g 7frj   )contentrfindencode)rD   body_variantencodingresponses     r   rF   rm      s7      $0L %,,22<3F3Fx3PQQ0Ls   7:zContent-Length)tupler#   getlowersplitlen
startswithCHARSET_PREFIXrf   	streamingrt   rv   nextBODY_CLOSE_TAG_POSSIBILITIES
has_header)	r   _requestry   content_type_headercontent_typecontent_length	injectioninjection_siterx   s	     `     @r   process_response$SpotlightMiddleware.process_response   sk   "' (!))--nbAGGIOOPST( # /q1L&'!+0CA0F0Q0Q1 1 /q1#n2E2GH" %%1 ** K/!$X%5%5!6 1188B	!%$0L$ #
" $$_n5 &&~78   &&'7889G#i.9XH$$%56Or   c           
         [         R                  (       a  U R                  (       d  g  [        R                  R                  U R                  5      R                  5       R                  S5      nU R                  R                  U5      n[        UR                  S[        R                  U R                  US95      5      $ ! [        R                  R                   a     g f = f)Nro   z<html>)rZ   event_id)r?   DEBUGrS   rP   r)   r`   readdecoderN   capture_exceptionr<   replaceSPOTLIGHT_ERROR_PAGE_SNIPPETrB   rb   rc   )r   r   	exceptionr   r   s        r   process_exception%SpotlightMiddleware.process_exception   s    >>)<)<NN**4+>+>?DDFMMgV   ??<<YG.%% 4;;*.*=*= <  	 <<(( s   AC C"!C")r]   rS   rN   )r5   r6   r7   r8   r]   rS   r   propertyrf   r   r   r9   __classcell__)rV   s   @r   rH   rH   \   s8     	T" 
	* 
	*2+	Z	 	r   rH   c                    [         R                  " [        R                  5      nUR	                  [         R
                  " S5      5        [        R                  U5        [        R                  [         R                  5        U R                  S5      nUSL a  [        n[        U[        5      (       d  g [        5          [        b  [        R                   (       a  [#        [$        R&                  R                  SS5      5      (       a  [#        [$        R&                  R                  SS5      5      (       aX  [        R(                  n[*        U;  a>  [-        U5      " [/        U[*        45      5      [        l        [        R1                  S5        S S S 5        [3        U5      n[        R1                  SU5        U$ ! , (       d  f       N1= f)	Nz' [spotlight] %(levelname)s: %(message)sr   TSENTRY_SPOTLIGHT_ON_ERROR1SENTRY_SPOTLIGHT_MIDDLEWAREz(Enabled Spotlight integration for Djangoz%Enabled Spotlight using sidecar at %s)loggingStreamHandlersysstderrsetFormatter	Formatterr   
addHandlersetLevelINFOr{   DEFAULT_SPOTLIGHT_URL
isinstancer/   r   r?   r   r   osenviron
MIDDLEWARE DJANGO_SPOTLIGHT_MIDDLEWARE_PATHtyper   infor   )options_handlerr   
middlewareclients        r   setup_spotlightr      s1   $$SZZ0H'++,UVW
h
OOGLL!
++k
"C
d{#c3	$	& BJJNN+FLMMBJJNN+H#NOO!,,J/zA&*:&6*'G&IJ'# FG 
' S!F
KK7=M# 
'	&s   >CF::
G)3r&   r   r   urllib.parserP   urllib.requesturllib.errorr   r   	itertoolsr   r   typingr   r   r   r   r	   r
   sentry_sdk.utilsr   r-   r   r   sentry_sdk.enveloper   	getLoggerr   r   r   django.utils.deprecationr;   django.httpr<   r=   r>   django.confr?   r^   ra   r   r   BODY_TAG_NAMErz   zipupperr|   r   rH   ImportErrorr   r:   r   r   <module>r      s	   	  	     
 $   
 ) 
		;	' 7 #M   FH8NN$/	Q !
	{ !  NM#( )c-"5"5"79L9L9NOP) $ 
po pl 	  Hs   A C) )C43C4