
    h'
                     F    S SK r S SKJr  S SKJr  S SKJr   " S S\5      rg)    N)settings)HttpResponsePermanentRedirect)MiddlewareMixinc                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )SecurityMiddleware   c                   > [         TU ]  U5        [        R                  U l        [        R
                  U l        [        R                  U l        [        R                  U l
        [        R                  U l        [        R                  U l        [        R                   Vs/ s H  n[         R"                  " U5      PM     snU l        [        R&                  U l        [        R*                  U l        g s  snf 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      L/var/www/html/env/lib/python3.13/site-packages/django/middleware/security.pyr   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   ! C4c                 Z  ^ UR                   R                  S5      mU R                  (       a~  UR                  5       (       dh  [	        U4S jU R
                   5       5      (       dC  U R                  =(       d    UR                  5       n[        SU< UR                  5       < 35      $ g g g )N/c              3   D   >#    U  H  oR                  T5      v   M     g 7fr
   )search).0patternpaths     r%   	<genexpr>5SecurityMiddleware.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_request"SecurityMiddleware.process_request   s    ||""3'MM%%''QD<P<PQQQ%%;)9)9);D0"&(=(=(?@  R (     c           
         U R                   (       ad  UR                  5       (       aO  SU;  aI  SU R                   -  nU R                  (       a  US-  nU R                  (       a  US-  nX2R                  S'   U R
                  (       a  UR                  R                  SS5        U R                  (       a  UR                  R                  SSR                  [        U R                  [        5      (       a9  U R                  R                  S5       Vs/ s H  oDR                  5       PM     snOU R                  5      5        U R                  (       a  UR                  S	U R                  5        U$ s  snf )
NzStrict-Transport-Securityz
max-age=%sz; includeSubDomainsz	; preloadzX-Content-Type-OptionsnosniffzReferrer-Policy,zCross-Origin-Opener-Policy)r   r1   r   r   headersr   
setdefaultr   join
isinstancestrsplitstripr    )r!   r5   response
sts_headervs        r%   process_response#SecurityMiddleware.process_response!   s/   !!##+8;%(8(88J**33
k)
<F89$$''(@)L ''!!$"6"6<< )-(<(<(B(B3(GH(G1WWY(GH-- **,//  Is   E0)	r   r    r   r   r   r   r   r   r   )	__name__
__module____qualname____firstlineno__r   r7   rG   __static_attributes____classcell__)r$   s   @r%   r   r      s    
U
! !r9   r   )r   django.confr   django.httpr   django.utils.deprecationr   r    r9   r%   <module>rS      s    	   5 4: :r9   