
    D_	hE                         S r SSKrSSKrSSKrSSKJrJr  SSKJr  \	" S5      r
\	" S \ 5       5      rS rS	 rS
 rS rS rS rS rS r " S S\5      r " S S\5      r " S S5      rg)z$Adjustments are tunable parameters.
    N   )HAS_IPV6WIN)PROXY_HEADERS)ttrueyyeson1c              #   `   #    U  H$  oR                  5       R                  S S5      v   M&     g7f)_-N)lowerreplace).0headers     R/var/www/html/fileupload/venv/lib/python3.13/site-packages/waitress/adjustments.py	<genexpr>r      s'       3@LLN3$$=s   ,.c                     U c  g[        U [        5      (       a  U $ [        U 5      R                  5       n U R	                  5       [
        ;   $ )a7  Return the boolean value ``True`` if the case-lowered value of string
input ``s`` is any of ``t``, ``true``, ``y``, ``on``, or ``1``, otherwise
return the boolean value ``False``.  If ``s`` is the value ``None``,
return ``False``.  If ``s`` is already one of the boolean values ``True``
or ``False``, return it.F)
isinstanceboolstrstripr   truthyss    r   asboolr      s>     	y!TAA779    c                     [        U S5      $ )z3Convert the given octal string to an actual number.   )intr   s    r   asoctalr#   ,   s    q!9r   c                     [        U [        5      (       a8  [        S U R                  5        Vs/ s H  oR	                  5       PM     sn5      n [        U 5      $ s  snf N)r   r   filter
splitlinesr   list)valuexs     r   aslist_cronlyr+   1   sI    %t1A1A1CD1CAggi1CDE; Es   A
c                 t    [        U 5      n/ nU H$  n U R                  5       nUR                  U5        M&     U$ )zReturn a list of strings, separating the input based on newlines
and, if flatten=True (the default), also split on spaces within
each line.)r+   splitextend)r)   valuesresult	subvaluess       r   aslistr2   7   s;     5!FFKKM	i   Mr   c                 *    [        [        U 5      5      $ r%   )setr2   )r)   s    r   assetr5   C   s    ve}r   c                 z    U R                  5       n U (       a#  SU R                  S5      R                  S5      -   n U $ )N/)r   lstriprstripr   s    r   slash_fixed_strr:   G   s4    		A !((3-&&s++Hr   c                 *    U (       a  [        U 5      $ S $ r%   )r   r   s    r   str_iftruthyr<   P   s    3q6 D r   c                 t    U  Vs/ s H&  n[        U[        R                  5      (       d  M$  UPM(     sn$ s  snf )zNChecks if the elements in the list are of type socket and
removes them if not.)r   socket)socketssocks     r   as_socket_listrA   T   s)     %HWT
4(GDWHHHs   #55c                       \ rS rSrSrg)_str_markerZ    N__name__
__module____qualname____firstlineno____static_attributes__rE   r   r   rC   rC   Z       r   rC   c                       \ rS rSrSrg)_int_marker^   rE   NrF   rE   r   r   rN   rN   ^   rL   r   rN   c                   N   \ rS rSrSr/ S\4PS\4PS\4PS\4PS\4PS\4PS	\	4PS
\4PS\
4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\4PS\	4PS\4PS\4PS \4PS!\4PS"\4PS#\4PS$\4P7r\" \5      r\" S%5      r\" S&5      r\ S'\ 3/rS(rS)rS)r\" 5       rS*rS+rS,rS-rS.rS/r S0r!S1r"S2r#S3r$S4r%S5r&S6r'S7r(S+r)S8r*S9r+S*r,S)r-S:r.\/R`                  \/Rb                  S14/r2S1r3S*r4S+r5S+r6/ r7S;r8S<r9S= r:\;S> 5       r<\;S? 5       r=S@r>g))AAdjustmentsb   z'This class contains tunable parameters.hostportipv4ipv6listenthreadstrusted_proxytrusted_proxy_counttrusted_proxy_headerslog_untrusted_proxy_headersclear_untrusted_proxy_headers
url_scheme
url_prefixbacklog
recv_bytes
send_bytesoutbuf_overflowoutbuf_high_watermarkinbuf_overflowconnection_limitcleanup_intervalchannel_timeoutlog_socket_errorsmax_request_header_sizemax_request_body_sizeexpose_tracebacksidentasyncore_loop_timeoutasyncore_use_pollunix_socketunix_socket_permsr?   channel_request_lookaheadserver_namez0.0.0.0i  :   NFThttp waitressi   i    r   i   i   i   d      x   i   i   @i  r   zwaitress.invalidc           	      f
   SU;   a  SU;   d  SU;   a  [        S5      eSU;   a  SU;   a  [        S5      eSU;   a  SU;   d  SU;   a  [        S5      eSU;   a  SU;   a  [        S	5      eSU;   a  SU;   d  SU;   a  [        S
5      eSU;   a  SU;   a  [        S5      eSU;   a  [        R                  " S[        5        UR	                  5        HA  u  p#X R
                  ;  a  [        SU-  5      e[        XU R
                  U   " U5      5        MC     [        U R                  [        5      (       a  [        U R                  [        5      (       d!  U R                   SU R                   3/U l        [        R                  nU R                  (       d  [         (       d  [        S5      eU R                  (       a!  U R"                  (       d  [        R$                  nU R                  (       d,  U R"                  (       a  [         (       a  [        R&                  n/ n/ nU R                   GHZ  nSU;   a1  UR)                  SS5      u  pSU	;   a  U[+        U R                  5      pOU[+        U R                  5      p[,        (       a   [/        U	5      n	 SU;   a&  SU;   a   UR3                  S5      R5                  S5      nUS:X  a  S n[        R6                  " UU	U[        R8                  [        R:                  [        R<                  5       Ht  n
U
u  ppnUS   S:X  d#  US   R?                  SS5      S   US   4U;  d  M5  URA                  XX45        URA                  US   R?                  SS5      S   US   45        Mv     GM]     U RB                  b  U RD                  c  [        S5      eU RB                  c  SU l!        U RF                  (       a  U RD                  c  [        S5      eU RF                  (       a  U RF                   Vs1 s H  nURI                  5       iM     snU l#        U RF                  [J        -
  nU(       a5  [        SSRM                  U5      < SSRM                  [J        5      < 35      eSU RF                  ;   a   U RF                  S1-
  (       a  [        S5      eO0U RD                  b#  [        R                  " S [        5        S!1U l#        XPl        U RO                  U RP                  5        g ! [0         a    [        S5      ef = f! [0         a    [        S5      ef = fs  snf )"NrW   rS   rT   z-host or port may not be set if listen is set.r?   z'socket may not be set if listen is set.z.host or port may not be set if sockets is set.rp   z,unix_socket may not be set if sockets is setz1unix_socket may not be set if host or port is setz+unix_socket may not be set if listen is setrb   z.send_bytes will be removed in a future releasezUnknown adjustment %rrt   zGIPv4 is disabled but IPv6 is not available. Cowardly refusing to start.r   ]z>Windows does not support service names instead of port numbers[*r   %zInvalid host/port specified.z@trusted_proxy_count has no meaning without setting trusted_proxyzBtrusted_proxy_headers has no meaning without setting trusted_proxyz.Received unknown trusted_proxy_headers value (z, z) expected one of 	forwardedzyThe Forwarded proxy header and the X-Forwarded-{By,Host,Proto,Port,For} headers are mutually exclusive. Can't trust both!zNo proxy headers were marked as trusted, but trusted_proxy was set. Implicitly trusting X-Forwarded-Proto for backwards compatibility. This will be removed in future versions of waitress.zx-forwarded-proto))
ValueErrorwarningswarnDeprecationWarningitems
_param_mapsetattrr   rS   rC   rT   rN   rW   r>   	AF_UNSPECrU   r   rV   AF_INETAF_INET6rsplitr   r   r"   	Exceptionr   r9   getaddrinfoSOCK_STREAMIPPROTO_TCP
AI_PASSIVEr-   appendrZ   rY   r[   r   KNOWN_PROXY_HEADERSjoincheck_socketsr?   )selfkwkvenabled_familieswanted_socketshp_pairsirS   rT   r   familysocktypeprotor   sockaddrr   unknown_valuess                     r   __init__Adjustments.__init__$  s   r>v|v|LMMr>i2oFGG?""MNN?}2KLLBFbLFbLPQQB8r>JKK2MM@BT HHJDA' !81!<==DT__Q/23 
 $))[11II{:
 :
 #ii[$))56DK!++yyY  99TYY%~~yyTYY88%Aax xxQ/ $;$%s499~4 !3tyy>tst9D"A$;3$;::c?11#6D3;D++$&&&&%%A >?:Vu !q($QK--c15a8(1+FhV&--v.QR !):):3)B1)ExPQ{(ST17 p ##/D4F4F4NU  %%-'(D$%%$*<*<*DW  %%-1-G-G*-G6-G*D& "77:MMN  yy0$))<O2PR  t999..+> 3  +MMG #	 +>)>D&$4<<(q ! $X L  A !?@@A"*s&   S<B*T?ATT.<TT+c                 p   SS/nU R                    H[  u  p4UR                  SS5      nU[        L a'  UR                  U5        UR                  SU-   5        MG  UR                  US-   5        M]     SSS.n[        R                  " US	U5      u  pgU H  u  p8UR                  S5      R                  SS5      n	U	S
:X  a'  SR                  UR                  S
S	5      U5      US
'   MS  U	R                  S5      (       a  U	SS n	SXY'   Mt  U	S;   a  SXY'   M  U R                  U	   [        L a  SXY'   M  XU	'   M     XW4$ )zPre-parse command line arguments for input into __init__.  Note that
this does not cast values into adjustment types, it just creates a
dictionary suitable for passing into __init__, where __init__ does the
casting.
helpcallr   r   zno-=F)r   r   rw   rW   z{} {}no_   NfalseTr   )
_paramsr   r   r   getoptr8   formatget
startswithr   )
clsargv	long_optsoptcastr   optsargsr)   params
             r   
parse_argsAdjustments.parse_args  s7    V$	IC++c3'Cv~  %  -  s+ % 

 ]]4Y7
JCJJsO++C5E &~~bffXr.BEJ8&&ab	#	** 	&&0"	!5	 " xr   c                    SnSnSnU H  nUR                   [        R                  :X  d  UR                   [        R                  :X  a"  UR                  [        R
                  :X  a  SnMa  [        [        S5      (       a@  UR                   [        R                  :X  a"  UR                  [        R
                  :X  a  SnM  SnM     U(       a  U(       a  [        S5      eU(       a  [        S5      eg )NFTAF_UNIXz+Internet and UNIX sockets may not be mixed.z1Only Internet or UNIX stream sockets may be used.)	r   r>   r   r   typer   hasattrr   r   )r   r?   has_unix_sockethas_inet_sockethas_unsupported_socketr@   s         r   r   Adjustments.check_sockets  s    !&Dv~~-1O))v111"&	**KK6>>1II!3!33"&)-&  JKK!PQQ "r   )rW   rZ   r[   )?rG   rH   rI   rJ   __doc__r   r"   r   r2   r<   r5   r:   r#   rA   r   dictr   rC   rS   rN   rT   rW   rX   rY   rZ   r4   r[   r\   r]   r^   r_   rm   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rp   rq   r>   SOL_TCPTCP_NODELAYsocket_optionsrn   ro   rU   rV   r?   rr   rs   r   classmethodr   r   rK   rE   r   r   rQ   rQ   b   sz   1#	#	# 
# 
	#
 
6# 
C# 
,'# 
$# 
!%(# 
'/# 
)&1# 
s# 
'# 
C# 
s#  
s!#" 
C ##$ 
!#&%#& 
3'#( 
S!)#* 
S!+#, 
C -#. 
f%/#0 
#C(1#2 
!#&3#4 
f%5#6 
,7#8 
!#&9#: 
f%;#< 
=#> 
g&?#@ 
N#A#B 
%c*C#D 
E#GJ gJ y!D tDavF G M 
  E #( %)! J J E G J J
 O %
 N   O  % '  K  
++Q/N
   D D G !"
 %KX)t & &P R Rr   rQ   )r   r   r>   r   compatr   r   proxy_headersr   	frozensetr   r   r   r#   r+   r2   r5   r:   r<   rA   r   rC   r"   rN   rQ   rE   r   r   <module>r      s       ! (	7	8  3@   

	!I	# 		# 	ZR ZRr   