3
ªôÁgÜ	  ã               @   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‡ fdd„	Zdd„ Zdd„ Z‡  ZS )	ÚSecurityMiddlewareNc                sb   t ƒ j|ƒ 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 j|ƒ‘qS © )ÚreÚcompile)Ú.0Úrr   r   úX/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/middleware/security.pyú
<listcomp>   s    z/SecurityMiddleware.__init__.<locals>.<listcomp>)ÚsuperÚ__init__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)ÚselfZget_response)Ú	__class__r   r   r      s    zSecurityMiddleware.__init__c                s\   |j jdƒ‰ | jrX|jƒ  rXt‡ fdd„| jD ƒƒ rX| jpB|jƒ }td||j	ƒ f ƒS d S )Nú/c             3   s   | ]}|j ˆ ƒ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 rF|jƒ rFd|krFd| j  }| jr.|d }| jr<|d }||jd< | jrZ|jjddƒ | jrn|jjddƒ | jr¬|jjd	d
j	t
| jtƒr¢dd„ | j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 | ]}|j ƒ ‘qS r   )Ústrip)r	   Úvr   r   r   r   5   s    z7SecurityMiddleware.process_response.<locals>.<listcomp>)r   r    r   r   Úheadersr   Ú
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%   r0   Ú__classcell__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   