
    g                    l    S SK Jr  S SKrS SKJrJr  S SKJrJrJ	r	  S SK
JrJrJrJr  Sr " S S5      rg)	    )annotationsN)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c                  >    \ rS rSr  S       SS jjrSS jrSrg)	TrustedHostMiddleware   Nc                   Uc  S/nU HX  nSUSS  ;  d   [         5       eUR                  S5      (       d  M/  US:w  d  M7  UR                  S5      (       a  MO   [         5       e   Xl        [        U5      U l        SU;   U l        X0l        g )N*   z*.)ENFORCE_DOMAIN_WILDCARD
startswithapplistallowed_hosts	allow_anywww_redirect)selfr   r   r   patterns        Y/home/matz/Project1/venv/lib/python3.13/site-packages/starlette/middleware/trustedhost.py__init__TrustedHostMiddleware.__init__   s       EM$Ggabk)B+BB)!!#&&7c>))$//H1HH/ % !-0-(    c                  #    U R                   (       d	  US   S;  a  U R                  XU5      I S h  vN   g [        US9nUR                  SS5      R	                  S5      S   nSnSnU R
                   HH  nXX:X  d/  UR                  S	5      (       a  UR                  US
S  5      (       a  Sn  OSU-   U:X  d  MF  SnMJ     U(       a  U R                  XU5      I S h  vN   g U(       aI  U R                  (       a8  [        US9n	U	R                  SU	R                  -   S9n
[        [        U
5      S9nO
[        SSS9nU" XU5      I S h  vN   g  GN Nt N
7f)Ntype)http	websocket)scopehost :r   Fr   r   Tzwww.)netloc)urlzInvalid host headeri  )status_code)r   r   r   getsplitr   r   endswithr   r   replacer(   r   strr   )r   r$   receivesendheadersr%   is_valid_hostfound_www_redirectr   r)   redirect_urlresponses               r   __call__TrustedHostMiddleware.__call__   sD    >>U6] 3
 
 ((54000&{{62&,,S1!4"))G7#5#5c#:#:t}}WUVUW[?Y?Y $$')%)" * ((54000 "d&7&7&"{{&3::2E{F+L0AB,-BPST540001 1 1 1s;   0EEBE;"EEA+E	E
EEE)r   r   r   r   )NT)r   r	   r   ztyping.Sequence[str] | Noner   boolreturnNone)r$   r   r0   r
   r1   r   r:   r;   )__name__
__module____qualname____firstlineno__r   r7   __static_attributes__ r   r   r   r      s:     6:!	)) 3) 	)
 
)$1r   r   )
__future__r   typingstarlette.datastructuresr   r   starlette.responsesr   r   r   starlette.typesr	   r
   r   r   r   r   rA   r   r   <module>rG      s*    "  1 M M 9 9R 01 01r   