Your IP : 18.188.218.140


Current Path : /opt/alt/python312/lib64/python3.12/wsgiref/__pycache__/
Upload File :
Current File : //opt/alt/python312/lib64/python3.12/wsgiref/__pycache__/simple_server.cpython-312.opt-1.pyc

�

�Q�f3���dZddlmZmZddlZddlZddlmZddl	m
Z
dZgd�ZdezZ
e
�d	zejj�dzZe
d
zezZGd�de�ZGd
�de�ZGd�de�Zd�Zeefd�Zedk(rfedde�5Zej2j5�Zededdedd�ddlZej<d�ej?�ddd�yy#1swYyxYw)a!BaseHTTPServer that implements the Python WSGI protocol (PEP 3333)

This is both an example of how WSGI can be implemented, and a basis for running
simple web applications on a local machine, such as might be done when testing
or debugging an application.  It has not been reviewed for security issues,
however, and we strongly recommend that you use a "real" web server for
production use.

For example usage, see the 'if __name__=="__main__"' block at the end of the
module.  See also the BaseHTTPServer module docs for other API information.
�)�BaseHTTPRequestHandler�
HTTPServerN)�
SimpleHandler)�python_implementationz0.2)�
WSGIServer�WSGIRequestHandler�demo_app�make_server�WSGIServer/�/� c��eZdZeZd�Zy)�
ServerHandlerc���	|jj|jjdd�d|j�tj|�y#tj|�wxYw)Nr
�r)�request_handler�log_request�status�split�
bytes_sentr�close��selfs �</opt/alt/python312/lib64/python3.12/wsgiref/simple_server.pyrzServerHandler.close sY��	&�� � �,�,����!�!�#�a�(��+�T�_�_�
�
����%��M����%�s�AA�A2N)�__name__�
__module__�__qualname__�software_version�server_softwarer��rrrs��&�O�&r!rc�,�eZdZdZdZd�Zd�Zd�Zd�Zy)rz7BaseHTTPServer that implements the Python WSGI protocolNc�N�tj|�|j�y)z.Override server_bind to store the server name.N)r�server_bind�
setup_environrs rr$zWSGIServer.server_bind0s�����t�$����r!c��ix}|_|j|d<d|d<t|j�|d<d|d<d|d<d|d<y)	N�SERVER_NAMEzCGI/1.1�GATEWAY_INTERFACE�SERVER_PORT��REMOTE_HOST�CONTENT_LENGTH�SCRIPT_NAME)�base_environ�server_name�str�server_port)r�envs  rr%zWSGIServer.setup_environ5s^��"$�$��d��!�-�-��M��#,��� � ��!1�!1�2��M����M�� ������M�r!c��|jS�N��applicationrs r�get_appzWSGIServer.get_app?s�����r!c��||_yr4r5)rr6s  r�set_appzWSGIServer.set_appBs
��&��r!)	rrr�__doc__r6r$r%r7r9r r!rrr*s��A��K��
 � �'r!rc�(�eZdZdezZd�Zd�Zd�Zy)rrc��|jjj�}|j|d<|j|d<|j
|d<d|jvr |jjdd�\}}n|jd}}tjj|d�|d<||d	<|j�}||jd
k7r||d<|jd
|d<|jjd
��|jj�|d<n|jd
|d<|jjd�}|r||d<|jj!�D]]\}}|j#dd�j%�}|j'�}||vr�;d|z|vr|d|zxxd|zz
cc<�V||d|z<�_|S)N�SERVER_PROTOCOL�SERVER_SOFTWARE�REQUEST_METHOD�?rr*z
iso-8859-1�	PATH_INFO�QUERY_STRINGrr+�REMOTE_ADDRzcontent-type�CONTENT_TYPEzcontent-lengthr,�-�_�HTTP_�,)�serverr.�copy�request_version�server_version�command�pathr�urllib�parse�unquote�address_string�client_address�headers�get�get_content_type�items�replace�upper�strip)rr2rN�query�host�length�k�vs        r�get_environzWSGIRequestHandler.get_environKs����k�k�&�&�+�+�-��!%�!5�!5����!%�!4�!4���� $�������$�)�)��������Q�/�J�D�����2��D�!�<�<�/�/��l�C��K��#��N���"�"�$���4�&�&�q�)�)�!%�C�
��!�0�0��3��M���<�<���N�+�3�"&�,�,�"?�"?�"A�C���"&�,�,�~�">�C������!�!�"2�3���$*�C� �!��L�L�&�&�(�D�A�q��i�i��C� �&�&�(�A�A�G�G�I�!��C�x���q�y�C���G�A�I��#�a�%�'��!"��G�A�I��)��
r!c�"�tjSr4)�sys�stderrrs r�
get_stderrzWSGIRequestHandler.get_stderrps���z�z�r!c���|jjd�|_t|j�dkDr'd|_d|_d|_|jd�y|j�syt|j|j|j�|j�d��}||_
|j|jj!��y)zHandle a single HTTP requestiir*i�NF)�multithread)�rfile�readline�raw_requestline�len�requestlinerKrM�
send_error�
parse_requestr�wfilerdr`r�runrIr7)r�handlers  r�handlezWSGIRequestHandler.handless��� $�z�z�2�2�5�9����t�#�#�$�u�,�!�D��#%�D� ��D�L��O�O�C� ���!�!�#����J�J��
�
�D�O�O�$5�t�7G�7G�7I��
��#'������D�K�K�'�'�)�*r!N)rrr�__version__rLr`rdrqr r!rrrGs��"�[�0�N�#�J�+r!rc��ddlm}|�}td|��t|��t|j	��}|D]\}}t|dt|�|���|ddg�|j
�jd�gS)	Nr)�StringIOzHello world!)�file�=z200 OK)zContent-Typeztext/plain; charset=utf-8zutf-8)�iort�print�sortedrW�repr�getvalue�encode)�environ�start_responsert�stdout�hr^r_s       rr	r	�sw���
�Z�F�	�.�v�&�	�v���w�}�}���A����!�
�a��D��G�&�)���8�J�K�L��O�O��$�$�W�-�.�.r!c�>�|||f|�}|j|�|S)zACreate a new WSGI server listening on `host` and `port` for `app`)r9)r\�port�app�server_class�
handler_classrIs      rr
r
�s%���4��,�
�
6�F�
�N�N�3���Mr!�__main__r*i@zServing HTTP onr�rz...zhttp://localhost:8000/xyz?abc) r:�http.serverrrrb�urllib.parserO�wsgiref.handlersr�platformrrr�__all__rL�versionr�sys_versionrrrrr	r
r�httpd�socket�getsockname�sarx�
webbrowser�open�handle_requestr r!r�<module>r�s��
�;�
��*�*���
I����,��#�%��+�c�k�k�.?�.?�.A�!�.D�D��!�C�'�+�5��
&�M�
&�'��'�:?+�/�?+�F	/�#-�<N���z��	�R��x�	(�E�
�\�\�
%�
%�
'��
���A����1��u�=���
���7�8�
����
)�	(��	(�	(�s
�AC0�0C9

?>