o
    {,h'
                     @   s@   d dl Z d dlmZ d dlmZ d dlmZ G dd deZdS )    N)settings)HttpResponsePermanentRedirect)MiddlewareMixinc                       s,   e Zd Z fddZdd Zdd Z  ZS )SecurityMiddlewarec                    sb   t  | tj| _tj| _tj| _tj	| _
tj| _tj| _dd tjD | _tj| _tj| _d S )Nc                 S   s   g | ]}t |qS  )recompile).0rr   r   P/var/www/html/rh/venv/lib/python3.10/site-packages/django/middleware/security.py
<listcomp>   s    z/SecurityMiddleware.__init__.<locals>.<listcomp>)super__init__r   SECURE_HSTS_SECONDSsts_secondsSECURE_HSTS_INCLUDE_SUBDOMAINSsts_include_subdomainsSECURE_HSTS_PRELOADsts_preloadSECURE_CONTENT_TYPE_NOSNIFFcontent_type_nosniffSECURE_SSL_REDIRECTredirectSECURE_SSL_HOSTredirect_hostSECURE_REDIRECT_EXEMPTredirect_exemptSECURE_REFERRER_POLICYreferrer_policy!SECURE_CROSS_ORIGIN_OPENER_POLICYcross_origin_opener_policy)selfget_response	__class__r   r   r   	   s   zSecurityMiddleware.__init__c                    s`   |j d | jr*| s,t fdd| jD s.| jp| }td||	 f S d S d S d S )N/c                 3   s    | ]}|  V  qd S )N)search)r	   patternpathr   r   	<genexpr>   s    z5SecurityMiddleware.process_request.<locals>.<genexpr>zhttps://%s%s)
r)   lstripr   	is_secureanyr   r   get_hostr   get_full_path)r!   requesthostr   r(   r   process_request   s   z"SecurityMiddleware.process_requestc              	   C   s   | j r#| r#d|vr#d| j  }| jr|d7 }| jr|d7 }||jd< | jr-|jdd | jrL|jddt	| jt
rGd	d
 | jdD n| j | jrV|d| j |S )NzStrict-Transport-Securityz
max-age=%sz; includeSubDomainsz	; preloadzX-Content-Type-OptionsnosniffzReferrer-Policy,c                 S   s   g | ]}|  qS r   )strip)r	   vr   r   r   r   7   s    z7SecurityMiddleware.process_response.<locals>.<listcomp>zCross-Origin-Opener-Policy)r   r,   r   r   headersr   
setdefaultr   join
isinstancestrsplitr    )r!   r0   response
sts_headerr   r   r   process_response!   s8   


	z#SecurityMiddleware.process_response)__name__
__module____qualname__r   r2   r?   __classcell__r   r   r#   r   r      s    r   )r   django.confr   django.httpr   django.utils.deprecationr   r   r   r   r   r   <module>   s
    