CasperSecurity

Current Path : /lib/python3/dist-packages/supervisor/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/supervisor/__pycache__/dispatchers.cpython-310.pyc

o

VƧ\�J�@s�ddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlmZdd	lm
Z
dd
lmZdd�ZGd
d�d�ZGdd�de�ZGdd�de�ZGdd�de�ZdZdZdd�ZGdd�de�Zdd�ZdS)�N)�compact_traceback)�	as_string)�notify)�EventRejectedEvent)�ProcessLogStderrEvent)�ProcessLogStdoutEvent)�EventListenerStates)� getEventListenerStateDescription)�loggerscCsDt|�d}|r |�|d|��s |d8}|r |�|d|��r|S)N�)�len�endswith)�haystack�needle�l�r�8/usr/lib/python3/dist-packages/supervisor/dispatchers.py�find_prefix_at_ends
�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__s
zPDispatcher.__init__cCsd|jjt|�|j|jfS)Nz<%s at %s for %s (%s)>)�	__class__�__name__�idrr�rrrr�__repr__ s
�zPDispatcher.__repr__cC�t��N��NotImplementedErrorr rrr�readable&�zPDispatcher.readablecCr"r#r$r rrr�writable)r'zPDispatcher.writablecCr"r#r$r rrr�handle_read_event,r'zPDispatcher.handle_read_eventcCr"r#r$r rrr�handle_write_event/r'zPDispatcher.handle_write_eventcCs<t�\}}}}|jjjj�dt|�|||f�|��dS)Nz:uncaptured python exception, closing channel %s (%s:%s %s))rr�config�options�logger�critical�repr�close)r�nil�t�v�tbinforrr�handle_error2s��zPDispatcher.handle_errorcCs0|js|jjjj�d|j|f�d|_dSdS)Nz#fd %s closed, stopped monitoring %sT)rrr+r,r-�debugrr rrrr0?s�
�zPDispatcher.closecCsdSr#rr rrr�flushEr'zPDispatcher.flushN)r�
__module__�__qualname__�__doc__rrr!r&r(r)r*r5r0r7rrrrrs
rc@steZdZdZdZdZdZdZdZdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�POutputDispatcheraP
    A Process Output (stdout/stderr) dispatcher. 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.
    FN�c	Cs�||_||_||_|jj|_}|�|j|�t|jd|�}|r/tj|jjj	�
�d|d�|_|j|_
|jj}|jj}|t|�f|_|t|�f|_tjj|_|jj}|j	j|jk|_|j|_|j|_dS)z�
        Initialize the dispatcher.

        `event_type` should be one of ProcessLogStdoutEvent or
        ProcessLogStderrEvent
        z%s_capture_maxbytes�%(message)s)�fmt�maxbytesN)r�
event_typerr�_setup_loggingr+�getattrr
�handle_boundIOr,�	getLogger�
capturelog�mainlog�childlog�BEGIN_TOKEN�	END_TOKENr�begintoken_data�
endtoken_data�LevelsByName�DEBG�
mainlog_level�loglevel�log_to_mainlog�stdout_events_enabled�stderr_events_enabled)	rrr@rr�capture_maxbytes�
begintoken�endtokenr+rrrrYs0��
zPOutputDispatcher.__init__cCs�t|d|�}|sdSt|d|�}t|d|�}d}|dkr/t�d|t�d�|j|f�}tj|j�	�|||||d	�|_
t|d
|d�rV|jd}t�|j
|�dSdS)
z�
        Configure the main log according to the process' configuration and
        channel. Sets `mainlog` on self. Returns nothing.
        �
%s_logfileN�%s_logfile_maxbytes�%s_logfile_backupsr=�syslogzFSpecifying 'syslog' for filename is deprecated. Use %s_syslog instead.� )�filenamer>�rotatingr?�backupsz	%s_syslogFz %(message)s)rB�warnings�warn�DeprecationWarning�join�namer
�handle_filer,rDrF�
handle_syslog)rr+r�logfiler?r]r>rrrrA}s2���
�z POutputDispatcher._setup_loggingcCs:|j|jfD]}|dur|jD]
}|��|��qqdSr#)rFrE�handlers�remove�reopen�r�log�handlerrrr�
removelogs�s

