ruạṛ
a �u:j� � @ sZ d dl Z d dlmZmZ d dlmZmZmZ d dlm Z m Z mZmZ dZ G dd� d�ZdS )� N)�URL�Headers)�PlainTextResponse�RedirectResponse�Response)�ASGIApp�Receive�Scope�Sendz6Domain wildcard patterns must be like '*.example.com'.c @ sB e Zd Zd eejeje edd�dd�Z e eedd�dd�Z dS ) �TrustedHostMiddlewareNT)�app� allowed_hosts�www_redirect�returnc C sx |d u rdg}|D ]@}d|dd � vs.J t ��|�d�r|dkr|�d�sJ t ��q|| _t|�| _d|v | _|| _d S )N�*� z*.)�ENFORCE_DOMAIN_WILDCARD� startswithr �listr � allow_anyr )�selfr r r �pattern� r �S/opt/bart/bart_venv/lib/python3.9/site-packages/starlette/middleware/trustedhost.py�__init__ s zTrustedHostMiddleware.__init__)�scope�receive�sendr c � s | j s|d dvr*| �|||�I d H d S t|d�}|�dd��d�d }d}d}| jD ]B}||ks�|�d �r�|�|d d � �r�d} q�qXd| |krXd}qX|r�| �|||�I d H nT|r�| jr�t |d�} | j d| j d �} tt | �d�}ntddd�}||||�I d H d S )N�type)�httpZ websocket)r �host� �:r Fr r Tzwww.)�netloc)�urlzInvalid host headeri� )�status_code)r r r �get�splitr r �endswithr r �replacer# r �strr )r r r r �headersr Z is_valid_hostZfound_www_redirectr r$ Zredirect_url�responser r r �__call__ s2 �� zTrustedHostMiddleware.__call__)NT)�__name__� __module__�__qualname__r �typing�Optional�Sequencer* �boolr r r r r- r r r r r s ��r )r1 Zstarlette.datastructuresr r Zstarlette.responsesr r r Zstarlette.typesr r r r r r r r r r �<module> s
cải xoăn