U
    Vi                     @   s   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlZd dlZe Ze
 Zejdedddd	 e	d
dZejdededddZedded	ddZedeedddZdS )    )FastAPIRequest	WebSocket)HTMLResponse)StaticFiles)Jinja2TemplatesNz/staticZstatic)	directory)name	templates/)Zresponse_classrequestc                 C   s   t dd| iS )Nz
index.htmlr   )r
   ZTemplateResponser    r   /var/www/html/dgtu/main.pyindex   s    r   z/node/createnodec                    s,   t jjddddddd}|jd d | dS )Nzalpine:latestz/bin/shTnone)commandttyZ
stdin_opendetachZnetwork_mode   )idr	   )client
containersrunr   )r	   	containerr   r   r   create_node   s    r   z	/ws/{cid})wscidc           	         s     I d H  tj|}|jd d }t \ }td| dddd} fdd	}t	 }|
|   I d H }t |  qld S )
NStateZPidz/proc/z/root/dev/consolezrb+r   )	bufferingc                     s"   t  d} | I d H  q d S )Ni   )osread
send_bytes)dataZmasterr   r   r   read_from_container4   s    z(ws_terminal.<locals>.read_from_container)acceptr   r   getattrsptyopenptyopenasyncioget_event_loopcreate_taskZreceive_textr!   writeencode)	r   r   r   pidZslaver   r&   loopmsgr   r%   r   ws_terminal,   s    r5   )r   )Zfastapir   r   r   Zfastapi.responsesr   Zfastapi.staticfilesr   Zfastapi.templatingr   Zdockerr-   r*   r!   appZfrom_envr   Zmountr
   r(   r   Zpoststrr   	websocketr5   r   r   r   r   <module>   s"   
