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   úZ/var/www/html/premium_crap/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
    