o
    j©Zh°	  ã                   @   sŽ   d Z ddlZddlZddlZddlZddlmZ ddlmZ dd„ Z	G dd„ deƒZ
eƒ  d	¡ZedurBe
eƒZe ¡  ed
ƒ dS e	ƒ  dS )z:
a remote python shell

for injection into startserver.py
é    N)ÚThread)Ú	print_excc            
      C   s  t dƒ tjd  d¡\} }t|ƒ}ttj tjd ¡ƒ 	¡ }t
 
t
jt
j¡}| | |f¡ | t|ƒd ¡ t dƒ |tjg}z/	 t |g g ¡\}}}tj|v r[tƒ }| |d ¡ ||v ro| d¡}tj |¡ tj ¡  qB ty‚   dd l}	t |	 ¡ ƒ Y nw t d¡ d S )Nzclient side startingé   ú:r   Ú
zsend boot stringi   )ÚprintÚsysÚargvÚsplitÚintÚopenÚosÚpathÚabspathÚreadÚsocketÚAF_INETÚSOCK_STREAMÚconnectÚsendallÚreprÚstdinÚselectÚ	raw_inputÚrecvÚstdoutÚwriteÚflushÚBaseExceptionÚ	tracebackr   Úexit)
ÚhostÚportZmyselfÚsockZ	inputlistÚrÚwÚeÚliner   © r(   úK/var/www/html/lang_env/lib/python3.10/site-packages/execnet/script/shell.pyÚ
clientside   s2   



ø	ýr*   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )Úpromptagentc                    s   t dƒ t ¡  || _d S )Nzserver side starting)r   ÚsuperÚ__init__Ú
clientsock)Úselfr.   ©Ú	__class__r(   r)   r-   ,   s   
zpromptagent.__init__c                 C   s  t dƒ | j d¡}| j d¡}| j ¡ }	 zV| d| ¡ | ¡  | ¡ }|s,tdƒ‚| ¡ rgt	j
t	j}}||t	_
t	_z!ztt|d dd	ƒƒ W n tyW   tƒ  Y nw W |t	_
|t	_n|t	_
|t	_w | ¡  W n ty{   t	j d
¡ Y nw q| j ¡  d S )NzEntering thread prompt loopr%   r$   r   z
%s %s >>> Znothingr   z<remote pyin>Úsinglez'connection close, prompt thread returns)r   r.   ÚmakefileÚgetsocknamer   r   ÚreadlineÚEOFErrorÚstripr   r   ÚstderrÚexecÚcompiler   r   Úclose)r/   Z
clientfileZfileinÚlocr'   ZoldoutZolderrr(   r(   r)   Úrun1   s@   

ÿ€ÿþízpromptagent.run)Ú__name__Ú
__module__Ú__qualname__r-   r=   Ú__classcell__r(   r(   r0   r)   r+   +   s    r+   r.   zpromptagent - thread started)Ú__doc__r   r   r   r   Ú	threadingr   r   r   r*   r+   ÚglobalsÚgetr#   ZprompterÚstartr   r(   r(   r(   r)   Ú<module>   s   '
