
    VhK                     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j4                        Zy)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y)_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                   j                  |       y N)__dict__update)selfkws     I/home/dcms/DCMS/lib/python3.12/site-packages/twisted/conch/manhole_ssh.py__init__z_Glue.__init__   s    R     c                 0    t        | j                  d|      )Nzhas no attribute)AttributeErrorname)r   r   s     r   __getattr__z_Glue.__getattr__    s    TYY(:DAAr   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s    !Br   r   c                       e Zd Zd Zy)TerminalSessionTransportc                     | _          _        | _         j                   j                   j                   j	                  t         j                  j                  fdd              fd} j                  j	                  t         j                   j                  |d              j                  j                  j                  ||       y )Nc                  :     j                   j                        S r   )conn	sendClose)r   protoSessions   r   <lambda>z3TerminalSessionTransport.__init__.<locals>.<lambda>/   s    v{{'<'<\'J r   zSSH Proto Transport)writeloseConnectionr   c                  :     j                   j                          y r   )protor)   r   s   r   r)   z9TerminalSessionTransport.__init__.<locals>.loseConnection4   s    JJ%%'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    
.zz))

!!**77J*	
	( 	++jj&&-.	
 	--::5&Ir   Nr   r   r   r   r   r   r   r!   r!   $   s     Jr   r!   c                   L    e Zd ZeZej                  Zd Zd Z	d Z
d Zd Zd Zy)TerminalSessionc                 (    |d d \  | _         | _        y )N   )r3   r2   )r   term
windowSizeattrss       r   getPtyzTerminalSession.getPtyM   s    ",Ra.TZr   c                     | j                  || j                         t        j                  | j                        | j
                  | j                         y r   )transportFactorychainedProtocolFactoryiconch
IConchUseroriginalr2   r3   )r   r+   s     r   	openShellzTerminalSession.openShellP   s?    '')dmm,JJKK	
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Qr   c                     t        d      )Nz*Unimplemented: TerminalSession.eofReceivedrJ   r,   s    r   eofReceivedzTerminalSession.eofReceived`   s    !"NOOr   c                      y 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   s4    /$331
;RPr   r6   c                       e Zd Zd Zy)TerminalUserc                     t         j                  j                  | |       t        j                  j                  |        t
        j                  | j                  d<   y )Ns   session)r   Adapterr   r   	ConchUserr
   
SSHSessionchannelLookup)r   rB   avatarIds      r   r   zTerminalUser.__init__j   sB    ##D(3!!$')0););:&r   Nr4   r   r   r   rT   rT   i   s    <r   rT   c                   D    e Zd ZeZeZeZe	j                  Zd ZddZd Zy)TerminalRealmc                 8   t        j                         }| j                  ||      }| j                  |      }| j                  |_        | j
                  |_        |j                  t        j                  |       |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 5&*&A&A#&++T2&//40r   Nc                     ||| _         y y r   )r>   )r   r>   s     r   r   zTerminalRealm.__init__   s    '$4D! (r   c                     |D ]9  }|t         j                  u st         j                  | j                  |      d fc S  t               )Nc                       y r   r   r   r   r   r'   z-TerminalRealm.requestAvatar.<locals>.<lambda>   s    r   )r@   rA   rf   rK   )r   rZ   mindr   is        r   requestAvatarzTerminalRealm.requestAvatar   sH     	TAF%%%))4??8+DlSS	T "##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35$r   r\   c                   D    e Zd ZU i Zeeef   ed<   i Zeeef   ed<   d Zy)ConchFactory
publicKeysprivateKeysc                     || _         y 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      s-    %'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 ) . %B B!J !JH V__j((  @<6##Z%7%7 <$ $>7%% r   