HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //proc/self/root/lib/python3.6/site-packages/supervisor/__pycache__/dispatchers.cpython-36.pyc
3

�k�`�K�@s�ddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZdd	l
mZdd
l
mZdd�ZGd
d�d�ZGdd�de�ZGdd�de�ZGdd�de�ZdZd+Zd%d&�ZGd'd(�d(e�Zd)d*�ZdS),�N)�compact_traceback)�	as_string)�notify)�EventRejectedEvent)�ProcessLogStderrEvent)�ProcessLogStdoutEvent)�EventListenerStates)� getEventListenerStateDescription)�loggerscCs6t|�d}x$|r0|j|d|��r0|d8}qW|S)N�)�len�endswith)ZhaystackZneedle�l�r�!/usr/lib/python3.6/dispatchers.py�find_prefix_at_end
src@s\eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dS)�PDispatcherz{ Asyncore dispatcher for mainloop, representing a process channel
    (stdin, stdout, or stderr).  This class is abstract. FcCs||_||_||_d|_dS)NF)�process�channel�fd�closed)�selfrrrrrr�__init__szPDispatcher.__init__cCsd|jjt|�|j|jfS)Nz<%s at %s for %s (%s)>)�	__class__�__name__�idrr)rrrr�__repr__szPDispatcher.__repr__cCst�dS)N)�NotImplementedError)rrrr�readable%szPDispatcher.readablecCst�dS)N)r)rrrr�writable(szPDispatcher.writablecCst�dS)N)r)rrrr�handle_read_event+szPDispatcher.handle_read_eventcCst�dS)N)r)rrrr�handle_write_event.szPDispatcher.handle_write_eventcCs<t�\}}}}|jjjjjdt|�|||f�|j�dS)Nz:uncaptured python exception, closing channel %s (%s:%s %s))rr�config�options�loggerZcritical�repr�close)rZnil�t�vZtbinforrr�handle_error1s
zPDispatcher.handle_errorcCs,|js(|jjjjjd|j|f�d|_dS)Nz#fd %s closed, stopped monitoring %sT)rrr"r#r$�debugr)rrrrr&>szPDispatcher.closecCsdS)Nr)rrrr�flushDszPDispatcher.flushN)r�
__module__�__qualname__�__doc__rrrrrr r!r)r&r+rrrrrs
rc@s|eZdZdZdZdZdZdZdZdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�POutputDispatcherae
    Dispatcher for one channel (stdout or stderr) of one process.
    Serves several purposes:

    - capture output sent within <!--XSUPERVISOR:BEGIN--> and
      <!--XSUPERVISOR:END--> tags and signal a ProcessCommunicationEvent
      by calling notify(event).
    - route the output to the appropriate log handlers as specified in the
      config.
    NF�cCs�||_||_||_|jj|_|j�|j�|j|_|jj}|jj	}|t
|�f|_|t
|�f|_t
jj|_|jj}|jj|jk|_|j|_|j|_dS)z�
        Initialize the dispatcher.

        `event_type` should be one of ProcessLogStdoutEvent or
        ProcessLogStderrEvent
        N)r�
event_typerr�_init_normallog�_init_capturelog�	normallog�childlogZBEGIN_TOKENZ	END_TOKENr�begintoken_data�
endtoken_datar
ZLevelsByNameZDEBG�
mainlog_levelr"r#Zloglevel�log_to_mainlog�stdout_events_enabled�stderr_events_enabled)rrr1rZ
begintokenZendtokenr"rrrrYs 

zPOutputDispatcher.__init__cCs�|jj}|j}t|d|�}t|d|�}t|d|�}t|d|�}|sN|rZ|jj�|_|rztj|j|d|||d�|r�tj	|j|j
dd�d	S)
z�
        Configure the "normal" (non-capture) log for this channel of this
        process.  Sets self.normallog if logging is enabled.
        z
%s_logfilez%s_logfile_maxbytesz%s_logfile_backupsz	%s_syslogz%(message)s)�filename�fmt�rotating�maxbytes�backupsz %(message)s)r=N)rr"r�getattrr#�	getLoggerr4r
�handle_fileZ
handle_syslog�name)rr"r�logfiler?r@Z	to_syslogrrrr2us(z!POutputDispatcher._init_normallogcCs>t|jjd|j�}|r:|jjjj�|_tj|jd|d�dS)z�
        Configure the capture log for this process.  This log is used to
        temporarily capture output when special output is detected.
        Sets self.capturelog if capturing is enabled.
        z%s_capture_maxbytesz%(message)s)r=r?N)	rArr"rr#rB�
capturelogr
Zhandle_boundIO)rZcapture_maxbytesrrrr3�sz"POutputDispatcher._init_capturelogcCsBx<|j|jfD],}|dk	rx|jD]}|j�|j�q"WqWdS)N)r4rF�handlers�remove�reopen)r�log�handlerrrr�
removelogs�s
zPOutputDispatcher.removelogscCs:x4|j|jfD]$}|dk	rx|jD]}|j�q"WqWdS)N)r4rFrGrI)rrJrKrrr�
reopenlogs�szPOutputDispatcher.reopenlogscCs�|r�|jj}|jjrt|�}|jr.|jj|�|jr�t|t	�sD|}n,y|j
d�}Wntk
rnd|}YnXd}|jjj
|j||j|j|d�|jdkr�|jr�tt|j|jj|��n|jr�tt|j|jj|��dS)Nzutf-8zUndecodable: %rz%%(name)r %(channel)s output:
%(data)s)rDr�data�stdout)rr"r#�
strip_ansi�stripEscapesr5�infor9�
isinstance�bytes�decode�UnicodeDecodeErrorr$rJr8rDrr:rr�pidr;r)rrNr"�text�msgrrr�_log�s4


zPOutputDispatcher._logcCs�|jdkr$|j}d|_|j|�dS|jr6|j\}}n
|j\}}t|j�|krRdS|j}d|_y|j|d�\}}WnTtk
r�d}t	||�}|r�|j||d�|_|d|�}|j|�YnX|j|�|j
�||_|r�|j�dS)Nr0r)rF�
output_bufferrZ�capturemoder7r6r�split�
ValueErrorr�toggle_capturemode�
record_output)rrN�token�tokenlenZbefore�after�indexrrrr`�s4




zPOutputDispatcher.record_outputcCs�|j|_|jdk	r�|jr$|j|_n�x|jjD]}|j�q.W|jj�}|j}|jjj	}|j
|j|jj|�}t|�d}|jjj
jj|||d�x |jjD]}|j�|j�q�W|j|_dS)Nz-%(procname)r %(channel)s emitted a comm event)�procnamer)r\rFr5rGr+�getvaluerrr"rDr1rWrr#r$r*rHrIr4)rrKrNrre�eventrYrrrr_�s&




z$POutputDispatcher.toggle_capturemodecCsdS)NFr)rrrrrszPOutputDispatcher.writablecCs|jr
dSdS)NFT)r)rrrrrszPOutputDispatcher.readablecCs8|jjjj|j�}|j|7_|j�|s4|j�dS)N)rr"r#�readfdrr[r`r&)rrNrrrr s
z#POutputDispatcher.handle_read_event)rr,r-r.r5r4rFr\r[rr2r3rLrMrZr`r_rrr rrrrr/Gs"
  $r/c@sxeZdZdZdZdZdZdZee�Z	ee�Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�PEventListenerDispatcherzN An output dispatcher that monitors and changes a process'
    listener_state Nr0sREADY
sRESULT cCs�tj||||�tj|j_d|j_d|_d|_t	|j
d|�}|r�t	|j
d|�}t	|j
d|�}|j
jj�|_
tj|j
|d|||d�dS)Nr0z
%s_logfilez%s_logfile_maxbytesz%s_logfile_backupsz%(message)s)r>r?r@)rrr�ACKNOWLEDGEDr�listener_staterg�result�	resultlenrAr"r#rBr5r
rC)rrrrrEr?r@rrrr+s"
z!PEventListenerDispatcher.__init__cCs0|jdk	r,x |jjD]}|j�|j�qWdS)N)r5rGrHrI)rrKrrrrLCs
z#PEventListenerDispatcher.removelogscCs(|jdk	r$x|jjD]}|j�qWdS)N)r5rGrI)rrKrrrrMIs
z#PEventListenerDispatcher.reopenlogscCsdS)NFr)rrrrrOsz!PEventListenerDispatcher.writablecCs|jr
dSdS)NFT)r)rrrrrRsz!PEventListenerDispatcher.readablecCs�|jjjj|j�}|rx|j|7_|jjj}d||j|f}|jjjjj	|�|j
r�|jjjjrjt|�}|j
j
|�n|j�|j�dS)Nz%r %s output:
%s)rr"r#rhr�state_bufferrDrr$r*r5rPrQrRr&�handle_listener_state_change)rrNrerYrrrr Ws
z*PEventListenerDispatcher.handle_read_eventc
CsZ|j}|sdS|j}|jj}|j}|tjkr6d|_dS|tjkr�t|�|j	krRdS|j
|j�r�|jtj
�|j	}|j|d�|_d|_n|jtj�d|_d|_|jr�|j�ndS�n�|tj
kr�|jtj�d|_d|_dS|tjk�rV|jdk�r�|jd�}|dk�rdS|jd|�}|j|dd�|_||jd�}yt|�|_Wn�tk
�r�yt|�}Wntk
�r�d|}YnX|jjjjd||f�|jtj�d|_tt||j��d|_dSXnt|jt|j�}	|	�r |j|jd|	�7_|j|	d�|_|jt|j�}	|	�sF|j|j�d|j_d|_d|_|j�rV|j�dS)Nr0�
rzUndecodable: %rz%s: bad result line: '%s'���)rnrr"rDrkr�UNKNOWNrjr�READY_FOR_EVENTS_LEN�
startswith�READY_FOR_EVENTS_TOKEN�_change_listener_stateZREADYrgroZBUSYrm�find�RESULT_TOKEN_START_LEN�intr^rrVr#r$�warnrrrl�
handle_result)
rrNrre�staterb�posZresult_linermZneededrrrroks|






z5PEventListenerDispatcher.handle_listener_state_changecCs�|j}|jj}|jjj}y2|jjjj|j|�|jd|�|j	t
j�Wnrtk
r�|j
d|�|j	t
j�tt||j��Yn6|j
d|�|j	t
j�tt||j��YnXdS)Nz%s: event was processedz%s: event was rejectedz%s: event caused an error)rr"rDr#r$�groupZresult_handlerrgr*rvrrj�RejectEventrzrrrr)rrlrrer$rrrr{�s
z&PEventListenerDispatcher.handle_resultcCsf|j}|jj}|j}d|t|�t|�f}|jjjj|�||_|tj	krbd|}|jjjj
|�dS)Nz%s: %s -> %sz�%s: has entered the UNKNOWN state and will no longer receive events, this usually indicates the process violated the eventlistener protocol)rr"rDrkr	r#r$r*rrrrz)rZ	new_staterreZ	old_staterYrrrrv�s
z/PEventListenerDispatcher._change_listener_state)rr,r-r.r5rnruZRESULT_TOKEN_STARTrrsrxrrLrMrrr ror{rvrrrrri s Wric@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�PInputDispatcherz Input (stdin) dispatcher cCstj||||�d|_dS)Nr0)rr�input_buffer)rrrrrrrr�szPInputDispatcher.__init__cCs|jr|jrdSdS)NTF)r�r)rrrrr�szPInputDispatcher.writablecCsdS)NFr)rrrrr�szPInputDispatcher.readablecCs*|jjjj|j|j�}|j|d�|_dS)N)rr"r#�writerr�)rZsentrrrr+�szPInputDispatcher.flushcCs\|jrXy|j�WnDtk
rV}z(|jdtjkrDd|_|j�n�WYdd}~XnXdS)Nrr0)r�r+�OSError�args�errnoZEPIPEr&)rZwhyrrrr!�s
z#PInputDispatcher.handle_write_eventN)	rr,r-r.rrrr+r!rrrrr��sr�s[�H�f�A�B�C�D�R�s�u�J�K�h�l�p�mcCs�d}d}d}t|�}xv||kr�|dkr@|||d�tkr@d}n@|r�|jt|�}|dkrh|||d�S||||�}|}d}|d7}qW|S)z>
    Remove all ANSI color escapes from the given string.
    r0rrNrq)r�ANSI_TERMINATORSrw�ANSI_ESCAPE_BEGIN)�srlZshow�i�L�nrrrrQs 
rQc@seZdZdZdS)rzY The exception type expected by a dispatcher when a handler wants
    to reject an event N)rr,r-r.rrrrr!srcCs|dkrt|��dS)NsOK)r)rgZresponserrr�default_handler%sr�)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)r�Zsupervisor.medusa.asyncore_25rZsupervisor.compatrZsupervisor.eventsrrrrZsupervisor.statesrr	Z
supervisorr
rrr/rir�r�r�rQ�	Exceptionrr�rrrr�<module>s,4ZH