î

_ÝVÙ  ã               @   sF   d  d l  Z  d  d l m Z d  d l m Z Gd d „  d e ƒ Z d S)é    N)Úsettings)ÚHttpResponsePermanentRedirectc               @   s4   e  Z d  Z d d „  Z d d „  Z d d „  Z d S)ÚSecurityMiddlewarec             C   se   t  j |  _ t  j |  _ t  j |  _ t  j |  _ t  j	 |  _
 t  j |  _ d d „  t  j Dƒ |  _ d  S)Nc             S   s   g  |  ] } t  j | ƒ ‘ q S© )ÚreÚcompile)Ú.0Úrr   r   ú</tmp/pip-build-ghmbqnp_/Django/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_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_exempt)Úselfr   r   r
   Ú__init__   s    zSecurityMiddleware.__init__c                s~   | j  j d ƒ ‰  |  j rz | j ƒ  rz t ‡  f d d †  |  j Dƒ ƒ rz |  j p] | j ƒ  } t d | | j	 ƒ  f ƒ Sd  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  rQ | j ƒ  rQ d | k rQ d |  j  } |  j rD | d } n  | | d <n  |  j rs d | k rs d | d <n  |  j r• d | k r• d | d <n  | S)Nzstrict-transport-securityz
max-age=%sz; includeSubDomainszx-content-type-optionsZnosniffzx-xss-protectionz1; mode=block)r   r   r   r   r   )r   r   ÚresponseZ
sts_headerr   r   r
   Úprocess_response   s    	z#SecurityMiddleware.process_responseN)Ú__name__Ú
__module__Ú__qualname__r   r    r"   r   r   r   r
   r      s   	
r   )r   Zdjango.confr   Zdjango.httpr   Úobjectr   r   r   r   r
   Ú<module>   s   