CasperSecurity

Current Path : /lib/python3/dist-packages/pexpect/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/pexpect/__pycache__/popen_spawn.cpython-310.pyc

o

��!^�@s�dZddlZddlZddlZddlZddlZddlZddlZz
ddlm	Z	m
Z
Wney9ddl	m	Z	m
Z
Ynwddlm
Z
mZddlmZddlmZGdd	�d	e
�ZdS)
zJProvides an interface like pexpect.spawn interface using subprocess.Popen
�N)�Queue�Empty�)�	SpawnBase�PY3)�EOF)�string_typescsreZdZ			d�fdd�	ZdZdd	�Zd
d�Zdd
�Zdd�Zdd�Z	ddd�Z
dd�Zdd�Zdd�Z
�ZS)�
PopenSpawn���N�strictc
	stt|�j||||||	d�|durtj�d�|_n|�tj�|_tdt	j
t	jt	j
||
|d�}tj
dkrIt	��}|jt	jO_||d<t	j|d<t|t�r]tj
dkr]tj|tjdkd	�}t	j|fi|��|_|jj|_d
|_|��|_t�|_tj|j d�|_!|j!�"d�|j!�#�dS)
N)�timeout�maxread�searchwindowsize�logfile�encoding�codec_errors�asciir)�bufsize�stdin�stderr�stdout�cwd�
preexec_fn�env�win32�startupinfo�
creationflags�posix)rF)�targetT)$�superr	�__init__�os�linesep�encode�crlf�string_type�dict�
subprocess�PIPE�STDOUT�sys�platform�STARTUPINFO�dwFlags�STARTF_USESHOWWINDOW�CREATE_NEW_PROCESS_GROUP�
isinstancer�shlex�split�name�Popen�proc�pid�closed�_bufr�_read_queue�	threading�Thread�_read_incoming�_read_thread�	setDaemon�start)
�self�cmdr
rrrrrrrr�kwargsr��	__class__��5/usr/lib/python3/dist-packages/pexpect/popen_spawn.pyr!s4��



zPopenSpawn.__init__FcCs|j}|jr|r||d�|_|d|�Sd|_td��|dkr$|j}n|dur*d}t��}t��||krq|rqt|�|krqz|j��}Wn	t	yNYn#w|durWd|_n||j
j|dd�7}t��||krq|rqt|�|ks>|d|�||d�}|_|�|d�|S)NTzEnd Of File (EOF).���g��.AF��final�read)
r9�_read_reached_eof�flag_eofrr
�time�lenr:�
get_nowaitr�_decoder�decode�_log)rA�sizer
�buf�t0�incoming�rrFrFrG�read_nonblockingAs4 � �zPopenSpawn.read_nonblockingc
Csv|jj��}	d}zt�|d�}Wnty)}z|�|d�WYd}~nd}~ww|s4|j�d�dS|j�|�q)z6Run in a thread to move output from a pipe to a queue.r�irKN)	r6r�filenor"rK�OSErrorrSr:�put)rAr[rU�erFrFrGr=ds���zPopenSpawn._read_incomingcCs|�|�dS)zHThis is similar to send() except that there is no return value.
        N��send)rA�srFrFrG�writeuszPopenSpawn.writecCs|D]}|�|�qdS)z�This calls write() for each element in the sequence.

        The sequence can be any iterable object producing strings, typically a
        list of strings. This does not add line separators. There is no return
        value.
        Nr_)rA�sequencerarFrFrG�
writelineszs�zPopenSpawn.writelinescCsN|�|�}|�|d�|jj|dd�}tr|jj�|�S|jj�|�t|�S)zZSend data to the subprocess' stdin.

        Returns the number of bytes written.
        r`FrI)	�_coerce_send_stringrS�_encoderr$rr6rrbrO)rAra�brFrFrGr`�s
zPopenSpawn.send�cCs|�|�}||�|j�S)z�Wraps send(), sending string ``s`` to child process, with os.linesep
        automatically appended. Returns number of bytes written. )r`r#)rAra�nrFrFrG�sendline�s
zPopenSpawn.sendlinecCs8|j��}|dkr||_d|_nd|_||_d|_|S)zKWait for the subprocess to finish.

        Returns the exit code.
        rNT)r6�wait�
exitstatus�signalstatus�
terminated)rA�statusrFrFrGrk�s
zPopenSpawn.waitcCsTtjdkr |tjtjfvrtj}n|tjtjfvrtj}ntj}t�	|j
j|�dS)z}Sends a Unix signal to the subprocess.

        Use constants from the :mod:`signal` module to specify which signal.
        rN)r+r,�signal�SIGINT�CTRL_C_EVENT�SIGBREAK�CTRL_BREAK_EVENT�SIGTERMr"�killr6r7)rA�sigrFrFrGrv�s
zPopenSpawn.killcCs|jj��dS)z+Closes the stdin pipe from the writing end.N)r6r�close)rArFrFrG�sendeof�szPopenSpawn.sendeof)	r
rNNNNNrN)rh)�__name__�
__module__�__qualname__r!rLrYr=rbrdr`rjrkrvry�
__classcell__rFrFrDrGr	s�*#

r	)�__doc__r"r;r(r+rNrpr2�queuerr�ImportError�	spawnbaserr�
exceptionsr�utilsrr	rFrFrFrG�<module>s"�
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY