U
    µ©ÞaK	  ã                   @   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ddd„Zdd„ Zdd„ ZdS )	ÚSecurityMiddlewareNc                 C   s\   t j| _t j| _t j| _t j| _t j	| _
t j| _t j| _dd„ t jD ƒ| _t j| _|| _d S )Nc                 S   s   g | ]}t  |¡‘qS © )ÚreÚcompile)Ú.0Úrr   r   ú‰/home/adriano.carvalho/ftp/files/BrinquedotecaVirtual/brinquedotecavirtual/venv/lib/python3.8/site-packages/django/middleware/security.pyÚ
<listcomp>   s     z/SecurityMiddleware.__init__.<locals>.<listcomp>)r   ZSECURE_HSTS_SECONDSÚsts_secondsZSECURE_HSTS_INCLUDE_SUBDOMAINSÚsts_include_subdomainsZSECURE_HSTS_PRELOADÚsts_preloadZSECURE_CONTENT_TYPE_NOSNIFFÚcontent_type_nosniffZSECURE_BROWSER_XSS_FILTERÚ
xss_filterZSECURE_SSL_REDIRECTÚredirectZSECURE_SSL_HOSTÚredirect_hostZSECURE_REDIRECT_EXEMPTÚredirect_exemptZSECURE_REFERRER_POLICYÚreferrer_policyÚget_response)Úselfr   r   r   r   Ú__init__	   s    zSecurityMiddleware.__init__c                    sX   |j  d¡‰ | jrT| ¡ sTt‡ fdd„| jD ƒƒsT| jp>| ¡ }td|| 	¡ f ƒ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   Zget_full_path)r   ÚrequestÚhostr   r   r   Úprocess_request   s    ÿÿÿz"SecurityMiddleware.process_requestc              	   C   s¨   | j rD| ¡ rDd|krDd| j  }| jr.|d }| jr<|d }||d< | jrV| dd¡ | jrh| dd¡ | jr¤| d	d
 t	| jt
ƒršdd„ | j d
¡D ƒn| j¡¡ |S )NzStrict-Transport-Securityz
max-age=%sz; includeSubDomainsz	; preloadzX-Content-Type-OptionsZnosniffzX-XSS-Protectionz1; mode=blockzReferrer-Policyú,c                 S   s   g | ]}|  ¡ ‘qS r   )Ústrip)r	   Úvr   r   r   r   3   s     z7SecurityMiddleware.process_response.<locals>.<listcomp>)r   r    r   r   r   Ú
setdefaultr   r   ÚjoinÚ
isinstanceÚstrÚsplit)r   r#   ÚresponseZ
sts_headerr   r   r   Úprocess_response   s(    ÿ


ÿþz#SecurityMiddleware.process_response)N)Ú__name__Ú
__module__Ú__qualname__r   r%   r/   r   r   r   r   r      s   

r   )r   Zdjango.confr   Zdjango.httpr   Zdjango.utils.deprecationr   r   r   r   r   r   Ú<module>   s   