HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/cockpit/channels/__pycache__/stream.cpython-39.opt-1.pyc
a

�/�hJ�@s�ddlZddlZddlZddlZddlmZddlmZmZddl	m
Z
mZmZm
Z
mZmZmZmZddlmZmZmZe�e�ZGdd�de�ZGd	d
�d
ee�ZdS)�N)�Dict�)�ChannelError�ProtocolChannel)�JsonDict�
JsonObject�get_bool�get_enum�get_int�
get_object�get_str�get_strv)�SubprocessProtocol�SubprocessTransport�
WindowSizec@s&eZdZdZejeejd�dd�ZdS)�SocketStreamChannel�stream��loop�options�returnc
�s,d|vrd|vrtddd��z�d|vrZt|d�}d|��}|��fdd�|�IdH\}}n\d|vr�t|d�}t|d	d
�}d|�d|��}|��fd
d�||�IdH\}}ntddd��t�d|�WnZt�y}	z@t�d||	�t	|	t
�r�d}
nd}
t|
t|	�d�|	�WYd}	~	n
d}	~	00���|S)NZunix�port�protocol-errorz-cannot specify both "port" and "unix" options��messagezUnix socket cs�S�N�r��selfr�;/usr/lib/python3.9/site-packages/cockpit/channels/stream.py�<lambda>+�z6SocketStreamChannel.create_transport.<locals>.<lambda>�addressZ	localhostzTCP socket �:cs�Srrrrrrr 3r!z7no "port" or "unix" or other address option for channelz$SocketStreamChannel: connected to %sz0SocketStreamChannel: connecting to %s failed: %s�	not-foundZ
terminated)
rrZcreate_unix_connectionr
Zcreate_connection�logger�debug�OSError�info�
isinstance�ConnectionRefusedError�str�close_on_eof)rrr�pathZlabel�	transport�_r�host�errorZproblemrrr�create_transport"s0

 
"�
(z$SocketStreamChannel.create_transportN)	�__name__�
__module__�__qualname__�payload�asyncio�AbstractEventLooprZ	Transportr2rrrrrsrc@sLeZdZdZdZdd�dd�Zed�dd�Zd	d
�Ze	j
eed�dd
�ZdS)�SubprocessStreamChannelr))�spawnNN)rcCs|��dSr)r,rrrr�process_exitedIsz&SubprocessStreamChannel.process_exitedcCs,d|j��i}|j��}|dur(||d<|S)Nzexit-statusr)�
_transportZget_returncodeZ
get_stderr)r�args�stderrrrr�_get_close_argsLs

z'SubprocessStreamChannel._get_close_argscCs&t|dtd�}|dur"|j�|�dS)N�window)rrr<Zset_window_size)rrr@rrr�
do_optionsTsz"SubprocessStreamChannel.do_optionsrc
�s�t|d�}t|dgd�d�}t|dd�}t|ddd	�}t|d
td�}t|dg�}|dkr`tj}	n|d
krptj}	ntj	}	t
tj�}
z|
�
t
dd�|D���Wn ty�tddd�d�Yn0z>t||||||
||	d�}|��}d|i|_t�d||�|WSt�y,}
ztd�|
�WYd}
~
nxd}
~
0t�yZ}
ztd�|
�WYd}
~
nJd}
~
0t�y�}
z(t�d|t|
��td�|
�WYd}
~
n
d}
~
00dS)Nr:�err)�out�ignorerrZ	directory�.�ptyF)�defaultr@�environrCrDcss|]}|�dd�VqdS)�=�N)�split)�.0�errr�	<genexpr>jr!z;SubprocessStreamChannel.create_transport.<locals>.<genexpr>rz+invalid "environ" option for stream channelr)rFr@�env�cwdr>�pidzSpawned process args=%s pid=%ir$z
access-deniedzFailed to spawn %s: %szinternal-error)r
r	rrrr�
subprocessZSTDOUTZDEVNULL�PIPE�dict�osrH�update�
ValueErrorrrZget_pidZ_ready_infor%r&�FileNotFoundError�PermissionErrorr'r(r+)rrrr=rBrPrFr@rHr>rOr.rQr1rrrr2Ys:


z(SubprocessStreamChannel.create_transport)
r3r4r5r6Zrestrictionsr;rr?rAr7r8rr2rrrrr9Esr9)r7ZloggingrUrR�typingrZchannelrrZjsonutilrrrr	r
rrr
Z
transportsrrrZ	getLoggerr3r%rr9rrrr�<module>s(
&