§
    ‹Ÿj  ã                   ó�   — d Z ddlZddlmZmZ ddlmZmZmZ ddl	Z	ddl
Z	ddlmZ  G d„ de¦  «        Z G d	„ d
e¦  «        Zd
gZdS )z>ZAP Authenticator in a Python Thread.

.. versionadded:: 14.1
é    N)ÚEventÚThread)ÚAnyÚListÚOptionalé   )ÚAuthenticatorc                   óÆ   ‡ — e Zd ZU dZej        ed<   ej        ed<   e	ed<   dZ
eej        j                 ed<   de	dej        ddfˆ fd„Zdd	„Zd
„ Zdee         defd„Zˆ xZS )ÚAuthenticationThreadzgA Thread for running a zmq Authenticator

    This is run in the background by ThreadAuthenticator
    ÚpipeÚloopÚauthenticatorNÚpollerÚreturnc                 ó¦   •— t          ¦   «                              d¬¦  «         || _        |j        | _        || _        t          ¦   «         | _        d S )NT)Údaemon)ÚsuperÚ__init__r   Úlogr   r   Ústarted)Úselfr   r   Ú	__class__s      €ú\/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/zmq/auth/thread.pyr   zAuthenticationThread.__init__   sH   ø€ õ
 	‰Œ×Ò ÐÑ%Ô%Ð%Ø*ˆÔØ Ô$ˆŒØˆŒ	å‘w”wˆŒˆˆó    c                 ór  — t          j        ¦   «         }	 |                     |                      ¦   «         ¦  «         | j        r | j                             ¦   «          d| _        |                     ¦   «          dS # | j        r | j                             ¦   «          d| _        |                     ¦   «          w xY w)z*Start the Authentication Agent thread taskN)ÚasyncioÚnew_event_loopÚrun_until_completeÚ_runr   Úclose)r   r   s     r   ÚrunzAuthenticationThread.run*   sŸ   € õ Ô%Ñ'Ô'ˆð	Ø×#Ò# D§I¢I¡K¤KÑ0Ô0Ð0àŒyð !Ø”	—’Ñ!Ô!Ð!Ø �”	à�JŠJ‰LŒLˆLˆLˆLøð	 Œyð !Ø”	—’Ñ!Ô!Ð!Ø �”	à�JŠJ‰LŒLˆLˆLøøøs   •'A9 Á9=B6c              ƒ   ó–  K  — t           j                             ¦   «         | _        | j                             | j        t           j        ¦  «         | j                             | j        j        t           j        ¦  «         | j	         
                    ¦   «          	 t          | j                             ¦   «         ƒ d {V —†¦  «        }| j        |v r0| j                             ¦   «         }|                      |¦  «        rd S | j        j        |v r>| j        j                             ¦   «         }| j                             |¦  «        ƒ d {V —† Œ²©N)Úzmqr   ÚPollerr   Úregisterr   ÚPOLLINr   Ú
zap_socketr   ÚsetÚdictÚpollÚrecv_multipartÚ_handle_pipe_messageÚhandle_zap_message)r   ÚeventsÚmsgs      r   r   zAuthenticationThread._run7   s0  è è € Ý”k×(Ò(Ñ*Ô*ˆŒØŒ×Ò˜TœY­¬
Ñ3Ô3Ð3ØŒ×Ò˜TÔ/Ô:½C¼JÑGÔGÐGØŒ×ÒÑÔÐð	AÝ ¤× 0Ò 0Ñ 2Ô 2Ð2Ð2Ð2Ð2Ð2Ð2Ñ3Ô3ˆFØŒy˜FÐ"Ð"Ø”i×.Ò.Ñ0Ô0�Ø×,Ò,¨SÑ1Ô1ð Ø�FØÔ!Ô,°Ð6Ð6ØÔ(Ô3×BÒBÑDÔD�ØÔ(×;Ò;¸CÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð	Ar   r0   c                 óÆ   — |d         }| j                              d|¦  «         |dk    rdS | j                              d|¦  «         | j                             d¦  «         dS )Nr   zauth received API command %ró	   TERMINATETz!Invalid auth command from API: %rs   ERRORF)r   ÚdebugÚerrorr   Úsend)r   r0   Úcommands      r   r-   z)AuthenticationThread._handle_pipe_messageG   sd   € Ø�a”&ˆØŒ�ŠÐ5°wÑ?Ô?Ð?à�lÒ"Ð"Ø�4ð ŒH�NŠNÐ>ÀÑHÔHÐHØŒI�NŠN˜8Ñ$Ô$Ð$àˆur   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   ÚSocketÚ__annotations__r   ÚAbstractEventLoopr	   r   r   r%   r   r!   r   r   ÚbytesÚboolr-   Ú__classcell__©r   s   @r   r   r      sø   ø€ € € € € € ðð ð
 Œ*ÐÐÑØ
