HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/auth/__pycache__/thread.cpython-310.pyc
o

�N�g/ �@s�dZddlZddlmZddlmZmZddlmZm	Z	m
Z
mZmZm
Z
ddlZddlmZddlmZGd	d
�d
e�Zeded�Zd
edefdd�ZeGdd�d��ZdgZdS)z>ZAP Authenticator in a Python Thread.

.. versionadded:: 14.1
�N)�chain)�Event�Thread)�Any�Dict�List�Optional�TypeVar�cast)�jsonapi�)�
Authenticatorc
speZdZdZ			ddddededed	eed
df�fdd�
Zdd
d�Z	ddd�Z
deed
e
fdd�Z�ZS)�AuthenticationThreadziA Thread for running a zmq Authenticator

    This is run in the background by ThreadedAuthenticator
    �utf-8N�context�zmq.Context�endpoint�encoding�log�
authenticator�returncsvt���|ptj��|_||_|pt�d�|_	}t
�|_|p&t|||d�|_
|�tj�|_d|j_|j�|�dS)Nzzmq.auth�rrr)�super�__init__�zmq�Context�instancerr�logging�	getLoggerrr�startedr
r�socket�PAIR�pipe�linger�connect)�selfrrrrr��	__class__��C/opt/saltstack/salt/lib/python3.10/site-packages/zmq/auth/thread.pyrs
�zAuthenticationThread.__init__cCs|j��|j��|jj}t��}|�|jtj	�|�|tj	�	zt
|���}Wn
tjy4Yn@w|j|vrd||jtj	krd	z
|jj
tjd�}Wn
tjyWYn
w|�|�}|r`nqC|rdn||vrs||tj	krs|��q"|j��|j��dS)z*Start the Authentication Agent thread taskT)�flagsN)r�startr�set�
zap_socketrZPoller�registerr"�POLLIN�dict�pollZZMQError�recv_multipartZNOBLOCKZAgain�_handle_pipe�_handle_zap�close�stop)r%ZzapZpollerZsocks�msg�	terminater(r(r)�run0s<

��
�	�
zAuthenticationThread.runcCs8|jjdur
td��|jj��}|sdS|j�|�dS)z7
        Handle a message from the ZAP socket.
        NzZAP socket closed)rr-�RuntimeErrorr2Zhandle_zap_message)r%r7r(r(r)r4Ssz AuthenticationThread._handle_zapr7c	s�d}|dur
d}|S|d}�j�d|�|dkrA�fdd�|d	d�D�}z	�jj|�W|Sty@�j�d
|�Y|Sw|dkrm�fdd�|d	d�D�}z	�jj|�W|Styl�j�d
|�Y|Sw|dkr�|d	��j�}|d}t	t
ttft�
|��}�j�||�|S|dkr�|d	��j�}|d��j�}�j�||�|S|dkr�d}|S�j�d|�|S)z6
        Handle a message from front-end API.
        FNTrzauth received API command %r�ALLOWc�g|]}|��j��qSr(��decoder��.0�m�r%r(r)�
<listcomp>l�z5AuthenticationThread._handle_pipe.<locals>.<listcomp>rzFailed to allow %s�DENYcr<r(r=r?rBr(r)rCsrDzFailed to deny %s�PLAIN��CURVE�	TERMINATEz!Invalid auth command from API: %r)r�debugr�allow�	Exception�	exception�denyr>rr
r�strr�loads�configure_plain�configure_curve�error)	r%r7r8Zcommand�	addresses�domainZjson_passwords�	passwords�locationr(rBr)r3^sT"� �������z!AuthenticationThread._handle_pipe)rNN�rN)�__name__�
__module__�__qualname__�__doc__rOrrr
rr9r4r�bytes�boolr3�
__classcell__r(r(r&r)rs*	�������

#r�T)Zbound�clsrcCsF|j��D]\}}|�d�st|�sqtt|d�}|js |j|_q|S)zAinherit docstrings from Authenticator, so we don't duplicate them�_N)�__dict__�items�
startswith�callable�getattrr
r\)ra�name�methodZupstream_methodr(r(r)�_inherit_docstrings�s�rjc@seZdZUdZded<eed<eed<ded<dZeed	<eed
<			d.de	ddedefd
d�Z
dedefdd�Zdefdd�Zdefdd�Z
defdd�Z	d/dede	eeeffdd�Zd0dedefd d!�Z	d/ded"efd#d$�Zd1d&d'�Zd1d(d)�Zd%efd*d+�Zd1d,d-�ZdS)2�ThreadAuthenticatorz-Run ZAP authentication in a background threadrrrrz
zmq.Socketr"��
pipe_endpoint�threadNrcCs>||_||_d|_dt|��d�|_d|_|ptj��|_	dS)Nz	inproc://z.inproc)
rrr"�idrmrnrrrr)r%rrrr(r(r)r�szThreadAuthenticator.__init__�key�valuecCsZt|g|j���D]}||jvs|t|di�vr"t�|||�dSq	t|jj	||�dS)N�__annotations__)
rr'�mrorcrg�object�__setattr__�setattrrnr)r%rprq�objr(r(r)ru�s�zThreadAuthenticator.__setattr__cCst|jj|�S�N)rgrnr)r%rpr(r(r)�__getattr__�szThreadAuthenticator.__getattr__rTc�$�j�dg�fdd�|D��dS)Nr;cr<r(��encoder�r@�arBr(r)rC�rDz-ThreadAuthenticator.allow.<locals>.<listcomp>�r"�send_multipart�r%rTr(rBr)rK���zThreadAuthenticator.allowcrz)NrEcr<r(r{r}rBr(r)rC�rDz,ThreadAuthenticator.deny.<locals>.<listcomp>rr�r(rBr)rN�r�zThreadAuthenticator.deny�*rUrVcCs(|j�d|�|j�t�|pi�g�dS)NrF)r"r�r|rr�dumps)r%rUrVr(r(r)rQ�s�z#ThreadAuthenticator.configure_plainrWcCs.|�|j�}|�|j�}|j�d||g�dS)NrH)r|rr"r�)r%rUrWr(r(r)rR�sz#ThreadAuthenticator.configure_curve�credentials_providercCs|jjj||d�dS)N)r�)rnr�configure_curve_callback)r%rUr�r(r(r)r��s
�z,ThreadAuthenticator.configure_curve_callbackrcCsf|j�tj�|_d|j_|j�|j�t|j|j|j	|j
d�|_|j��|jj
jdd�s1td��dS)zStart the authentication threadrr�
)�timeoutz$Authenticator thread failed to startN)rr rr!r"r#�bindrmrrrrnr+r�waitr:rBr(r(r)r+�s�
�zThreadAuthenticator.startcCsB|jr|j�d�|��r|j��d|_|j��d|_dSdS)zStop the authentication threadrIN)r"�send�is_alivern�joinr5rBr(r(r)r6�s


�zThreadAuthenticator.stopcCs|jr
|j��r
dSdS)z$Is the ZAP thread currently running?TF)rnr�rBr(r(r)r��szThreadAuthenticator.is_alivecCs|��dSrx)r6rBr(r(r)�__del__�szThreadAuthenticator.__del__)NrN)r�N)r�rlrX)rYrZr[r\rrrrOrmrrrruryrKrNrrQrRr�r+r6r^r�r�r(r(r(r)rk�sN
���
���
���
�



rk)r\r�	itertoolsr�	threadingrr�typingrrrrr	r
rZ	zmq.utilsr�baser
r�typer`rjrk�__all__r(r(r(r)�<module>s 
a