HEX
Server: nginx/1.24.0
System: Linux prod-btpayments-io 6.14.0-1018-aws #18~24.04.1-Ubuntu SMP Mon Nov 24 19:46:27 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.3.19
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/supervisor/__pycache__/web.cpython-312.pyc
�

�1�c�^����ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlmZddlm
Z
dd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#Gd�d�Z$Gd�d�Z%Gd�d�Z&Gd�de&�Z'Gd�d e&�Z(Gd!�d"�Z)d#e(d$�d%e'd$�de)d$�d&�Z*Gd'�d(�Z+y))�N)�
templating)�urllib)�urlparse)�as_bytes)�	as_string)�PY2)�unicode)�	producers)�	http_date)�
get_header)�	collector)�
ProcessStates��NOT_DONE_YET)�VERSION)�
make_namespec)�split_namespec)�SystemNamespaceRPCInterface)�RootRPCInterface)�Faults)�RPCError)�SupervisorNamespaceRPCInterfacec�\�eZdZdZej
dej�Zd�Zd�Z	d�Z
y)�DeferredWebProducerz� A medusa producer that implements a deferred callback; requires
    a subclass of asynchat.async_chat that handles NOT_DONE_YET sentinel zConnection: (.*)c�b�||_||_d|_t|j�|_y)NF)�callback�request�finished�float�delay)�selfrrs   �0/usr/lib/python3/dist-packages/supervisor/web.py�__init__zDeferredWebProducer.__init__(s'�� ��
������
��8�>�>�*��
�c�x�|jry	|j�}|turtSd|_|j|�S#t	j
�}|jjjjjd|�d|_|jjd�YyxYw)N�TzWeb interface errori�)rrr�sendresponse�	traceback�
format_excr�channel�server�logger�log�error)r!�response�tbs   r"�morezDeferredWebProducer.more.s����=�=��
	$��}�}��H��<�'�#�#� �D�M��$�$�X�.�.��	$��%�%�'�B��L�L� � �'�'�.�.�2�2�3H�"�M� �D�M��L�L���s�#�s�A�A�A2B9c��|jdi�}|D]}|||j|<�d|jvrd|jd<|jd�r+d|jd<|jjd�y|jdd	�}t|�|jd<|jj	|�t|j|jj�}d}d}|jjd
k(r6|dk(r.|jjd�sd}n�d
|jd<n�d}n�|jjdk(rd|dk(rd}ntd|jvrfd|jvr|jddk(sFd}nC|jjrd|jd<d}nd}n|jj�d}tj|jj��}|rd|jd<|rTtjtj|jj ��}	tj||	g�}	n�t"rwt|jj �dkDrU|jj d}t%|t&�r,tj|�|jj d<|jj j)d|�tj|jj �}	|jj*j-tj.tj0|	|jj2���d|jj*_|r%|jj*j7�yy)N�headers�Content-Typez
text/plain�LocationrzContent-Lengthi-�bodyr&z1.0z
keep-alive�z
Keep-Alive�
Connectionz1.1�closezTransfer-Encoding�chunked)�getrr.�len�pushr�
CONNECTION�header�version�has_key�use_chunkedr
�simple_producer�build_reply_header�chunked_producer�composite_producer�outgoingr�
isinstancer	�insertr*�push_with_producer�globbing_producer�hooked_producerr-�current_request�close_when_done)
r!r/r3r?r6�
connection�close_it�wrap_in_chunking�outgoing_header�outgoing_producers
          r"r'z DeferredWebProducer.sendresponse@s-���,�,�y�"�-���	3�F�#*�6�?�D�L�L�� �	3�����-�+7�D�L�L��(��;�;�z�"�-.�D�L�L�)�*��L�L���s�#���|�|�F�B�'��),�T�����%�&������$���������1D�1D�E�
