
    \dK                     V   d Z ddlmZ ddlmZ ddlmZmZm	Z
 ddlmZ ddlmZmZ ddlmZ  G d d	          Z G d
 d          Z ee
j                   G d dej                              Z G d dej        ej                  Z G d d          Z G d dej                  ZdS )z9
insults/SSH integration support.

@author: Jp Calderone
    )Dict)implementer)avatarerror
interfaces)insults)factorysession)
componentsc                       e Zd ZdZd Zd ZdS )_Gluez
    A feeble class for making one attribute look like another.

    This should be replaced with a real class at some point, probably.
    Try not to write new code that uses it.
    c                 :    | j                             |           d S N)__dict__update)selfkws     9lib/python3.11/site-packages/twisted/conch/manhole_ssh.py__init__z_Glue.__init__   s    R         c                 .    t          | j        d|          )Nzhas no attribute)AttributeErrorname)r   r   s     r   __getattr__z_Glue.__getattr__    s    TY(:DAAAr   N)__name__
__module____qualname____doc__r   r    r   r   r   r      sA         ! ! !B B B B Br   r   c                       e Zd Zd ZdS )TerminalSessionTransportc                 p    | _          _        | _         j         j         j                             t           j        j        fdd                      fd} j                            t           j         j        |d                      j        j        	                    ||           d S )Nc                  8     j                                       S r   )conn	sendClose)r   protoSessions   r   <lambda>z3TerminalSessionTransport.__init__.<locals>.<lambda>/   s    v{'<'<\'J'J r   zSSH Proto Transport)writeloseConnectionr   c                  :     j                                          d S r   )protor)   r   s   r   r)   z9TerminalSessionTransport.__init__.<locals>.loseConnection4   s    J%%'''''r   zChained Proto Transport)
r+   r   chainedProtocolr
   makeConnectionr   dataReceivedr(   terminalProtocolterminalSize)r   r+   r-   r   widthheightr)   r&   s   `  `   @r   r   z!TerminalSessionTransport.__init__%   s    
.z)
!!*7JJJJJ*  	
 	
 	
	( 	( 	( 	( 	( 	++j&-.  	
 	
 	
 	-::5&IIIIIr   Nr   r   r   r   r   r   r   r!   r!   $   s(         J  J  J  J  Jr   r!   c                   D    e Zd ZeZej        Zd Zd Z	d Z
d Zd Zd ZdS )TerminalSessionc                 4    |d d         \  | _         | _        d S )N   )r3   r2   )r   term
windowSizeattrss       r   getPtyzTerminalSession.getPtyM   s    ",RaR.TZZZr   c                     |                      ||                                 t          j        | j                  | j        | j                   d S r   )transportFactorychainedProtocolFactoryiconch
IConchUseroriginalr2   r3   )r   r+   s     r   	openShellzTerminalSession.openShellP   sP    ''))dm,,JK	
 	
 	
 	
 	
r   c                 *    t          j        d          )NzCannot execute commands)econch
ConchError)r   r+   cmds      r   execCommandzTerminalSession.execCommandY   s     9:::r   c                      t          d          )Nz,Unimplemented: TerminalSession.windowChangedNotImplementedError)r   newWindowSizes     r   windowChangedzTerminalSession.windowChanged\   s    !"PQQQr   c                      t          d          )Nz*Unimplemented: TerminalSession.eofReceivedrJ   r,   s    r   eofReceivedzTerminalSession.eofReceived`   s    !"NOOOr   c                     d S r   r   r,   s    r   closedzTerminalSession.closedd   s    r   N)r   r   r   r!   r>   r   ServerProtocolr?   r<   rC   rH   rM   rO   rQ   r   r   r   r6   r6   H   s        /$31 1 1
 
 
; ; ;R R RP P P    r   r6   c                       e Zd Zd ZdS )TerminalUserc                     t           j                            | |           t          j                            |            t
          j        | j        d<   d S )Ns   session)r   Adapterr   r   	ConchUserr
   
SSHSessionchannelLookup)r   rB   avatarIds      r   r   zTerminalUser.__init__j   sH    ##D(333!!$''')0);:&&&r   Nr4   r   r   r   rT   rT   i   s#        < < < < <r   rT   c                   <    e Zd ZeZeZeZe	j
        Zd ZddZd ZdS )TerminalRealmc                 2   t          j                    }|                     ||          }|                     |          }| j        |_        | j        |_        |                    t          j        |           |                    t          j	        |           |S r   )
r   ComponentizeduserFactorysessionFactoryr>   r?   setComponentr@   rA   ISession)r   rZ   compusersesss        r   
_getAvatarzTerminalRealm._getAvatarw   s    '))h//""4(( $ 5&*&A#&+T222&/4000r   Nc                     |	|| _         d S d S r   )r>   )r   r>   s     r   r   zTerminalRealm.__init__   s    '$4D!!! ('r   c                     |D ]5}|t           j        u r%t           j        |                     |          d fc S 6t                      )Nc                      d S r   r   r   r   r   r'   z-TerminalRealm.requestAvatar.<locals>.<lambda>   s    d r   )r@   rA   rf   rK   )r   rZ   mindr   is        r   requestAvatarzTerminalRealm.requestAvatar   sV     	T 	TAF%%%)4??8+D+DllSSSS &!###r   r   )r   r   r   rT   r_   r6   r`   r!   r>   r   rR   r?   rf   r   rl   r   r   r   r\   r\   p   s_        K$N/$3  5 5 5 5$ $ $ $ $r   r\   c                   R    e Zd ZU i Zeeef         ed<   i Zeeef         ed<   d ZdS )ConchFactory
publicKeysprivateKeysc                     || _         d S r   )portal)r   rr   s     r   r   zConchFactory.__init__   s    r   N)	r   r   r   ro   r   bytes__annotations__rp   r   r   r   r   rn   rn      sW         %'JUE\"'''&(KeUl#(((    r   rn   N)r   typingr   zope.interfacer   twisted.conchr   r   rE   r   r@   twisted.conch.insultsr   twisted.conch.sshr	   r
   twisted.pythonr   r   r!   rb   rV   r6   rW   rT   r\   
SSHFactoryrn   r   r   r   <module>r|      s  
        & & & & & & G G G G G G G G G G ) ) ) ) ) ) . . . . . . . . % % % % % %B B B B B B B B!J !J !J !J !J !J !J !JH V_    j(   @< < < < <6#Z%7 < < <$ $ $ $ $ $ $ $>    7%     r   