
    Oj	                    |    d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZmZmZ dZ G d d	      Zy
)    )annotations)Sequence)parse_host_header)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c                  0    e Zd Z	 	 d	 	 	 	 	 	 	 ddZddZy)TrustedHostMiddlewareNc                    |dg}|D ]H  }d|dd  vsJ t                |j                  d      s'|dk7  s-|j                  d      r?J t                 || _        t        |      | _        d|v | _        || _        y )N*   z*.)ENFORCE_DOMAIN_WILDCARD
startswithapplistallowed_hosts	allow_anywww_redirect)selfr   r   r   patterns        w/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/starlette/middleware/trustedhost.py__init__zTrustedHostMiddleware.__init__   s       EM$ 	IGgabk)B+BB)!!#&7c>))$/H1HH/	I !-0-(    c                  K   | j                   s|d   dvr| j                  |||       d {    y t        |      }t        |j	                  d            }| t        dd      |||       d {    y |j                  }d}d}| j                  D ];  }	||	k(  s%|	j                  d	      r|j                  |	d
d        rd} nd|z   |	k(  s:d}= |r| j                  |||       d {    y |rM| j                  rAt        |      }
|
j                  d|
j                  z         }t        t        |            }nt        dd      } ||||       d {    y 7 37 7 y7 w)Ntype)http	websocket)scopehostzInvalid host headeri  )status_codeFr   r   Tzwww.)netloc)url)r   r   r   r   getr   r%   r   r   endswithr   r   replacer'   r	   str)r   r$   receivesendheadersparsed_hostr%   is_valid_hostfound_www_redirectr   r(   redirect_urlresponses                r   __call__zTrustedHostMiddleware.__call__    s{    >>U6] 3
 
 ((5'4000&'F(;<K#$9sKESZ\`aaa")) 	*Gw7#5#5c#:t}}WUVUW[?Y $$')%)"	* ((5'4000 "d&7&7&"{{&3::2E{F+L0AB,-BPST5'4000; 1 b 1 1sN   *E(EAE(2E"3AE(E(*E$+A.E(E&E("E($E(&E()NT)r   r   r   zSequence[str] | Noner   boolreturnNone)r$   r   r-   r   r.   r   r7   r8   )__name__
__module____qualname__r   r5    r   r   r   r      s:     /3!	)) ,) 	)
 
)$"1r   r   N)
__future__r   collections.abcr   starlette._utilsr   starlette.datastructuresr   r   starlette.responsesr   r	   r
   starlette.typesr   r   r   r   r   r   r<   r   r   <module>rC      s-    " $ . 1 M M 9 9R 51 51r   