������<�<���5�(��\�)��|�|�+�+�,<�=� �H�1=�D�L�L��.���
�\�\�
!�
!�U�
*��W�$���!����5�&�$�,�,�6��<�<�(;�<�	�I�#$���\�\�-�-�8A�D�L�L�!4�5�'(�$� �H�
�\�\�
!�
!�
)��H�#�3�3��L�L�+�+�-�/���)0�D�L�L��&�� )� :� :��0�0�$�,�,�2G�2G�H�!��!*� <� <� �"3�4�!��
��D�L�L�1�1�2�Q�6��|�|�,�,�Q�/���d�G�,�/8�/H�/H�$�/O�D�L�L�)�)�!�,�
�L�L�!�!�(�(��O�<� )� <� <����%�%�!'��	
�����/�/��+�+�!�1�1� 1� $��� 0� 0�"��		�04������,���L�L� � �0�0�2�r$N)�__name__�
__module__�__qualname__�__doc__�re�compile�
IGNORECASEr>r#r1r'�r$r"rr#s/��M�����/����?�J�+�$�$X3r$rc��eZdZd�Zy)�ViewContextc�:�|jj|�y�N)�__dict__�update)r!�kws  r"r#zViewContext.__init__�s���
�
���R� r$N)rTrUrVr#r[r$r"r]r]�s��!r$r]c�,�eZdZdZdZd�Zd�Zd�Zd�Zy)�MeldViewztext/html;charset=utf-8g�?c�~�||_|jj}tjj	|�s`tjjtjj
t��}tjj||�}tj|�|_d|_yr_)
�context�template�os�path�isabs�abspath�dirname�__file__�joinr�	parse_xml�rootr)r!rfrg�heres    r"r#zMeldView.__init__�st������<�<�(�(���w�w�}�}�X�&��7�7�?�?�2�7�7�?�?�8�#<�=�D��w�w�|�|�D�(�3�H��(�(��2��	���
r$c��|j�}|turtS|jj}|d}|j|d<d|d<d|d<tjd�|d<t|�|d<|S)	Nr3r4zno-cache�Pragmaz
Cache-Controlr�Expiresr6)�renderrrfr/�content_typer�build_http_dater)r!r6r/r3s    r"�__call__zMeldView.__call__�s����{�{�}���<�����<�<�(�(���9�%��"&�"3�"3����&����#-��� �&�6�6�q�9��	��#�D�>�����r$c��yr_r[�r!s r"ruzMeldView.render�s��r$c�6�|jj�Sr_)rp�clonerzs r"r|zMeldView.clone�s���y�y��� � r$N)	rTrUrVrvr r#rxrur|r[r$r"rdrd�s ��,�L��E���
�!r$rdc��eZdZd�Zy)�TailViewc��|jj}|jj}d|vrd}d}ng|d}d}|jdd�}t	d|j�rt
|�dznd�}|sd}nt|�}	|j|||�}|j�}	|	jd
�}
|
j!d|z�|	jd�}|j!|�|	jd
�}|�Q|j#dt%j&|��dt%j&t)t+�������n|j-�t/|	j1��S#t$rI}|jtjk(rd|z}nd	|j|jfz}Yd}~��1d}~wwxYw)N�processnamezNo process name foundr�limit�1024i������zNo file for %sz#ERROR: unexpected rpc fault [%d] %s�titlezSupervisor tail of process %s�tailbody�refresh_anchorztail.html?processname=z&limit=��href)rf�supervisord�formr;�min�isdigit�intr�readProcessStdoutLogr�coder�NO_FILE�textr|�findmeld�content�
attributesr�quote�str�abs�deparentr�write_xhtmlstring)
r!r�r��tailr��offsetr��rpcinterface�erpr�r�r�s
             r"ruzTailView.render�s����l�l�.�.���|�|� � ����$�*�D��K��}�-�K��F��H�H�W�f�-�E����
