a XC?h3�@s.ddlmZmZddlZddlZddlmZddlm Z dZ gd�Z de Z e �dej ��dZe d eZGd d �d e�ZGd d �d e�ZGdd�de�Zdd�Zeefdd�Zedk�r*edde��LZej��Zededdedd�ddlZe�d�e��Wd�n1�s 0YdS)�)�BaseHTTPRequestHandler� HTTPServerN)� SimpleHandler)�python_implementationz0.2)� WSGIServer�WSGIRequestHandler�demo_app� make_server� WSGIServer/�/� c@seZdZeZdd�ZdS)� ServerHandlerc Cs>z,|j�|j�dd�d|j�Wt�|�n t�|�0dS)Nr �r)�request_handlerZ log_requestZstatus�splitZ bytes_sentr�close��self�r�:/opt/alt/python39/lib64/python3.9/wsgiref/simple_server.pyr s �zServerHandler.closeN)�__name__� __module__� __qualname__�software_versionZserver_softwarerrrrrr sr c@s0eZdZdZdd�Zdd�Zdd�Zdd �ZdS) rNcCst�|�|��dS�N)r� server_bind� setup_environrrrrr0s zWSGIServer.server_bindcCsFi}|_|j|d<d|d<t|j�|d<d|d<d|d<d|d<dS) NZ SERVER_NAMEzCGI/1.1ZGATEWAY_INTERFACEZ SERVER_PORT�� REMOTE_HOST�CONTENT_LENGTHZ SCRIPT_NAME)� base_environZ server_name�strZ server_port)r�envrrrr5s  zWSGIServer.setup_environcCs|jSr�� applicationrrrr�get_app?szWSGIServer.get_appcCs ||_dSrr#)rr$rrr�set_appBszWSGIServer.set_app)rrrr$rrr%r&rrrrr*s  rc@s,eZdZdeZdd�Zdd�Zdd�ZdS) rr cCsP|jj��}|j|d<|j|d<|j|d<d|jvrH|j�dd�\}}n |jd}}tj � |d�|d<||d <|� �}||j d kr�||d <|j d |d <|j �d �dur�|j ��|d<n|j d |d<|j �d�}|r�||d<|j ��D]`\}}|�dd���}|��}||v�rq�d||v�r>|d|d|7<q�||d|<q�|S)NZSERVER_PROTOCOLZSERVER_SOFTWAREZREQUEST_METHOD�?rrz iso-8859-1Z PATH_INFOZ QUERY_STRINGrrZ REMOTE_ADDRz content-typeZ CONTENT_TYPEzcontent-lengthr�-�_ZHTTP_�,)�serverr �copy�request_version�server_version�command�pathr�urllib�parseZunquoteZaddress_stringZclient_addressZheaders�getZget_content_type�items�replace�upper�strip)rr"r0Zquery�hostZlength�k�vrrr� get_environKs6        zWSGIRequestHandler.get_environcCstjSr)�sys�stderrrrrr� get_stderrpszWSGIRequestHandler.get_stderrcCs�|j�d�|_t|j�dkrr;r�runr+r%)rZhandlerrrr�handless �zWSGIRequestHandler.handleN)rrr� __version__r.r;r>rBrrrrrGs%rcCsrddlm}|�}td|d�t|d�t|���}|D]\}}t|dt|�|d�q8|ddg�|���d�gS) Nr)�StringIOz Hello world!)�file�=z200 OK)z Content-Typeztext/plain; charset=utf-8zutf-8)�iorD�print�sortedr4�repr�getvalue�encode)�environZstart_responserD�stdout�hr9r:rrrr�s      rcCs|||f|�}|�|�|Sr)r&)r8�portZappZ server_classZ handler_classr+rrrr �s r �__main__ri@zServing HTTP onrPrz...zhttp://localhost:8000/xyz?abc)Z http.serverrrr<Z urllib.parser1Zwsgiref.handlersr�platformrrC�__all__r.�versionr� sys_versionrr rrrr rZhttpdZsocketZ getsocknameZsarHZ webbrowser�openZhandle_requestrrrr� s,   C �