��zPOutputDispatcher.removelogscCs2|j|jfD]}|dur|jD]}|��qqdSr#)rFrErfrhrirrr�
reopenlogs�s

��zPOutputDispatcher.reopenlogscCs�|ro|jj}|jjrt|�}|jr|j�|�|jrHt|t	�s"|}nz|�
d�}Wn
ty6d|}Ynwd}|jjj
|j||j|j|d�|jdkr_|jr]tt|j|jj|��dSdS|jrqtt|j|jj|��dSdSdS)Nzutf-8�Undecodable: %rz%%(name)r %(channel)s output:
%(data)s)rbr�data�stdout)rr+r,�
strip_ansi�stripEscapesrG�inforP�
isinstance�bytes�decode�UnicodeDecodeErrorr-rjrNrbrrQrr�pidrRr)rror+�text�msgrrr�_log�sF
�
�
������zPOutputDispatcher._logcCs�|jdur|j}d|_|�|�dS|jr|j\}}n|j\}}t|j�|kr)dS|j}d|_z
|�|d�\}}Wn)tybd}t	||�}|r[|j||d�|_|d|�}|�|�Yn
w|�|�|�
�||_|rw|��dSdS)Nr<r)rE�
output_bufferr{�capturemoderKrJr�split�
ValueErrorr�toggle_capturemode�
record_output)rro�token�tokenlen�before�after�indexrrrr��s8



�
�zPOutputDispatcher.record_outputcCs�|j|_|jdur\|jr|j|_dS|jjD]}|��q|j��}|j}|jjj	}|�
|j|jj|�}t|�d}|jjj
jj|||d�|jjD]
}|��|��qK|j|_dSdS)Nz-%(procname)r %(channel)s emitted a comm event)�procnamer)r}rErGrfr7�getvaluerrr+rbr@rxrr,r-r6rgrhrF)rrkrorr��eventrzrrrr��s*




�
�z$POutputDispatcher.toggle_capturemodecC�dSrrr rrrr(r'zPOutputDispatcher.writablecC�|jrdSdS�NFT�rr rrrr&�zPOutputDispatcher.readablecCs<|jjj�|j�}|j|7_|��|s|��dSdSr#)rr+r,�readfdrr|r�r0)rrorrrr)s�z#POutputDispatcher.handle_read_event)rr8r9r:r}rFrErGr|rrArlrmr{r�r�r(r&r)rrrrr;Hs"
$ $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 Nr<sREADY
sRESULT cCs�t�||||�tj|j_d|j_d|_d|_t	|j
d|�}|rEt	|j
d|�}t	|j
d|�}tj|j
j
��|d|||d�|_dSdS)Nr<rVrWrXr=)r\r?r])rrr�ACKNOWLEDGEDr�listener_stater��result�	resultlenrBr+r
rcr,rDrG)rrrrrer?r]rrrr s$

��z!PEventListenerDispatcher.__init__cCs0|jdur|jjD]}|��|��q	dSdSr#)rGrfrgrh�rrkrrrrl7s

�z#PEventListenerDispatcher.removelogscCs(|jdur|jjD]}|��q	dSdSr#)rGrfrhr�rrrrm=s