Ô
#Ð#Ð#Ñ#Ø Ð Ð Ñ Ø+/€FˆH�S”[Ô'Ô(Ð/Ð/Ñ/ð
à$ð
ð Œjð
ð 
ð	
ð 
ð 
ð 
ð 
ð 
ðð ð ð ðAð Að Að ¨¨U¬ð ¸ð ð ð ð ð ð ð ð r   r   c                   ó”   ‡ — e Zd ZU dZded<   dZeed<   eed<   	 	 	 dd	ed
         dede	fˆ fd„Z
dˆ fd„Zdˆ fd„Zdefd„Zdd„Zˆ xZS )ÚThreadAuthenticatorz-Run ZAP authentication in a background threadz
zmq.Socketr   Ú Úpipe_endpointÚthreadNúutf-8Úcontextzzmq.ContextÚencodingr   c                 óœ   •— t          ¦   «                              |||¬¦  «         d | _        dt          | ¦  «        › d�| _        d | _        d S )N)rI   rJ   r   z	inproc://z.inproc)r   r   r   ÚidrF   rG   )r   rI   rJ   r   r   s       €r   r   zThreadAuthenticator.__init__\   sO   ø€ õ 	‰Œ×Ò °8ÀÐÑEÔEÐEØˆŒ	Ø:­¨D©¬Ð:Ð:Ð:ˆÔØˆŒˆˆr   r   c                 óf  •— t          ¦   «                              ¦   «          | j                             t          j        t          j        ¬¦  «        | _        d| j        _        | j         	                    | j
        ¦  «         | j                             t          j        t          j        ¬¦  «        }d|_        |                     | j
        ¦  «         t          | |¬¦  «        | _        | j                             ¦   «          | j        j                             d¬¦  «        st!          d¦  «        ‚dS )zStart the authentication thread)Úsocket_classr   )r   r   é
   )Útimeoutz$Authenticator thread failed to startN)r   ÚstartrI   Úsocketr$   ÚPAIRr<   r   ÚlingerÚbindrF   Úconnectr   rG   r   ÚwaitÚRuntimeError)r   Úthread_piper   s     €r   rQ   zThreadAuthenticator.startg   sø   ø€ õ 	‰Œ�Š‰Œˆð ”L×'Ò'­¬½s¼zÐ'ÑJÔJˆŒ	ØˆŒ	ÔØŒ	�Š�tÔ)Ñ*Ô*Ð*Ø”l×)Ò)­#¬(ÅÄÐ)ÑLÔLˆØˆÔØ×Ò˜DÔ.Ñ/Ô/Ð/Ý*¸ÀKÐPÑPÔPˆŒØŒ×ÒÑÔÐØŒ{Ô"×'Ò'°Ð'Ñ3Ô3ð 	GÝÐEÑFÔFÐFð	Gð 	Gr   c                 ó2  •— | j         rn| j                              d¦  «         |                      ¦   «         r| j                             ¦   «          d| _        | j                              ¦   «          d| _         t          ¦   «                              ¦   «          dS )zStop the authentication threadr2   N)r   r5   Úis_aliverG   Újoinr    r   Ústop)r   r   s    €r   r]   zThreadAuthenticator.stopx   sz   ø€ àŒ9ð 	ØŒI�NŠN˜<Ñ(Ô(Ð(Ø�}Š}‰Œð #Ø”× Ò Ñ"Ô"Ð"ØˆDŒKØŒI�OŠOÑÔÐØˆDŒIÝ‰Œ�Š‰Œˆˆˆr   c                 ó\   — t          | j        o| j                             ¦   «         ¦  «        S )z$Is the ZAP thread currently running?)r@   rG   r[   ©r   s    r   r[   zThreadAuthenticator.is_aliveƒ   s%   € å�D”KÐ: D¤K×$8Ò$8Ñ$:Ô$:Ñ;Ô;Ð;r   c                 ó.   — |                       ¦   «          d S r#   )r]   r_   s    r   Ú__del__zThreadAuthenticator.__del__‡   s   € Ø�	Š	‰Œˆˆˆr   )NrH   Nr7   )r8   r9   r:   r;   r=   rF   Ústrr   r   r   r   rQ   r]   r@   r[   ra   rA   rB   s   @r   rD   rD   U   s  ø€ € € € € € Ø7Ð7à
ÐÐÑØ€M�3ÐÐÑØ Ð Ð Ñ ð ,0ØØð		ð 	à˜-Ô(ð	ð ð	ð ð		ð 	ð 	ð 	ð 	ð 	ðGð Gð Gð Gð Gð Gð"	ð 	ð 	ð 	ð 	ð 	ð<˜$ð <ð <ð <ð <ðð ð ð ð ð ð ð r   rD   )r;   r   Ú	threadingr   r   Útypingr   r   r   r$   Úzmq.asyncioÚbaser	   r   rD   Ú__all__© r   r   ú<module>ri      sÛ   ððð ð €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à 
€
€
€
Ø Ð Ð Ð à Ð Ð Ð Ð Ð ð?ð ?ð ?ð ?ð ?˜6ñ ?ô ?ð ?ðD3ð 3ð 3ð 3ð 3˜-ñ 3ô 3ð 3ðl !Ð
!€€€r   