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d fdd	Zdd Zdd Z  ZS )	SecurityMiddlewareNc                    sb   t  | 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   b/var/www/html/magazine_api/magazine_env/lib/python3.10/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 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   Z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 }| jr|d }||jd< | jr-|jdd | jr7|jdd | jrV|jd	d
	t
| jtrQd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   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_responser   )__name__
__module____qualname__r   r(   r3   __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
    