
    !ni                     T   d dl m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m	Z	 	 ej                   	 ej                    G d d      Z G d	 d
ej                        ZddZddZedk(  r e ej&                  d      i        yy# e$ r
 de_
        Y bw xY w# e$ r
 de_        Y gw xY w)    )InteractiveConsoleN)hubs)	greenlets	get_errnoz>>> z... c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	FileProxyc                     || _         y N)f)selfr   s     Q/home/homepc/tiktok-worker/venv/lib/python3.12/site-packages/eventlet/backdoor.py__init__zFileProxy.__init__   s	        c                      y)NT r   s    r   isattyzFileProxy.isatty   s    r   c                      y r
   r   r   s    r   flushzFileProxy.flush   s    r   c                     	  | j                   j                  |g|i | | j                   j                          y # t        $ r'}t	        |      t
        j                  k7  r Y d }~y d }~ww xY wr
   )r   writer   OSErrorr   errnoEPIPE)r   dataakwes        r   r   zFileProxy.write   sX    	DFFLL((R(FFLLN 	|u{{* +	s   := 	A-A((A-c                 T     | j                   j                  | j                  dd      S )Nz

)r   readlinereplace)r   r   s     r   r!   zFileProxy.readline&   s$    tvv"**6488r   c                 .    t        | j                  |      S r
   )getattrr   )r   attrs     r   __getattr__zFileProxy.__getattr__)   s    tvvt$$r   N)	__name__
__module____qualname__r   r   r   r   r!   r&   r   r   r   r   r      s     9%r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)SocketConsolec                 ~    || _         || _        t        |      | _        t        j
                  j                  |        y r
   )hostportlocalsr   descr   greenletr   )r   r/   r-   r.   s       r   r   zSocketConsole.__init__0   s/     dO	##D)r   c                     	 t        | j                        }|j                          | j                          | j	                          y # | j                          | j	                          w xY wr
   )r   r.   interact
switch_outfinalize)r   consoles     r   runzSocketConsole.run7   sK    	(5GOOMMO OOMMOs   %A "A*c                    t         j                  t         j                  t         j                  f| _        | j
                  xt         _        xt         _        t         _        t        j                  j                  | g|i | y r
   )	sysstdinstderrstdoutsavedr/   r   r0   switch)r   argsr   s      r   r=   zSocketConsole.switch?   sS    YY

CJJ6
.2ii7	7CJ!!$444r   c                 Z    | j                   \  t        _        t        _        t        _        y r
   )r<   r8   r9   r:   r;   r   s    r   r3   zSocketConsole.switch_outD   s    ,0JJ)	3:szr   c                     d | _         t        | j                        dk\  r0| j                  d   }| j                  d   }t        d|d|       y t        d       y )N   r      zbackdoor closed to :zbackdoor closed)r/   lenr-   print)r   hostports      r   r4   zSocketConsole.finalizeG   sL    	t}}"==#D==#Dd<=#$r   N)r'   r(   r)   r   r6   r=   r3   r4   r   r   r   r+   r+   /   s    *5
7%r   r+   c                    | j                         }| j                  t        j                  k(  rd|z  }n+| j                  t        j                  k(  r|\  }}}}|d|}t        d|       	 	 d}	 | j                         }t        ||       |r|d   j                          	 6# t        $ r'}t        |      t        j                  k7  r Y d}~Bd}~ww xY w# |r|d   j                          w w xY w# | j                          w xY w)aZ   Blocking function that runs a backdoor server on the socket *sock*,
    accepting connections and running backdoor consoles for each client that
    connects.

    The *locals* argument is a dictionary that will be included in the locals()
    of the interpreters.  It can be convenient to stick important application
    variables in here.
    z%s:%srC   zbackdoor server listening on Nr   )getsocknamefamilysocketAF_INETAF_INET6rE   acceptbackdoorr   r   r   r   close)sockr.   listening_oniprG   _
socketpairr   s           r   backdoor_serverrV   R   s     ##%L{{fnn$-		'%D!Q"$d, 
|
=>J	*![[]
V, qM'') 
  Q<5;;. /
 qM'')  	

sB   .C3 2B% C3 %	C.CC CC C00C3 3Dc                    | \  }}|j                   t        j                  k(  r|\  }}t        d|d|       nA|j                   t        j                  k(  r|\  }}}}t        d|d|       nt        d       |j                  d      }t        |||      }t        j                         }	|	j                  d|j                         y)a  Sets up an interactive console on a socket with a single connected
    client.  This does not block the caller, as it spawns a new greenlet to
    handle the console.  This is meant to be called from within an accept loop
    (such as backdoor_server).
    zbackdoor to rC   zbackdoor openedrwr   N)rJ   rK   rL   rE   rM   makefiler+   r   get_hubschedule_call_globalr=   )
	conn_infor.   connaddrrF   rG   rT   flr5   hubs
             r   rO   rO   v   s     JD${{fnn$
dT401		'dAqT401 	t	BBf-G
,,.CQ/r   __main__)z	127.0.0.1i(#  r
   )coder   r   rK   r8   eventletr   eventlet.supportr   r   ps1AttributeErrorps2r   r0   r+   rV   rO   r'   listenr   r   r   <module>ri      s    #   
   1GGGG
% %6 %I&&  %F!H0* zOHOO$78"=   CG  CGs"   B B BBB'&B'