
     h'
                     N    d dl Z d dlmZ d dlmZ d dlmZ  G d de          ZdS )    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        | _        d t          j        D             | _        t          j        | _        t          j        | _        d S )Nc                 6    g | ]}t          j        |          S  )recompile).0rs     Y/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/middleware/security.py
<listcomp>z/SecurityMiddleware.__init__.<locals>.<listcomp>   s     WWW!
1WWW    )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__s     r   r   zSecurityMiddleware.__init__	   s    &&&#7&.&M##7$,$H! 4%5WWx7VWWW'>*2*T'''r   c                 <   |j                             d          | j        ru|                                sct	          fd| j        D                       sE| j        p|                                }t          d||	                                          S d S d S d S )N/c              3   B   K   | ]}|                               V  d S )N)search)r   patternpaths     r   	<genexpr>z5SecurityMiddleware.process_request.<locals>.<genexpr>   s/      QQt,,QQQQQQr   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''M	%%''	 QQQQD<PQQQQQ	
 %;)9)9););D00"&$(=(=(?(?(?@  	 	 	 	 	 	r   c           	         | j         rD|                                r0d|vr,d| j         z  }| j        r|dz  }| j        r|dz  }||j        d<   | j        r|j                            dd           | j        rq|j                            dd                    t          | j        t                    r$d	 | j                            d          D             n| j                             | j        r|                    d
| j                   |S )NzStrict-Transport-Securityz
max-age=%sz; includeSubDomainsz	; preloadzX-Content-Type-OptionsnosniffzReferrer-Policy,c                 6    g | ]}|                                 S r
   )strip)r   vs     r   r   z7SecurityMiddleware.process_response.<locals>.<listcomp>7   s     HHH1QWWYYHHHr   zCross-Origin-Opener-Policy)r   r1   r   r   headersr   
setdefaultr#   join
isinstancestrsplitr%   )r&   r5   response
sts_headers       r   process_responsez#SecurityMiddleware.process_response!   sM   
	G!!##
	G ,8;;%(88J* 433
 *k)
<FH89$ 	M''(@)LLL 
	 ''!!$"6<<.HH(<(B(B3(G(GHHHH-    * 	,/   r   )__name__
__module____qualname__r   r7   rF   __classcell__)r(   s   @r   r   r      s[        
U 
U 
U 
U 
U
 
 
! ! ! ! ! ! !r   r   )r   django.confr   django.httpr   django.utils.deprecationr   r   r
   r   r   <module>rN      sx    				             5 5 5 5 5 5 4 4 4 4 4 4: : : : : : : : : :r   