ó
    öÞ jƒ  ã                  óâ   • S SK J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	J
r
Jr  SSKJr  SSKJr  SSKJrJr  S	S
KJrJr  SS/r\\\4   rSS jr " S S\5      r    S         SS jjrg)é    )ÚannotationsN)Ú	AwaitableÚIterable)ÚAnyÚCallableÚcasté   )ÚHeaders)ÚInvalidHeader)Úbuild_www_authenticate_basicÚparse_authorization_basicé   )ÚHTTPResponseÚWebSocketServerProtocolÚ BasicAuthWebSocketServerProtocolÚbasic_auth_protocol_factoryc                ó†   •  U u  p[        U[        5      =(       a    [        U[        5      $ ! [        [        4 a     gf = f©NF)Ú
isinstanceÚstrÚ	TypeErrorÚ
ValueError)ÚvalueÚusernameÚpasswords      ÚP/var/www/html/gaurav/venv/lib/python3.13/site-packages/websockets/legacy/auth.pyÚis_credentialsr      sD   € ðGØ"Ñˆô ˜(¤CÓ(×F¬Z¸Ä#Ó-FÐFøô ”zÐ"ó Ùðús   ‚- ­A ¿A c                  ó”   ^ • \ rS rSr% SrSrS\S'    SrS\S'    SSS	.         SU 4S
 jjjrSS jr	      SU 4S jjr
SrU =r$ )r   é   z;
WebSocket server protocol that enforces HTTP Basic Auth.

Ú r   ÚrealmNú
str | Noner   ©r!   Úcheck_credentialsc               óD   >• Ub  Xl         X l        [        TU ]  " U0 UD6  g ©N)r!   Ú_check_credentialsÚsuperÚ__init__)Úselfr!   r$   ÚargsÚkwargsÚ	__class__s        €r   r)   Ú)BasicAuthWebSocketServerProtocol.__init__.   s(   ø€ ð ÑØŒJØ"3ÔÜ‰Ò˜$Ð) &Ó)ó    c              ƒ  ó\   #   • U R                   b  U R                  X5      I Sh  v•N $ g N7f)ar  
Check whether credentials are authorized.

This coroutine may be overridden in a subclass, for example to
authenticate against a database or an external service.

Args:
    username: HTTP Basic Auth username.
    password: HTTP Basic Auth password.

Returns:
    :obj:`True` if the handshake should continue;
    :obj:`False` if it should fail with an HTTP 401 error.

