a
    ^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                   @  s6   e Zd Zdddddddd	Zd
ddddddZdS )TrustedHostMiddlewareNTr   ztyping.Sequence[str] | NoneboolNone)appallowed_hostswww_redirectreturnc                 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   n/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/starlette/middleware/trustedhost.py__init__   s    

zTrustedHostMiddleware.__init__r
   r	   r   )scopereceivesendr   c                   s  | j s|d dvr*| |||I d H  d S t|d}|dddd }d}d}| jD ]B}||ks|d	r||d
d  rd} qqXd| |krXd}qX|r| |||I d H  nT|r| jrt	|d}	|	j
d|	j d}
tt|
d}ntddd}||||I d H  d S )Ntype)httpZ	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#   Zis_valid_hostZfound_www_redirectr   r'   Zredirect_urlresponser   r   r   __call__   s*    

$

zTrustedHostMiddleware.__call__)NT)__name__
__module____qualname__r   r0   r   r   r   r   r      s     r   )
__future__r   typingZstarlette.datastructuresr   r   Zstarlette.responsesr   r   r   Zstarlette.typesr   r	   r
   r   r   r   r   r   r   r   <module>   s   