
    MhG                        d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dZ G d deeee          ZdS )z+Tornado handlers for the terminal emulator.    )annotationsN)ensure_async)utcnow)warn_disabled_authorization)JupyterHandler)WebSocketMixin)NamedTermManager)
TermSocket)web   )TerminalsMixin	terminalsc                  \     e Zd ZdZeZdd
ZdddZd fdZd fdZ	dd fdZ
ddZ xZS )r
   zA terminal websocket.namestrterm_managerr	   kwargst.AnyreturnNonec                V    t          j        | |fi | t          j        | |           dS )zInitialize the socket.N)BaseTermSocket
initializer   )selfr   r   r   s       a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server_terminals/handlers.pyr   zTermSocket.initialize   s8     	!$?????!$-----    Noriginboolc                    dS )zuTerminado adds redundant origin_check
        Tornado already calls check_origin, so don't do anything here.
        T )r   r   s     r   origin_checkzTermSocket.origin_check"   s	     tr   argsc                  K   | j         }|st          j        d          | j        t	                       n6| j                            | |d| j                  st          j        d          |d         | j        j        vrt          j        d           t                      j
        |i |}|t          |           d{V  dS dS )zGet the terminal socket.i  Nexecuter   i  )current_userr   	HTTPError
authorizerr   is_authorizedauth_resourcer   r   supergetr   )r   r"   r   userresp	__class__s        r   r+   zTermSocket.get(   s        	%-$$$ ?"'))))..tT9dFXYY 	%-$$$7$+555-$$$uww{D+F++t$$$$$$$$$$$ r   messagec                   K   t          t                                          |                     d{V  |                                  dS )zHandle a socket message.N)r   r*   
on_message_update_activity)r   r/   r.   s     r   r1   zTermSocket.on_message<   sQ      577--g66777777777r   Fbinaryc                v    t                                          ||           |                                  dS )zWrite a message to the socket.)r3   N)r*   write_messager2   )r   r/   r3   r.   s      r   r5   zTermSocket.write_messageA   s8    gf555r   c                    t                      | j        j        d<   | j        | j        j        v r*t                      | j        j        | j                 _        d S d S )Nterminal_last_activity)r   applicationsettings	term_nameterminal_managerr   last_activity)r   s    r   r2   zTermSocket._update_activityF   sQ    >Dhh!":;>T2<<<LRHHD!+DN;III =<r   )r   r   r   r	   r   r   r   r   )N)r   r   r   r   )r"   r   r   r   r   r   )r/   r   r   r   )F)r/   r   r3   r   r   r   )r   r   )__name__
__module____qualname____doc__AUTH_RESOURCEr)   r   r!   r+   r1   r5   r2   __classcell__)r.   s   @r   r
   r
      s        !M. . . .    % % % % % %(           
             
U U U U U U U Ur   r
   )r@   
__future__r   typingtjupyter_core.utilsr   jupyter_server._tzr   jupyter_server.auth.utilsr   jupyter_server.base.handlersr   jupyter_server.base.websocketr   terminado.managementr	   terminado.websocketr
   r   tornador   baser   rA   r    r   r   <module>rO      s   1 1 # " " " " "     + + + + + + % % % % % % A A A A A A 7 7 7 7 7 7 8 8 8 8 8 8 1 1 1 1 1 1 < < < < < <                  4U 4U 4U 4U 4U 4U 4U 4U 4U 4Ur   