
    sj!                     :   d dl 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
mZmZmZmZmZmZmZmZ ddlmZ  ej*                  e      Z eej2                  j5                  dd            Z eej2                  j5                  dd            Z G d d	      Zd
 Zy)    N)
STATUS_BAD_REQUESTSTATUS_NOT_FOUND	STATUS_OKSTATUS_SERVICE_UNAVAILABLEProcessManagerProxyMappingManagerTXTSessionManagerextractSessionIdfilterResponsevalidateKeySet   )_root_handlerWSLINK_LAUNCHER_GET0WSLINK_LAUNCHER_DELETEc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)LauncherResourcec                     || _         || _        t        |d   d         | _        |d   d   | _        t        |t        |d   d               | _        t        |      | _	        y )Nconfigurationtimeoutfields
proxy_file)
_options_configinttime_to_waitfield_filterr	   r   session_managerr   process_manager)selfoptionsconfigs      M/DATA/.local/lib/python3.12/site-packages/wslink/backends/aiohttp/launcher.py__init__zLauncherResource.__init__(   sj     7	 BC"?3H=-*6/+B<+PQ 
  .f5    c                 .    t         j                  d       y )Nz4Server factory shutting down. Stopping all processes)loggerwarning)r    s    r#   __del__zLauncherResource.__del__2   s    MNr%   c                 t  K   |j                          d {   }t        |dgd      st        j                  ddit              S | j
                  j                         }|D ]8  }| j                  j                  |       | j
                  j                  |       : | j                  j                  |      }|st        j                  ddit              S | j
                  j                  |      }|s%d|d    }t        j                  d|it              S | j                  ||       d {   S 7 7 w)	NapplicationzLaunch requesterrorzThe request is not completestatusz%All the resources are currently takenz$The process did not properly start. cmd)jsonr   aiohttp_webjson_responser   r   listEndedProcessr   deleteSessionstopProcesscreateSessionr   startProcess_waitForReady)r    requestpayload
id_to_freeidsessionprocerr_msgs           r#   handle_postzLauncherResource.handle_post9   s7    & g8HI,,78AS 
 ))::<
B  ..r2  ,,R0 
 &&44W= ,,AB1  ##009<WU^<LMG,,'"+E  ''999C 'B :s"   D8D3DD8.D6/D86D8c                   K   t         j                   j                         }d}	 | j                  j                  ||      rK| j                  }|d   |d   v rg | j                  d}t        j                  t        ||      t              S t         j                   j                         |z
  }|j                         | j                  kD  r^d|d<   | j                  j                  |d          | j                  j                  |d          t        j                  dd	it              S t        j                   d
       d {    |d
z  }'7 w)Nr   Tsecretr/   r-   startTimedOutr<   r,   zASession did not start before timeout expired. Check session logs.r   )datetimenowr   isReadyr   r1   r2   r   r   total_secondsr   r   r4   r5   r   asynciosleep)r    r=   _
start_timecount
filterkeyselapsed_times          r#   r8   zLauncherResource._waitForReadya   s@    &&**,
##++GU;!..
8$6!?4#4#4!?h!?J"00"7J7	  $,,002Z?L))+d.?.?? ,0($$2274=A$$00?"00!d 6	  --"""QJE7 4 #s   D=E?E Ec                   K   t        |      }|s4d}t        j                  |       t        j                  d|it
              S t        j                  d|       | j                  j                  |      }|s7d| }t        j                  |       t        j                  d|it
              S t        j                  t        || j                        t              S w)Nzid not provided in GET requestr,   r-   zGET request received for id: %sNo session with id: )r
   r'   r,   r1   r2   r   infor   
getSessionr   r   r   r    r9   r<   messager=   s        r#   
handle_getzLauncherResource.handle_get   s     g&6GLL!,,'"+=  	5r:&&11"5,RD1GLL!,,'"+= 
 ((7D$5$56y
 	
s   CCc                 6  K   t        |      }|s4d}t        j                  |       t        j                  d|it
              S t        j                  d|       | j                  j                  |      }|s7d| }t        j                  |       t        j                  d|it              S | j                  j                  |       | j                  j                  |       d| }t        j                  |       t        j                  |t              S w)Nz!id not provided in DELETE requestr,   r-   z"DELETE request received for id: %srP   zDeleted session with id: )r
   r'   r,   r1   r2   r   rQ   r   rR   r   r4   r   r5   r   rS   s        r#   handle_deletezLauncherResource.handle_delete   s     g&9GLL!,,'"+=  	8"=&&11"5,RD1GLL!,,'"+; 
 	**2.((,-bT2G((CCs   DDN)	__name__
__module____qualname__r$   r)   r@   r8   rU   rW    r%   r#   r   r   '   s$    6O":PJ
:Dr%   r   c                    t        |d   d         }t        |d   d         }t        |d   d         }t        |d   d         }t        |d   d         }|t        j                  z   dz   }d}t	        j
                  |d	
      }	|	j                  t        j                         |	j                  t	        j                  |             t	        j                  d      j                  |	       | j                  rt	        j                  t        j                        }
|
j                  t        j                          t	        j                  |      }|
j                  |       t	        j                  d      j                  |
       t#        j$                         }t'        | |      }|j)                  d      sd| d}t#        j*                  ||j,                        g}t.        r2|j1                  t#        j2                  |dz   |j4                               t6        r2|j1                  t#        j8                  |dz   |j:                               |j=                  |       t?        |      dkD  rG|j@                  jC                  ddtD               |j=                  t#        jF                  d|      g       t#        jH                  |||       y )Nr   log_dircontentendpointhostportzlauncherLog.logz.%(asctime)s:%(levelname)s:%(name)s:%(message)sw)modewslink/z{id}r   GET)r`   ra   )%strr   osseploggingFileHandlersetLevelDEBUGsetFormatter	Formatter	getLogger
addHandlerdebugStreamHandlersysstdoutINFOr1   Applicationr   
startswithpostr@   
ENABLE_GETappendgetrU   ENABLE_DELETEdeleterW   
add_routeslenrouter	add_router   staticrun_app)r!   r"   r]   r^   r_   r`   ra   logFileName
formattingfhconsole	formatterweb_applauncher_resourceroutess                  r#   startWebServerr      sD    &))45G&))45G6/*:67Hvo&v./Dvo&v./D BFF"%66KAJ			[s	3BKKOOG%%j12h**2.}}''

3&%%j1	Y'(#..w7%%'G(&9s#xj? 	#4#@#@AF kooh&79J9U9UVWx&02C2Q2QR	
 v
7|a  ];K..sG<=>d6r%   )rH   rD   rj   rh   rt   aiohttp.webwebr1   wslink.launcherr   r   r   r   r   r   r	   r
   r   r    r   rp   rX   r'   r   environr|   rz   r}   r   r   r[   r%   r#   <module>r      s       	 
 !   			8	$  5s;<
BJJNN#;SABWD WD~17r%   