NF)r'   )r*   r   r   s      r   r$   Ú2BasicAuthWebSocketServerProtocol.check_credentials:   s0   é € ð  ×"Ñ"Ñ.Ø×0Ñ0°ÓD×DÐDàñ Eùs   ‚",¤*¥,c              ƒ  ó$  >#   •  US   n [        U5      u  pEU R                  XE5      I Sh  v•N (       d3  [        R                  R                  S[	        U R
                  5      4/S4$ X@l	        [        TU ]-  X5      I Sh  v•N $ ! [          a6    [        R                  R                  S[	        U R
                  5      4/S4s $ f = f! [         a6    [        R                  R                  S[	        U R
                  5      4/S4s $ f = f Nß NŒ7f)zC
Check HTTP Basic Auth and return an HTTP 401 response if needed.

ÚAuthorizationzWWW-Authenticates   Missing credentials
s   Unsupported credentials
Ns   Invalid credentials
)ÚKeyErrorÚhttpÚ
HTTPStatusÚUNAUTHORIZEDr   r!   r   r   r$   r   r(   Úprocess_request)r*   ÚpathÚrequest_headersÚauthorizationr   r   r-   s         €r   r8   Ú0BasicAuthWebSocketServerProtocol.process_requestO   s  øé € ð	Ø+¨OÑ<ˆMð	Ü!:¸=Ó!IÑˆHð ×+Ñ+¨HÓ?×?Õ?ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ(ðð ð !Œä‘WÑ,¨TÓC×CÐCøô3 ó 	ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ(ðò ð	ûô ó 	ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ,ðò ð	úñ @ñ Dùsa   ƒD…B ‹C	 ˜D¬D­ADÂDÂDÂ=CÃDÃCÃDÃ	=D	ÄDÄD	Ä	DÄD)r'   r!   r   )
r+   r   r!   r"   r$   ú,Callable[[str, str], Awaitable[bool]] | Noner,   r   ÚreturnÚNone©r   r   r   r   r>   Úbool)r9   r   r:   r
   r>   zHTTPResponse | None)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   Ú__annotations__r   r)   r$   r8   Ú__static_attributes__Ú__classcell__)r-   s   @r   r   r      sš   ø‡ ñð
 €Eˆ3ƒOðð  €HˆjÓØ-ð
 !ØJNñ	
*àð
*ð ð
*ð Hð	
*ð
 ð
*ð 
÷
*ð 
*ôð*$Dàð$Dð !ð$Dð 
÷	$Dõ $Dr/   c                óà  ^• USL USL :X  a  [        S5      eUbž  [        U5      (       a  [        [        U5      /nOi[	        U[
        5      (       aF  [        [        [
        [           U5      5      n[        S U 5       5      (       d  [        SU 35      eO[        SU 35      e[        U5      mSU4S jjnUc  [        n[        [        S[        4   U5      n[        R                  " UU US9$ )	a¢  
Protocol factory that enforces HTTP Basic Auth.

:func:`basic_auth_protocol_factory` is designed to integrate with
:func:`~websockets.legacy.server.serve` like this::

    serve(
        ...,
        create_protocol=basic_auth_protocol_factory(
            realm="my dev server",
            credentials=("hello", "iloveyou"),
        )
    )

Args:
    realm: Scope of protection. It should contain only ASCII characters
        because the encoding of non-ASCII characters is undefined.
        Refer to section 2.2 of :rfc:`7235` for details.
    credentials: Hard coded authorized credentials. It can be a
        ``(username, password)`` pair or a list of such pairs.
    check_credentials: Coroutine that verifies credentials.
        It receives ``username`` and ``password`` arguments
        and returns a :class:`bool`. One of ``credentials`` or
        ``check_credentials`` must be provided but not both.
    create_protocol: Factory that creates the protocol. By default, this
        is :class:`BasicAuthWebSocketServerProtocol`. It can be replaced
        by a subclass.
Raises:
    TypeError: If the ``credentials`` or ``check_credentials`` argument is
        wrong.

Nz/provide either credentials or check_credentialsc              3  ó6   #   • U H  n[        U5      v •  M     g 7fr&   )r   )Ú.0Úitems     r   Ú	<genexpr>Ú.basic_auth_protocol_factory.<locals>.<genexpr>¤   s   é € ÐIÑ8H°”~ d×+Ð+Ò8Hùs   ‚zinvalid credentials argument: c              “  ód   >#   •  TU    n[        R                  " X!5      $ ! [          a     gf = f7fr   )r4   ÚhmacÚcompare_digest)r   r   Úexpected_passwordÚcredentials_dicts      €r   r$   Ú6basic_auth_protocol_factory.<locals>.check_credentials«   s=   øé € ðØ$4°XÑ$>Ð!ô ×&Ò&Ð'8ÓCÐCøô ó Ùðüs   ƒ0…  Š0 
-ª0¬-­0.r#   r@   )r   r   r   ÚCredentialsr   r   ÚlistÚallÚdictr   r   Ú	functoolsÚpartial)r!   Úcredentialsr$   Úcreate_protocolÚcredentials_listrT   s        @r   r   r   v   s  ø€ ðL 	�tÐÐ!2°dÐ!:Ó;ÜÐIÓJÐJàÑÜ˜+×&Ñ&Ü $¤[°+Ó >Ð?ÑÜ˜¤X×.Ñ.Ü#¤D¬´+Ñ)>ÀÓ$LÓMÐÜÑIÑ8HÓI×IÑIÜÐ"@ÀÀÐ NÓOÐOð Jô Ð<¸[¸MÐJÓKÐKäÐ 0Ó1Ð÷	Dð ÑÜ:ˆô Ü�Ô6Ð6Ñ7¸ó€Oô ×ÒØØØ+ñð r/   )r   r   r>   rA   )NNNN)
r!   r"   r\   z*Credentials | Iterable[Credentials] | Noner$   r=   r]   z6Callable[..., BasicAuthWebSocketServerProtocol] | Noner>   z/Callable[..., BasicAuthWebSocketServerProtocol])Ú
__future__r   rZ   rQ   r5   Úcollections.abcr   r   Útypingr   r   r   Údatastructuresr
   Ú
exceptionsr   Úheadersr   r   Úserverr   r   Ú__all__Útupler   rV   r   r   r   © r/   r   Ú<module>ri      s¡   ðÝ "ã Û Û ß /ß &Ñ &å $Ý &ß Mß 9ð .Ð/LÐ
M€à�C˜�H‰o€ôGôVDÐ'>ô VDðt Ø>BØFJØNRð	HØðHà;ðHð DðHð Lð	Hð
 5öHr/   