�
��s�5�z�"�}�U�K�E��.��>�{�K��,�'�<�<�[�=B�F�L�D��z�z�|���
�
�g�&��
�
�
�5��C�D��=�=��,����������'7�8���"��%�%��L�L��-�v�|�|�C��E�
�O�/L��
&�
�
�#�#�%���/�/�1�2�2��1 �,��v�v����/�/�+�=��D��F�F�A�F�F�H,� ,����	,�s�
F�	G�
>G�GN)rTrUrVrur[r$r"r~r~�s��+3r$r~c�$�eZdZd�Zd�Zd�Zd�Zy)�
StatusViewc���|j�}tjt|jj
j|j
j��}dd|zdd�}dd|zdd�}dd|zdd�}dd	|zdd�}d
d|zdd�}d
d|zdd�}	|tjk(r	|||||	g}
|
S|tjtjtjfvr	|d|||	g}
|
Sdd|||	g}
|
S)N�Startz*index.html?processname=%s&amp;action=start)�namer��target�Restartz,index.html?processname=%s&amp;action=restart�Stopz)index.html?processname=%s&amp;action=stopz	Clear Logz-index.html?processname=%s&amp;action=clearlogzTail -f Stdoutz
logtail/%s�_blankzTail -f Stderrzlogtail/%s/stderr)�	get_staterr�r�group�configr�r�RUNNING�STOPPED�EXITED�FATAL)r!�process�stater��start�restart�stop�clearlog�tailf_stdout�tailf_stderr�actionss           r"�actions_for_processzStatusView.actions_for_process�sM���!�!�#���l�l�=����1E�1E�1J�1J�18���1D�1D�$F�G���@�;�N��
���B�[�P��
���?�+�M��
�� �C�k�Q��
��%� �;�.��
��%�'�+�5��
��
�M�)�)�)���h��l�K�G����}�,�,�m�.B�.B�$�*�*�,�,��d�H�l�L�I�G����T�8�\�<�H�G��r$c�r�|tjk(ry|tjtjfvryy)N�
statusrunning�statuserror�
statusnominal)rr�r��BACKOFF)r!r�s  r"�css_class_for_statezStatusView.css_class_for_states2���M�)�)�)�"�
�}�*�*�M�,A�,A�B�
B� �"r$c�"�����|jj}dt|�f}dt|g�f}t	||g�}|�r�|dk(rd�}d|_|S|dk(r(|jj���fd�}d|_|S|dk(r/|jjd	d
id	dig���fd�}	d|	_|	S��rm�fd
�}
d|
_t��\}}|jj|�}
|
�|
S|
jj|�}|�|
S|dk(rD	|jj���t1��r��fd�}d|_|S�fd�}d|_|S|dk(rD	|jj3���t1��r��fd�}d|_|S�fd�}d|_|S|dk(rO|jjd�gd�d�gd�g�}t1|�r|���fd �}d|_|S�fd!�}d|_|S|d"k(r*	|jj5����fd$�}d|_|St7|��#t$r�}|j t"j$k(rd�n�|j t"j&k(rd�n{|j t"j(k(rd�n[|j t"j*k(rd�n;|j t"j,k(rd�nd|j |j.fz���fd�}d|_|cYd}~Sd}~wwxYw#t$r3}d|j |j.fz��fd�}d|_|cYd}~Sd}~wwxYw#t$r3}d|j |j.fz��fd#�}d|_|cYd}~Sd}~wwxYw)%N�
supervisor�system�refreshc�4�dtj�z}|S)NzPage refreshed at %s)�time�ctime)�messages r"�	donothingz+StatusView.make_callback.<locals>.donothing/s��4�t�z�z�|�C�G�"�Nr$g�������?�stopallc�X����turtSdtj�zS)NzAll stopped at %s�rr�r�)rs�r"r�z)StatusView.make_callback.<locals>.stopall7s$����z�\�1�+�+�2�T�Z�Z�\�A�Ar$�
restartall�
methodNamezsupervisor.stopAllProcesseszsupervisor.startAllProcessesc�\����}|turtSdtj�zS)NzAll restarted at %sr�)�resultrs �r"r�z,StatusView.make_callback.<locals>.restartallCs)���%�Z�F���-�+�+�0�4�:�:�<�?�?r$c���d�zS)NzNo such process named %sr[��namespecs�r"�wrongz'StatusView.make_callback.<locals>.wrongLs���5��@�@r$r�zno such filezfile not executablezalready started�spawn error�abnormal termination�unexpected rpc fault [%d] %sc���d��d���S)N�ERROR: Process �: r[)�msgr�s��r"�starterrz*StatusView.make_callback.<locals>.starterrjs���>F��#L�Lr$c�,��	��}|turtSd�zS#t$rm}|jtjk(rd}n;|jtjk(rd}nd|j|j
fz}d��d|��cYd}~Sd}~wwxYw)Nr�r�r�r�r��Process %s started)rr�r�SPAWN_ERROR�ABNORMAL_TERMINATIONr�r)r�r�r��bool_or_callbackr�s   ��r"�startprocessz.StatusView.make_callback.<locals>.startprocessps����
Q�)9�);�� &��5�'3� 3�#7�(�#B�B��$,�Q�#$�6�6�V�-?�-?�#?�*7�C�%&�V�V�v�/J�/J�%J�*@�C�*H�()������L8�+8�C��BJ�C�'P� P��Q�s��	B�A"B�B�Bc���d�zS)Nr�r[r�s�r"�	startdonez+StatusView.make_callback.<locals>.startdone�����#7�(�#B�Br$r�c����Sr_r[�r�s�r"�stoperrz)StatusView.make_callback.<locals>.stoperr�����#&�Jr$c���	��}|turtSd�zS#t$r%}d|j|jfzcYd}~Sd}~wwxYw)Nr��Process %s stopped)rr�r�r)r�r�r�r�s  ��r"�stopprocessz-StatusView.make_callback.<locals>.stopprocess�s]���4�)9�);�� &��5�'3� 3�#7�(�#B�B��$,�4�'E�$%�F�F�A�F�F�I4�(4�!4��4�s��	A�A�A�Ac���d�zS)Nr�r[r�s�r"�stopdonez*StatusView.make_callback.<locals>.stopdone�r�r$r�zsupervisor.stopProcess)r��paramszsupervisor.startProcessc�8����}|turtSd�zS�NzProcess %s restartedr)�resultsrr�s ��r"�restartprocessz0StatusView.make_callback.<locals>.restartprocess�s#���&.�j�G�&�,�6�'3� 3�#9�H�#D�Dr$c���d�zSr�r[r�s�r"�restartdonez-StatusView.make_callback.<locals>.restartdone�s���#9�H�#D�Dr$r�c����Sr_r[r�s�r"�clearerrz*StatusView.make_callback.<locals>.clearerr�r�r$c���d�zS)NzLog for %s clearedr[r�s�r"r�z*StatusView.make_callback.<locals>.clearlog�s���3�h�>�>r$)rfr�rrrr r��stopAllProcessesr��	multicallr�process_groupsr;�	processes�startProcessrr�rr��NOT_EXECUTABLE�ALREADY_STARTEDr�r�r��callable�stopProcess�clearProcessLogs�
ValueError)r!r��actionr��mainr�r�r�r�r�r��
group_name�process_namer�r�r�r�r�r�r�r�r��results_or_callbackr�r�r�r�r�rr�s `                         @@@r"�
make_callbackzStatusView.make_callback"s�����l�l�.�.��� ?�� L�M���7���?�@��'��v��7�����"�#�#'�	�� � ��9�$�'�2�2�C�C�E��B�
!%��
����<�'�'�.�.�8�8�#�$A�B�#�$B�C�F�H��@�
$(�
� �!�!��A�"���+9�(�+C�(�
�L�#�2�2�6�6�z�B���=� �L��/�/�-�-�l�;���?� �L��W�$�(�(�3�3�@�@��J�)�, � 0�1�C� .2��*�+�+�C�*.�	��(�(��v�%�	'�(�3�3�?�?��I�)� � 0�1�C�-1��)�*�*�C�)-���'���y�(�*6�*=�*=�*G�*G�(@�&.�Z�1�(A�&.�Z�1��+�'� � 3�4�#6��E�
04��,�-�-�E�,0��)�*�*��z�)�(�#/�#:�#:�#K�#K�$�$&��?�%)�H�N�#�O��� � ��c$�(��6�6�V�^�^�3�"0�C��V�V�v�'<�'<�<�"7�C��V�V�v�'=�'=�=�"3�C��V�V�v�'9�'9�9�"/�C��V�V�v�'B�'B�B�"8�C�"@� !������D0�#0�C�M�)-���'���#(��b$�'�<�������?O�O��'�(,��
�&���'��h$�(�<�������?O�O��'�)-���'���(�s[�H3�"L�?M�3	L�<C	L�L�L�	M�(M
�M�
M�	N�(N	�N�	Nc
�B	�|jj}|jj}|jd�}|jd�}|jd�}|rt|js|j||�|_tS|j	�}|turtS|�+|d}|dzdtj|�zz}||dd<|jj}td	t|�fg�}	g}
|jj�D]H}|jj�D])}|
j!|j"j$|f��+�J|
j'�g}
|
D]x\}}|j)|j|j|�}t+||�}|	j,j/|�}|
j!|d
||||d|dd
���z|j1�}|�1|j3d�}d|j4d<|j7|�|
�r�|j3d�j9|
�}d}|D�]�\}}|j3d�}|j7|dj;��|j=|d�|j4d<|j3d�}|j7|d�|j3d�}t+|d|d�}|j?dtj|�z��|j7|�|d}|j3d�}|j9|�D]p\}}|j3d�}|�d|j4d<�)|j?|d|d� �|j7|d�|d!s�\|j?|d!�"��r|rd#|j4d<|}���n"|j3d$�}|jAd%�|j3d&�j7tB�tEtFjHjK�jL�}|j3d'�j7|�tO|jQ��S)(Nr�rr��
SERVER_URL�/z?message=%sr3r5r��	statenamer��description)�statusr�r�r�r�r�
statusmessage�
status_msg�class�trF�status_textr�	info_text�name_anchorr�r�ztail.html?processname=%sr�r��
actionitem_td�actionitem_anchor�hiddenr�)r�r�r�)r��shade�statustablezNo programs to manage�supervisor_version�copyright_date))rfr�r/r;rrrrr�r�rrr��valuesr��keys�appendr�r��sortr�rr��getProcessInfor|r��attribr��repeat�lowerr�r��replacerr��datetime�date�today�yearrr�) r!r�r/r�rr��
server_url�locationr�r��processnamesr��	gprocname�data�	groupnamer��	sent_name�inforp�
statusarea�iterator�	shaded_tr�
tr_element�itemrr�anchorr�
li_element�
actionitem�table�copyright_years                                 r"ruzStatusView.render�s����|�|� � ���<�<�(�(���h�h�}�-�����(�#���(�(�9�%����=�=� $� 2� 2�;�� G��
�#�#� �=�=�?���l�*�'�'��&�!%�l�!3�J�)�C�/�-�&�,�,��C!�3!� !�H�6>�H�Y�'�
�3��l�l�.�.��'��-�k�:�<�
=���
�� �/�/�6�6�8�	D�E�"�_�_�1�1�3�
D�	��#�#�U�\�\�%6�%6�	�$B�C�
D�	D�	������&2�	�"�I�{��.�.��*�*�9�5�?�?��L�N�G�%�i��=�I��*�*�9�9�)�D�D��K�K��k�*�"�!�!��W�
�"�=�1�
�
�	��z�z�|��������7�J�)5�J���g�&����w�'���}�}�T�*�1�1�$�7�H��I�$,�
*� �
�D�(�1�1�-�@���#�#�D��N�$8�$8�$:�;�.2�.F�.F���M�/#��"�"�7�+�'�/�/��<�	��!�!�$�}�"5�6�#�,�,�]�;��+�D��M�4��<�H���!�!�'A�"(�,�,�{�";�(<�!�=����{�+��y�/�� *� 3� 3�O� D�
�.;�.B�.B�7�.K�	K�*�J�
�'�0�0�1D�E�F�!�)�19��
�
�g�.��)�)�z�&�/A�/9�&�/A�*�C����z�&�'9�:�%�h�/�"�-�-�Z��5I�-�J�	K��18�J�%�%�g�.� )�M�	�=
*�@�M�M�-�0�E��M�M�1�2��
�
�*�+�3�3�G�<��X�]�]�0�0�2�7�7�8���
�
�&�'�/�/��?���/�/�1�2�2r$N)rTrUrVr�r�rrur[r$r"r�r��s��)�V#�k!�Zd3r$r�c��eZdZdZd�Zd�Zy)�OKViewrc��||_yr_)rf)r!rfs  r"r#zOKView.__init__7s	����r$c�
�ddiS)Nr6�OKr[rzs r"rxzOKView.__call__:s���t�}�r$N)rTrUrVr r#rxr[r$r"r;r;5s��
�E��r$r;zui/status.html)rg�viewzui/tail.html)�
index.htmlz	tail.htmlzok.htmlc�(�eZdZdZd�Zd�Zd�Zd�Zy)�supervisor_ui_handlerz&Supervisor Web UI HTTP Request Handlerc��||_yr_)r�)r!r�s  r"r#zsupervisor_ui_handler.__init__Ps
��&��r$c���|jdvry|j�\}}}}|jd�r|dd}|jd�r�|sd}tj	�D]	}||k(s�	yy)N)�POST�GETFr	r7r@T)�command�	split_uri�
startswith�VIEWSr)r!rrir��query�fragment�viewnames       r"�matchzsupervisor_ui_handler.matchSsw���?�?�/�1��(/�(9�(9�(;�%��f�e�X��o�o�c�"����8�D��o�o�c�"���D��
�
��	�H��4���	r$c�j�|jdk(rt||�|_y|jd|�y)NrEr&)rGr
�continue_request)r!rs  r"�handle_requestz$supervisor_ui_handler.handle_requestcs-���?�?�f�$� )�$�� 8�G���!�!�"�g�.r$c�d�i}|j�}|j|�d|vrd|d<|d}tj|�}tj|�}|j�D]
\}}	|	d||<�|D]
\}}	|	||<�|j
�|d<|d}
|
r|
ddk(r|
dd}
|
r	|
ddk(r�|
sd}
tj|
�}|�yd	ii}|d
}
|d}t|||||j��}|
|�}|jj}|t||��y)
N�QUERY_STRINGr&rr�	PATH_INFOr	r7r@r3r?rg)rgrr�r/r�)�cgi_environmentrar�	parse_qsl�parse_qs�items�get_server_urlrJr;r]r�r*rJr)r!r,rr��cgi_envrK�form_urlencoded�
query_data�k�vri�viewinfor/�	viewclass�viewtemplaterfr?�pushproducers                  r"rPz&supervisor_ui_handler.continue_requestisp�����)�)�+�����G����%�#%�D�� ��^�$��#�,�,�T�2���&�&�u�-�
��$�$�&�	�D�A�q���d�D��G�	�$�	�D�A�q��D��G�	�%�3�3�5��\���K� ���t�A�w�#�~����8�D��t�A�w�#�~���D��9�9�T�?������r�?���V�$�	��
�+���|�(/�%)�)1�*.�*:�*:�	<��
��!�����9�9���(��$�7�8r$N)rTrUrV�IDENTr#rNrQrPr[r$r"rBrBMs��4�E�'�� /�.9r$rB),rhrXr�r(r$r�r�supervisor.compatrrrrrr	�supervisor.medusar
�supervisor.medusa.http_serverrr� supervisor.medusa.xmlrpc_handlerr
�supervisor.processr�supervisor.httpr�supervisor.optionsrrr�supervisor.xmlrpcrrrr�supervisor.rpcinterfacerrr]rdr~r�r;rJrBr[r$r"�<module>rms���	�	����!�$�&�&�'�!�%�'�3�4�6�,�(�&�,�-�9�.�$�&�C�u3�u3�n!�!� !� !�D,3�x�,3�\E3��E3�N
��&���
%��
�
��
�
	�� J9�J9r$