�z#PEventListenerDispatcher.reopenlogscCr�rrr rrrr(Cr'z!PEventListenerDispatcher.writablecCr�r�r�r rrrr&Fr�z!PEventListenerDispatcher.readablecCs�|jjj�|j�}|r<|j|7_|jjj}d||j|f}|jjjj�	|�|j
r;|jjjjr5t|�}|j
�
|�n|��|��dS)Nz%r %s output:
%s)rr+r,r�r�state_bufferrbrr-r6rGrqrrrsr0�handle_listener_state_change)rror�rzrrrr)Ks
�z*PEventListenerDispatcher.handle_read_eventc
CsT|j}|sdS|j}|jj}|j}|tjkrd|_dS|tjkr[t|�|j	kr)dS|�
|j�rD|�tj
�|j	}|j|d�|_d|_n|�tj�d|_d|_|jrY|��dSdS|tj
krn|�tj�d|_d|_dS|tjk�r&|jdur�|�d�}|dkr�dS|jd|�}|j|dd�|_||jd�}zt|�|_Wnxty�zt|�}Wn
ty�d|}Ynw|jjj�d||f�|�tj�d|_tt||j��d|_YdSw|jt|j�}	|	�r	|j|jd|	�7_|j|	d�|_|jt|j�}	|	�s|�|j�d|j_d|_d|_|j�r(|��dSdSdS)Nr<�
���rrnz%s: bad result line: '%s')r�rr+rbr�r�UNKNOWNr�r�READY_FOR_EVENTS_LEN�
startswith�READY_FOR_EVENTS_TOKEN�_change_listener_state�READYr�r��BUSYr��find�RESULT_TOKEN_START_LEN�intrrrwr,r-r_rrr��
handle_result)
rrorr��stater��pos�result_liner��neededrrrr�_s�




�

���*z5PEventListenerDispatcher.handle_listener_state_changecCs�|j}|jj}|jjj}z|jjj�|j|�|�d|�|�	t
j�WdStyE|�
d|�|�	t
j�tt||j��YdS|�
d|�|�	t
j�tt||j��YdS)Nz%s: event was processedz%s: event was rejectedz%s: event caused an error)rr+rbr,r-�group�result_handlerr�r6r�rr��RejectEventr_rrr�)rr�rr�r-rrrr��s
z&PEventListenerDispatcher.handle_resultcCsj|j}|jj}|j}d|t|�t|�f}|jjj�|�||_|tj	kr3d|}|jjj�
|�dSdS)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+rbr�r	r,r-r6rr�r_)r�	new_staterr��	old_staterzrrrr��s �
��z/PEventListenerDispatcher._change_listener_state)rr8r9r:rGr�r��RESULT_TOKEN_STARTrr�r�rrlrmr(r&r)r�r�r�rrrrr�s"Wr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�PInputDispatcherz Input (stdin) dispatcher cCst�||||�d|_dS)Nr<)rr�input_bufferrrrrr�s
zPInputDispatcher.__init__cCs|jr|jsdSdS)NTF)r�rr rrrr(�szPInputDispatcher.writablecCr�rrr rrrr&�r'zPInputDispatcher.readablecCs*|jjj�|j|j�}|j|d�|_dSr#)rr+r,�writerr�)r�sentrrrr7�s�zPInputDispatcher.flushc
Csb|jr/z|��WdSty.}z|jdtjkr"d|_|��n�WYd}~dSd}~wwdS)Nrr<)r�r7�OSError�args�errno�EPIPEr0)r�whyrrrr*�s
����z#PInputDispatcher.handle_write_eventN)	rr8r9r:rr(r&r7r*rrrrr��sr�s[)�H�f�A�B�C�D�R�s�u�J�K�h�l�p�mcCs�d}d}d}t|�}||krG|dkr|||d�tvrd}n |r?|�t|�}|dkr3|||d�S||||�}|}d}|d7}||ks|S)z>
    Remove all ANSI color escapes from the given string.
    r<rrr�N)r�ANSI_TERMINATORSr��ANSI_ESCAPE_BEGIN)�sr��show�i�L�nrrrrr�s"�rrc@seZdZdZdS)r�zY The exception type expected by a dispatcher when a handler wants
    to reject an event N)rr8r9r:rrrrr�sr�cCs|dkrt|��dS)NsOK)r�)r��responserrr�default_handlers�r�)r^r��supervisor.medusa.asyncore_25r�supervisor.compatr�supervisor.eventsrrrr�supervisor.statesrr	�
supervisorr
rrr;r�r�r�r�rr�	Exceptionr�r�rrrr�<module>s.4NG 
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY