
    g'
                     F    d dl Z d dlmZ d dlmZ d dlmZ  G d de      Zy)    N)settings)HttpResponsePermanentRedirect)MiddlewareMixinc                   *     e Zd Z fdZd Zd Z xZS )SecurityMiddlewarec                    t         |   |       t        j                  | _        t        j
                  | _        t        j                  | _        t        j                  | _
        t        j                  | _        t        j                  | _        t        j                  D cg c]  }t!        j"                  |       c}| _        t        j&                  | _        t        j*                  | _        y c c}w N)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recompileredirect_exemptSECURE_REFERRER_POLICYreferrer_policy!SECURE_CROSS_ORIGIN_OPENER_POLICYcross_origin_opener_policy)selfget_responser	__class__s      r/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/middleware/security.pyr   zSecurityMiddleware.__init__	   s    &#77&.&M&M##77$,$H$H! 44%557?7V7VW7V!

17VW'>>*2*T*T'  Xs   !C0c                 ,   |j                   j                  d      | j                  rl|j                         s[t	        fd| j
                  D              s<| j                  xs |j                         }t        d||j                               S y y y )N/c              3   @   K   | ]  }|j                          y wr	   )search).0patternpaths     r$   	<genexpr>z5SecurityMiddleware.process_request.<locals>.<genexpr>   s     Q<Pt,<Ps   zhttps://)
r+   lstripr   	is_secureanyr   r   get_hostr   get_full_path)r    requesthostr+   s      @r$   process_requestz"SecurityMiddleware.process_request   s    ||""3'MM%%'QD<P<PQQ%%;)9)9);D0"&(=(=(?@  R (     c           
         | j                   rT|j                         rDd|vr@d| j                   z  }| j                  r|dz  }| j                  r|dz  }||j                  d<   | j
                  r|j                  j                  dd       | j                  r|j                  j                  ddj                  t        | j                  t              r7| j                  j                  d      D cg c]  }|j                          c}n| j                               | j                  r|j                  d	| j                         |S c c}w )
NzStrict-Transport-Securityz
max-age=%sz; includeSubDomainsz	; preloadzX-Content-Type-OptionsnosniffzReferrer-Policy,zCross-Origin-Opener-Policy)r   r.   r   r   headersr   
setdefaultr   join
isinstancestrsplitstripr   )r    r2   response
sts_headervs        r$   process_responsez#SecurityMiddleware.process_response!   s-   !!#+8;%(8(88J**33
k)
<FH89$$''(@)L ''!!$"6"6< )-(<(<(B(B3(GH(G1QWWY(GH-- **,//  Is   -E)__name__
__module____qualname__r   r4   rC   __classcell__)r#   s   @r$   r   r      s    
U
!r5   r   )r   django.confr   django.httpr   django.utils.deprecationr   r    r5   r$   <module>rL      s    	   5 4: :r5   