
    D_	h00                         S SK Jr  SSKJrJrJr  \" 1 Sk5      r\" S/ SQ5      r " S S\	5      r
S	SS	S
S\4S jr\4S jrS rS\4S jrg	)    )
namedtuple   )
BadRequestloggerundquote>   	FORWARDEDX_FORWARDED_BYX_FORWARDED_FORX_FORWARDED_HOSTX_FORWARDED_PORTX_FORWARDED_PROTO	Forwarded)byfor_hostprotoc                   (   ^  \ rS rSrU 4S jrSrU =r$ )MalformedProxyHeader   c                 J   > Xl         X l        X0l        [        TU ]  XU5        g N)headerreasonvaluesuper__init__)selfr   r   r   	__class__s       T/var/www/html/fileupload/venv/lib/python3.13/site-packages/waitress/proxy_headers.pyr   MalformedProxyHeader.__init__   s!    
/    )r   r   r   )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__)r   s   @r   r   r      s    0 0r!   r   NTFc                 ,   ^ ^^^^^^ U UUUUUU4S jnU$ )Nc                 j  > [         nU S   nT
S:X  d  UT
:X  a   [        U TTT	S9nT(       a  [        XTT	S9  T" X5      $ ! [         ah  nT	R                  " SUR                  UUR
                  UR                  5        [        SUR                   S35      nUR                  X5      s S nA$ S nAff = f)NREMOTE_ADDR*)trusted_proxy_counttrusted_proxy_headersr   z3Malformed proxy header "%s" from "%s": %s value: %szHeader "z" malformed.)log_warningr   )
PROXY_HEADERSparse_proxy_headersr   warningr   r   r   r   wsgi_responseclear_untrusted_headers)environstart_responseuntrusted_headersremote_peerexerrorappclear_untrustedlog_untrustedr   trusted_proxyr,   r-   s         r   translate_proxy_headers9proxy_headers_middleware.<locals>.translate_proxy_headers$   s    )m,C;-#?D$7(;*?!	%!$ #f 7++# ( 	DIIIIIHH #Xbii[#EF**7CC	Ds   A   
B2
AB-'B2-B2 )r:   r=   r,   r-   r;   r<   r   r>   s   ``````` r   proxy_headers_middlewarerA      s    , ,< #"r!   c           	      .   Uc
  [        5       n/ nS=n=n=pxS n	[        [        5      n
S nSU;   a  SU ;   a   / nU S   R                  S5      nU H[  nUR                  5       n[	        U5      nSU;  a&  SU;   a   US   S	:w  a  UR                  S
U S	35        MJ  UR                  U5        M]     XA* S  nUS   n	U
R                  S5        SR                  X* S  5      R                  5       U S'   SU;   a  SU ;   a   / nU S   R                  S5      nU H/  nUR                  5       n[	        U5      nUR                  U5        M1     X* S  nUS   nU
R                  S5        SR                  UU* S  5      R                  5       U S'   SU;   a:   [	        U R                  SS5      5      nSU;   a  U" 5         U
R                  S5        SU;   a:   [	        U R                  SS5      5      nSU;   a  U" 5         U
R                  S5        SU;   a  U
R                  S5        SU;   a  U R                  SS 5      n[        S1-
  n
U(       Ga  / nUR                  S5      n U GH/  nUR                  5       nS=n=pVS=nnUR                  S5       H  nUR                  5       nU(       d  M  UR                  S 5      u  nnnUS :w  a  [        S!5      eUR                  5       U:w  a  [        S"5      eUR                  5       U:w  a  [        S#5      eUS$:X  a  [	        U5      nM  US%:X  a  [	        U5      nM  US&:X  a  [	        U5      nM  US':X  a  [	        U5      nM  UR                  " S(U-  5        M     UR                  [!        UXEU5      5        GM2     UU* S  nSR                  UU* S  5      R                  5       U S'   US S S2    HB  nUR"                  =(       d    U	n	UR$                  =(       d    UnUR&                  =(       d    UnMD     U(       aM  UR                  5       nUS*;  a  [        U(       a  S+S,U5      eSS,U5      eX`S-'   U(       d  US.:X  a  S/nUS0:X  a  S1nU(       a  SU;   aK  US   S	:w  aB  UR)                  SS25      u  nnUR                  5       [        U5      nnUU:w  a  UnUU S3'   XPS4'   OqXPS3'   XPS4'   U(       ab  US5;  a  S6R+                  XW5      U S4'   OGUS/:X  a  U S-   S.:w  a  S6R+                  XW5      U S4'   O#US1:X  a  U S-   S0:w  a  S6R+                  XW5      U S4'   U(       a  [        U5      U S7'   U	(       ax  SU	;   aN  U	S   S	:w  aE  U	R)                  SS25      u  nn[-        UR                  5       5      U S8'   UR                  5       U S9'   O[-        U	R                  5       5      U S8'   U S8   U S:'   U
$ ! [         a  n[        S[        U5      U S   5      eS nAff = f! [         a  n[        S[        U5      U S   5      eS nAff = f! [         a  n[        S[        U5      U S   5      eS nAff = f! [         a  n[        S[        U5      U S   5      eS nAff = f! [         a  n[        S)[        U5      U S   5      eS nAff = f);N c                      [        S5      e)Nz8Unspecified behavior for multiple values found in header)
ValueErrorr@   r!   r   raise_for_multiple_values6parse_proxy_headers.<locals>.raise_for_multiple_valuesP   s    STTr!   zx-forwarded-forHTTP_X_FORWARDED_FOR,.:][r   r
   zX-Forwarded-Forzx-forwarded-hostHTTP_X_FORWARDED_HOSTr   zX-Forwarded-Hostzx-forwarded-protoHTTP_X_FORWARDED_PROTOr   zX-Forwarded-Protozx-forwarded-portHTTP_X_FORWARDED_PORTr   zX-Forwarded-Portzx-forwarded-byr	   	forwardedHTTP_FORWARDEDr   ;=z"Invalid forwarded-pair missing "="z)Token may not be surrounded by whitespacez)Value may not be surrounded by whitespacer   forr   r   zUnknown Forwarded token: %sr   >   httphttpszForwarded Proto=zunsupported proto valuezwsgi.url_schemerW   80rX   443r   SERVER_NAME	HTTP_HOST>   rY   rZ   z{}:{}SERVER_PORTr*   REMOTE_PORTREMOTE_HOST)setr/   splitstripr   appendremovejoin	Exceptionr   strgetlower	partitionrE   r1   r   r   r   r   rsplitformatstrip_brackets)r4   r,   r-   r   forwarded_forforwarded_hostforwarded_protoforwarded_portrR   client_addrr6   rF   raw_forwarded_forforward_hopr8   forwarded_host_multipleraw_forwarded_hostforward_hostproxiesraw_forwardedforwarded_elementforwarded_bypairtokenequalsr   proxyr   portaddrs                                 r   r0   r0   E   sS    $ #MDFFNF_F~KM*U 116LPW6W	M '(> ? E Ec J0)//1&{3 k);&;r?c+A!((1[M);<!((5  1 **>*?@M'*K$$%67.1hh!"6"78/eg *+ 	33#w.	&(#!()@!A!G!G!L 2+113'5'..|< !3
 '>>R>S&T#4Q7N$$%78/2xx"$7#7#890eg +, 33	&w{{3KR'PQOo%)+$$%89 22	%gkk2I2&NONn$)+$$%78 00 	  !12++KK 0$7	)[M9 !,/	X%2! %6$;$;$=!CEEE022-33C8D::<D +/>>#+>(E65}()MNN{{}-()TUU{{}-()TUU}'/%(0&)1%')*25/ 'Du'LM= 9@ $m_Q &3` ../0$'HH../0%

%' 	 !& TrT]E**3K"ZZ9>N#kk<_O #
 )//1"33&&/") 5H)  &5!"&(!%')!&. ^B%73%>'..sA6JD$s4y$D %!% &*GM"#1K  &4M"#1K !6+2>>&,GK( $t+8I0Jf0T+2>>&,GK( $u,9J1Kw1V+2>>&,GK( !$^!4++b/S"8$++C3JD$%3DJJL%AGM"%)ZZ\GM"%3K4E4E4G%HGM"!(!7[  	&!3r7G4J,K 	2  	&"CGW5L-M 	  	&#SWg6N.O 	  	&"CGW5L-M 	@  	X&{CGWEU=VWW	Xsz   B7W  <BW+ 9X 9Y D6Y,  
W(
W##W(+
X5XX
X> X99X>
Y)Y$$Y),
Z6ZZc                 4    U S   S:X  a  U S   S:X  a  U SS $ U $ )Nr   rN   rL   rM   r   r@   )r   s    r   rm   rm   >  s(    Aw#~$r(c/AbzKr!   c           	      B   U Vs/ s H  nU R                  SU-   S5      SLd  M  UPM!     nnU(       ab  U(       aZ  U Vs/ s H*  nSR                  S UR                  S5       5       5      PM,     nnUR                  " SSR                  U5      5        g g g s  snf s  snf )NHTTP_F-c              3   @   #    U  H  oR                  5       v   M     g 7fr   )
capitalize).0xs     r   	<genexpr>*clear_untrusted_headers.<locals>.<genexpr>O  s     ?->\\^^->s   _zNRemoved untrusted headers (%s). Waitress recommends these be removed upstream.z, )popre   ra   r1   )r4   r6   r.   r   r   untrusted_headers_removeds         r   r3   r3   D  s    
 (!'F;;w'/u< 	'  ! 0 4%
3 HH?V\\#->??3 	" %
 	 II/0	
 1{!%
s   BB1B)collectionsr   	utilitiesr   r   r   	frozensetr/   r   rf   r   rA   r0   rm   r3   r@   r!   r   <module>r      sq    " 3 3	 {$CD	09 0 '#V AGvr -2&
r!   