o
    ^~#g                     @  sf   d dl mZ d dl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 dZdS )	    )annotationsN)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c                   @  s&   e Zd Z		ddddZdddZdS )TrustedHostMiddlewareNTappr   allowed_hoststyping.Sequence[str] | Nonewww_redirectboolreturnNonec                 C  sx   |d u rdg}|D ] }d|dd  vsJ t |dr)|dkr)|ds)J t q	|| _t|| _d|v | _|| _d S )N*   z*.)ENFORCE_DOMAIN_WILDCARD
startswithr   listr   	allow_anyr   )selfr   r   r   pattern r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/starlette/middleware/trustedhost.py__init__   s   


zTrustedHostMiddleware.__init__scoper
   receiver	   sendr   c                   s  | j s
|d dvr| |||I d H  d S t|d}|dddd }d}d}| jD ] }||ksA|d	rE||d
d  rEd} n	d| |krMd}q-|r\| |||I d H  d S |rw| jrwt	|d}	|	j
d|	j d}
tt|
d}ntddd}||||I d H  d S )Ntype)http	websocket)r   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   r    r!   headersr%   is_valid_hostfound_www_redirectr   r)   redirect_urlresponser   r   r   __call__   s.   

$

zTrustedHostMiddleware.__call__)NT)r   r   r   r   r   r   r   r   )r   r
   r    r	   r!   r   r   r   )__name__
__module____qualname__r   r5   r   r   r   r   r      s
    r   )
__future__r   typingstarlette.datastructuresr   r   starlette.responsesr   r   r   starlette.typesr   r	   r
   r   r   r   r   r   r   r   <module>   s    