Your IP : 216.73.216.137
�
�/�g_���x� dZgd�ZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZdZdZGd�dej��ZGd �d
eje��ZGd�dej��ZGd
�de��Zd�Z da!d�Z"d�Z#Gd�de��Z$d�Z%eedddfd�Z&e'dkr�ddl(Z(ddl)Z)e(j*��Z+e+�,ddd���e+�,dddd �!��e+�,d"d#ej-��d$�%��e+�,d&d'd(dd)�*��e+�,d+de.d,d-�.��e+�/��Z0e0j1re$Z2neZ2Gd/�d0e��Z3e&e2e3e0j4e0j5e0j6�1��dSdS)2z0.6)�
HTTPServer�ThreadingHTTPServer�BaseHTTPRequestHandler�SimpleHTTPRequestHandler�CGIHTTPRequestHandler�N)�
HTTPStatusaD<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code: %(code)d</p>
<p>Message: %(message)s.</p>
<p>Error code explanation: %(code)s - %(explain)s.</p>
</body>
</html>
ztext/html;charset=utf-8c��eZdZdZd�ZdS)r�c�� tj�|��|jdd�\}}t j|��|_||_dS)N�)�socketserver� TCPServer�server_bind�server_address�socket�getfqdn�server_name�server_port)�self�host�ports �2/opt/alt/python311/lib64/python3.11/http/server.pyrzHTTPServer.server_bind�sQ��<���*�*�4�0�0�0��(��!��,�
��d�!�>�$�/�/��������N)�__name__�
__module__�__qualname__�allow_reuse_addressr�rrrr�s)�������� � � � � rrc��eZdZdZdS)rTN)rrr�daemon_threadsrrrrr�s�������N�N�Nrrc
���eZdZ dej���dzZdezZe Z
eZdZ
d�Zd�Zd�Zd�Zd"d
�Zd#d�Zd#d�Zd
�Zd�Zd�Zd$d�Zd�Ze�d�ejed��edd����D����Zdee d��<d�Z!d�Z"d#d�Z#d�Z$gd�Z%gd�Z&d�Z'd Z(e)j*j+Z,d!�e-j.�/��D��Z0d S)%rzPython/rz BaseHTTP/�HTTP/0.9c��� d|_|jx|_}d|_t |jd��}|�d��}||_|���}t|��dkrdSt|��dk�rp|d} |�
d��st�|�d d
��d
}|�d��}t|��dkrt�td
�|D����rtd���td�|D����rtd���t|d��t|d
��f}n;#ttf$r'|�t jd|z��YdSwxYw|dkr|jdkrd|_|dkr%|�t jd|z��dS||_dt|��cxkrdks'n|�t jd|z��dS|dd�\}}t|��dkr2d|_|dkr%|�t jd|z��dS||c|_|_|j�
d��r"d |j�d ��z|_ t,j�|j|j���|_n�#t,jj$r9}|�t jdt |����Yd}~dSd}~wt,jj$r9}|�t jdt |����Yd}~dSd}~wwxYw|j�dd��} | � ��dkrd|_n*| � ��d kr|jdkrd|_|j�d!d��}
|
� ��d"kr,|jdkr!|jdkr|�!��sdSdS)#NTz
iso-8859-1�
rF����zHTTP/�/r
�.rc3�@K�|]}|���V��dS�N)�isdigit��.0� components r� <genexpr>z7BaseHTTPRequestHandler.parse_request.<locals>.<genexpr>/s1����O�O�9�9�,�,�.�.�.�O�O�O�O�O�Orznon digit in http versionc3�<K�|]}t|��dkV��dS)�
N)�lenr,s rr/z7BaseHTTPRequestHandler.parse_request.<locals>.<genexpr>1s-����K�K�y�s�9�~�~��*�K�K�K�K�K�Krz unreasonable length http versionzBad request version (%r))r
r
zHTTP/1.1)rrzInvalid HTTP version (%s)zBad request syntax (%r)�GETzBad HTTP/0.9 request type (%r)z//)�_classz
Line too longzToo many headers�
Connection��close�
keep-alive�Expectz100-continue)"�command�default_request_version�request_version�close_connection�str�raw_requestline�rstrip�requestline�splitr2�
startswith�
ValueError�any�int�
IndexError�
send_errorr�BAD_REQUEST�protocol_version�HTTP_VERSION_NOT_SUPPORTED�path�lstrip�http�client�
parse_headers�rfile�MessageClass�headers�LineTooLong�REQUEST_HEADER_FIELDS_TOO_LARGE�
HTTPException�get�lower�handle_expect_100)r�versionrA�words�base_version_number�version_numberr:rL�err�conntype�expects r�
parse_requestz$BaseHTTPRequestHandler.parse_requests��� ����)-�)E�E���w� $����$�.��=�=��!�(�(��0�0��&����!�!�#�#���u�:�:��?�?��5��u�:�:��?�?��B�i�G�
��)�)�'�2�2�%�$�$�&-�m�m�C��&;�&;�A�&>�#�!4�!:�!:�3�!?�!?���~�&�&�!�+�+�$�$��O�O��O�O�O�O�O�B�$�%@�A�A�A��K�K�N�K�K�K�K�K�I�$�%G�H�H�H�!$�^�A�%6�!7�!7��^�A�=N�9O�9O�!O�����
�+�
�
�
�����*�.��8�:�:�:��u�u�
����
��'�'�D�,A�Z�,O�,O�(-��%���'�'�����9�/�2E�E�G�G�G��u�#*�D� ��C��J�J�#�#�#�#�!�#�#�#�#��O�O��&�)�K�7�
9�
9�
9��5��b�q�b� �
����u�:�:��?�?�$(�D�!��%�������*�4�w�>�@�@�@��u�")�4����d�i��9����%�%� 4��d�i�.�.�s�3�3�3�D�I� ��;�4�4�T�Z�<@�<M�5�O�O�D�L�L���{�&� � � ��O�O��:���C���
�
�
��5�5�5�5�5������{�(� � � ��O�O��:�"��C���
�
�
�
�5�5�5�5�5�����
�����<�#�#�L�"�5�5���>�>���w�&�&�$(�D�!�!��n�n���,�.�.��#�z�1�1�$)�D�!���!�!�(�B�/�/���L�L�N�N�n�,�,��%��3�3��$�
�2�2��)�)�+�+�
��u��ts7�C!E7�74F/�.F/�0L�N$� .M�N$�+.N�N$c�n� |�tj��|���dS�NT)�send_response_onlyr�CONTINUE�end_headers�rs rrYz(BaseHTTPRequestHandler.handle_expect_100ys7�� �
���
� 3�4�4�4��������trc�� |j�d��|_t|j��dkr6d|_d|_d|_|�tj ��dS|js d|_
dS|���sdSd|jz}t||��s*|�tj
d|jz��dSt||��}|��|j���dS#t"$r(}|�d|��d|_
Yd}~dSd}~wwxYw)Niir6T�do_zUnsupported method (%r)zRequest timed out: %r)rQ�readliner?r2rAr<r:rHr�REQUEST_URI_TOO_LONGr=ra�hasattr�NOT_IMPLEMENTED�getattr�wfile�flush�TimeoutError� log_error)r�mname�method�es r�handle_one_requestz)BaseHTTPRequestHandler.handle_one_request�sd�� � �#'�:�#6�#6�u�#=�#=�D� ��4�'�(�(�5�0�0�#%�� �')��$�!������
� ?�@�@�@����'�
�(,��%����%�%�'�'�
����D�L�(�E��4��'�'�
�����.�-���<�>�>�>����T�5�)�)�F��F�H�H�H��J���������� � � ��N�N�2�A�6�6�6�$(�D�!��F�F�F�F�F����� ���s1�A+D�0D�D�AD�3D�
E�D<�<Ec�� d|_|���|js|���|j�dSdSrc)r=rvrgs r�handlezBaseHTTPRequestHandler.handle�s]��4� $������!�!�!��'� &��#�#�%�%�%��'� &� &� &� &� &rNc��� |j|\}}n#t$rd\}}YnwxYw|�|}|�|}|�d||��|�||��|�dd��d}|dkr�|t
jt
jt
jfvr�|j |tj|d���tj|d���d�z}|�d d
��}|�d|j
��|�dtt|������|���|jd
kr|r|j�|��dSdSdS)N)�???rzzcode %d, message %sr5r7��F��quote)�code�message�explainzUTF-8�replacezContent-Type�Content-Length�HEAD)� responses�KeyErrorrr�
send_response�send_headerr�
NO_CONTENT�
RESET_CONTENT�NOT_MODIFIED�error_message_format�html�escape�encode�error_content_typer>r2rfr:ro�write)rr~rr��shortmsg�longmsg�body�contents rrHz!BaseHTTPRequestHandler.send_error�s��� �" -� $��t� 4��H�g�g��� -� -� -� ,��H�g�g�g� -�����?��G��?��G����,�d�G�<�<�<����4��)�)�)�����w�/�/�/�
���C�K�K���.�#�1�#�0�2�
2�
2�
�0���;�w�e�<�<�<��;�w�e�<�<�<�4�4��G�
�>�>�'�9�5�5�D����^�T�-D�E�E�E����-�s�3�t�9�9�~�~�>�>�>��������<�6�!�!�d�!��J���T�"�"�"�"�"�"�!�!�!s��&�&c�� |�|��|�||��|�d|�����|�d|�����dS)N�Server�Date)�log_requestrdr��version_string�date_time_string�rr~rs rr�z$BaseHTTPRequestHandler.send_response�s}�� �
�����������g�.�.�.�����4�#6�#6�#8�#8�9�9�9������!6�!6�!8�!8�9�9�9�9�9rc�� |jdkrs|�||jvr|j|d}nd}t|d��sg|_|j�d|j||fz�dd����dSdS)Nr"rr6�_headers_bufferz
%s %d %s
�latin-1�strict)r<r�rlr��appendrJr�r�s rrdz)BaseHTTPRequestHandler.send_response_only�s���,���:�-�-����4�>�)�)�"�n�T�2�1�5�G�G� �G��4�!2�3�3�
*�')��$�� �'�'���*�D�'�:�*;�<B�F�!�8�=-�=-�
.�
.�
.�
.�
.�.�-rc�l� |jdkrKt|d��sg|_|j�|�d|�d��dd����|���dkrB|���dkr d |_dS|���d
krd|_dSdSdS)Nr"r�z: r$r�r��
connectionr7Tr8F)r<rlr�r�r�rXr=)r�keyword�values rr�z"BaseHTTPRequestHandler.send_headers���7���:�-�-��4�!2�3�3�
*�')��$�� �'�'�!(���%�%�%�0�8�8��H�M�M�
O�
O�
O��=�=�?�?�l�*�*��{�{�}�}��'�'�(,��%�%�%������,�.�.�(-��%�%�%� +�*�/�.rc�~� |jdkr0|j�d��|���dSdS)Nr"s
)r<r�r��
flush_headersrgs rrfz"BaseHTTPRequestHandler.end_headerssJ��:���:�-�-�� �'�'��0�0�0���� � � � � �.�-rc��t|d��r;|j�d�|j����g|_dSdS)Nr�r)rlror��joinr�rgs rr�z$BaseHTTPRequestHandler.flush_headerssR���4�*�+�+� &��J���S�X�X�d�&:�;�;�<�<�<�#%�D� � � � &� &r�-c�� t|t��r|j}|�d|jt|��t|����dS)Nz
"%s" %s %s)�
isinstancerr��log_messagerAr>)rr~�sizes rr�z"BaseHTTPRequestHandler.log_request!sa�� �
�d�J�'�'� ��:�D������)�3�t�9�9�c�$�i�i� A� A� A� A� Arc�$� |j|g|�R�dSr*)r�)r�format�argss rrrz BaseHTTPRequestHandler.log_error,s*�� � ����'�$�'�'�'�'�'�'rc��i|] }|d|d����
S)z\x�02xr)r-�cs r�
<dictcomp>z!BaseHTTPRequestHandler.<dictcomp><s"��V�V�V�!�Q�
�a�
�
�
�V�V�Vr� ��z\\�\c ��� ||z}tj�|����d|����d|�|j���d���dS)Nz - - [z] �
)�sys�stderrr��address_string�log_date_time_string� translate�_control_char_table)rr�r�rs rr�z"BaseHTTPRequestHandler.log_message?s��� �&�4�-���
����-�-�/�/�/�/��3�3�5�5�5�5�!�+�+�D�,D�E�E�E�E�G� H� H� H� H� Hrc�(� |jdz|jzS)N� )�server_version�sys_versionrgs rr�z%BaseHTTPRequestHandler.version_stringYs��8��"�S�(�4�+;�;�;rc�p� |�tj��}tj�|d���S)NT)�usegmt)�time�email�utils�
formatdate)r� timestamps rr�z'BaseHTTPRequestHandler.date_time_string]s1��N���� ���I��{�%�%�i��%�=�=�=rc �� tj��}tj|��\ }}}}}}}} }
d||j|||||fz}|S)Nz%02d/%3s/%04d %02d:%02d:%02d)r�� localtime� monthname)r�now�year�month�day�hh�mm�ss�x�y�z�ss rr�z+BaseHTTPRequestHandler.log_date_time_stringcsZ��<��i�k�k��04��s�0C�0C�-��e�S�"�b�"�a��A�*��T�^�E�*�D�"�b�"�.>�
>���r)�Mon�Tue�Wed�Thu�Fri�Sat�Sun)
N�Jan�Feb�Mar�Apr�May�Jun�Jul�Aug�Sep�Oct�Nov�Decc�� |jdS�Nr)�client_addressrgs rr�z%BaseHTTPRequestHandler.address_stringqs��(��"�1�%�%r�HTTP/1.0c�,�i|]}||j|jf��Sr)�phrase�description)r-�vs rr�z!BaseHTTPRequestHandler.<dictcomp>�s3�����
�
�A�H�a�m�$���r)NNr*)r�r�)1rrrr�rZrBr��__version__r��DEFAULT_ERROR_MESSAGEr��DEFAULT_ERROR_CONTENT_TYPEr�r;rarYrvrxrHr�rdr�rfr�r�rrr>� maketrans� itertools�chain�ranger��ordr�r�r�r��weekdaynamer�r�rJrNrO�HTTPMessagerRr�__members__�valuesr�rrrrr�s7������d�N�c�k�/�/�1�1�!�4�4�K�
!�;�.�N�0��3��)��l�l�l�\���$#�#�#�J&�&�&�3#�3#�3#�3#�j:�:�:�:�.�.�.�.�.�.�.�!�!�!�&�&�&�
A� A� A� A�(�(�(��-�-�V�V��y��u�u�T�{�{�E�E�$�t�DT�DT�'U�'U�V�V�V�X�X��%*����D� � �"�H�H�H�4<�<�<�>�>�>�>����D�C�C�K�;�;�;�I�&�&�&�"���;�*�L����'�.�.�0�0����I�I�Irrc�l��eZdZ dezZddddd�xZZdd��fd �
Zd
�Zd�Z d�Z
d
�Zd�Zd�Z
d�Z�xZS)rzSimpleHTTP/zapplication/gzip�application/octet-streamzapplication/x-bzip2zapplication/x-xz)z.gzz.Zz.bz2z.xzN�� directoryc���|�tj��}tj|��|_t ��j|i|��dSr*)�os�getcwd�fspathr�super�__init__)rrr��kwargs� __class__s �rr
z!SimpleHTTPRequestHandler.__init__�sG������ ���I���9�-�-��������$�)�&�)�)�)�)�)rc��� |���}|rK |�||j��|���dS#|���wxYwdSr*)� send_head�copyfileror7�r�fs r�do_GETzSimpleHTTPRequestHandler.do_GET�sd��"��N�N����� �
��
�
�a���,�,�,���� � � � � ����� � � � ���� � s�A
�
A c�`� |���}|r|���dSdSr*)rr7rs r�do_HEADz SimpleHTTPRequestHandler.do_HEAD�s7��#��N�N����� �
�G�G�I�I�I�I�I� � rc�f� |�|j��}d}tj�|���rCtj�|j��}|j�d��s�|�tj
��|d|d|ddz|d|df}tj�|��}|�d|��|�dd ��|�
��dSd
D]E}tj�||��}tj�|��r|}n�F|�|��S|�|��}|�d��r"|�tjd��dS t)|d��}n1#t*$r$|�tjd��YdSwxYw tj|�����}d
|jv�r6d|jv�r, t2j�|jd
��} | j�%| �t<jj ���} | jt<jj ur�t<j�!|j"t<jj ��}
|
�d���}
|
| krI|�tj#��|�
��|�$��dSn##tJtLtNtPf$rYnwxYw|�tj)��|�d|��|�dtU|d����|�d|�+|j"����|�
��|S#|�$���xYw)Nr'rr
rr%��Locationr��0)z
index.htmlz index.htmzFile not found�rbzIf-Modified-Sincez
If-None-Match)�tzinfo)�microsecond�Content-type�z
Last-Modified),�translate_pathrLr�isdir�urllib�parse�urlsplit�endswithr�r�MOVED_PERMANENTLY�
urlunsplitr�rfr��isfile�list_directory�
guess_typerH� NOT_FOUND�open�OSError�fstat�filenorSr�r��parsedate_to_datetimerr��datetime�timezone�utc�
fromtimestamp�st_mtimer�r7� TypeErrorrG�
OverflowErrorrD�OKr>r�)rrLr�parts� new_parts�new_url�index�ctype�fs�ims�
last_modifs rrz"SimpleHTTPRequestHandler.send_head�s��� ��"�"�4�9�-�-����
�7�=�=���� 1��L�)�)�$�)�4�4�E��:�&�&�s�+�+�
��"�"�:�#?�@�@�@�"�1�X�u�Q�x��q��C��"�1�X�u�Q�x�1� � �,�1�1�)�<�<��� � ��W�5�5�5�� � �!1�3�7�7�7�� � �"�"�"��t�2�
1�
1������T�5�1�1���7�>�>�%�(�(�� �D��E���*�*�4�0�0�0�����%�%���=�=���� ��O�O�J�0�2B�C�C�C��4� ��T�4� � �A�A��� � � ��O�O�J�0�2B�C�C�C��4�4� ����' ���!�(�(�*�*�%�%�B�#�t�|�3�3�'�t�|�;�;�(��+�;�;���%8�9�;�;�C��z�)�"�k�k��1B�1F�k�G�G���z�X�%6�%:�:�:�%-�%6�%D�%D��K��):�)>�&@�&@�
�&0�%7�%7�A�%7�%F�%F�
�%��,�,� �.�.�z�/F�G�G�G� �,�,�.�.�.��G�G�I�I�I�#'�4���'"�:�}�j�I�����D�����*
���z�}�-�-�-����^�U�3�3�3����-�s�2�a�5�z�z�:�:�:����_��%�%�b�k�2�2�
4�
4�
4��������H�� �
�G�G�I�I�I����sJ�G�*H
�H
�:P�*M�6CP�P�M4�1P�3M4�4B$P�P0c
�� tj|��}n1#t$r$|�tjd��YdSwxYw|�d����g} tj� |j
d���}n4#t$r'tj� |j
��}YnwxYwtj
|d���}tj��}d|��}|�d ��|�d
��|�d��|�d|�d
���|�d|�d���|�d|�d���|�d��|D]�}tj
�||��}|x} }
tj
�|��r
|dz} |dz}
tj
�|��r|dz} |�dtj�|
d����d
tj
| d����d�����|�d��d�|���|d��}t-j��}|�|��|�d��|�tj��|�dd|z��|�dt;t=|������|���|S)NzNo permission to list directoryc�*�|���Sr*)rX)�as r�<lambda>z9SimpleHTTPRequestHandler.list_directory.<locals>.<lambda>s����� � �r)�key�
surrogatepass��errorsFr|zDirectory listing for z<!DOCTYPE HTML>z<html lang="en">z<head>z<meta charset="z">z<title>z</title>
</head>z<body>
<h1>z</h1>z <hr>
<ul>r'�@z
<li><a href="z </a></li>z</ul>
<hr>
</body>
</html>
r��surrogateescaperrztext/html; charset=%sr�) r�listdirr+rHrr)�sortr r!�unquoterL�UnicodeDecodeErrorr�r�r��getfilesystemencodingr�r�r�islinkr}r��io�BytesIOr��seekr�r6r�r>r2rf)
rrL�list�r�displaypath�enc�title�name�fullname�displayname�linkname�encodedrs
rr'z'SimpleHTTPRequestHandler.list_directorys_�� � ��:�d�#�#�D�D��� � � ��O�O��$�1�
3�
3�
3��4�4� ����
� � �)�)� �*�*�*��� :� �,�.�.�t�y�6E�/�G�G�K�K��!� :� :� :� �,�.�.�t�y�9�9�K�K�K� :�����k�+�U�;�;�;���'�)�)��6��6�6�� ���"�#�#�#� ���#�$�$�$� ������� ���*�3�*�*�*�+�+�+� ���3�5�3�3�3�4�4�4� ���,��,�,�,�-�-�-� ��������
?�
?�D��w�|�|�D�$�/�/�H�%)�)�K�(��w�}�}�X�&�&�
&�"�S�j���#�:���w�~�~�h�'�'�
)�"�S�j��
�H�H�H��|�)�)�(�1@�*�B�B�B�B��{�;�e�<�<�<�<�<�>�
?�
?�
?�
?�
���2�3�3�3��)�)�A�,�,�%�%�c�+<�=�=���J�L�L�� ������� ���q� � � ����:�=�)�)�)�����)@�3�)F�G�G�G����)�3�s�7�|�|�+<�+<�=�=�=��������s!��*A�A�#&B
�
.B;�:B;c�� |�dd��d}|�dd��d}|����d��} tj�|d���}n/#t$r"tj�|��}YnwxYwtj|��}|�d��}td|��}|j
}|D]\}tj�
|��s|tjtjfvr�<tj�||��}�]|r|dz
}|S)N�?r
r�#r'rDrE)rBr@r#r r!rKrL� posixpath�normpath�filterrrrL�dirname�curdir�pardirr�)rrL�trailing_slashr[�words rrz'SimpleHTTPRequestHandler.translate_pathAsF�� ��z�z�#�a� � ��#���z�z�#�a� � ��#�������/�/��4�4�� .��<�'�'��_�'�E�E�D�D��!� .� .� .��<�'�'��-�-�D�D�D� .�����!�$�'�'���
�
�3�����t�U�#�#���~��� ,� ,�D��w���t�$�$�
����B�I�0F�(F�(F���7�<�<��d�+�+�D�D�� ��C�K�D��s�"!B�)B0�/B0c�2� tj||��dSr*)�shutil�copyfileobj)r�source�
outputfiles rrz!SimpleHTTPRequestHandler.copyfile_s"�� � ��6�:�.�.�.�.�.rc��� tj|��\}}||jvr
|j|S|���}||jvr
|j|St j|��\}}|r|SdS)Nr)r_�splitext�extensions_maprX� mimetypesr()rrL�base�ext�guess�_s rr(z#SimpleHTTPRequestHandler.guess_typeos��� ��&�t�,�,� ��c��$�%�%�%��&�s�+�+��i�i�k�k���$�%�%�%��&�s�+�+��'��-�-���q�� ��L�)�)r)rrrr�r�rn�_encodings_map_defaultr
rrrr'rrr(�
__classcell__�rs@rrr�s�������� �#�[�0�N�!�(�%�!� /�/��N�+�)-�*�*�*�*�*�*�*�������V�V�V�p7�7�7�r���</�/�/� *�*�*�*�*�*�*rrc�@� |�d��\}}}tj�|��}|�d��}g}|dd�D]:}|dkr|����|r|dkr|�|���;|r<|���}|r%|dkr|���d}n|dkrd}nd}|rd�||f��}dd�|��z|f}d�|��}|S)Nr]r'r&z..r(r6)� partitionr r!rKrB�popr�r�) rLrs�query�
path_parts�
head_parts�part� tail_part� splitpath�collapsed_paths r�_url_collapse_pathr��sJ����^�^�C�(�(�N�D�!�U��<����%�%�D����C���J��J��3�B�3��&�&���4�<�<��N�N�����
� &�d�c�k�k����t�%�%�%��� ��N�N�$�$� �� ��D� � ���� � � �� � ��c�!�!�� ��� ��1��H�H�i��/�0�0� ��s�x�x�
�+�+�+�Y�7�I��X�X�i�(�(�N��rc�� trtS ddl}n#t$rYdSwxYw |�d��dan>#t$r1dtd�|���D����zaYnwxYwtS)Nrr&�nobodyrr
c3�&K�|]}|dV��
dS)rNr)r-r�s rr/znobody_uid.<locals>.<genexpr>�s&����6�6�!��1��6�6�6�6�6�6r)r��pwd�ImportError�getpwnamr��max�getpwall)r�s r�
nobody_uidr��s���.�
���
���
�
�
�
�������r�r�����7����h�'�'��*�����7�7�7��S�6�6�s�|�|�~�~�6�6�6�6�6�6����7�����Ms��
$�$�A�8A?�>A?c�B� tj|tj��Sr*)r�access�X_OK)rLs r�
executabler��s��#�
�9�T�2�7�#�#�#rc�X�eZdZ eed��ZdZd�Zd�Zd�Z ddgZ
d�Zd �Zd
�Z
dS)r�forkrc�� |���r|���dS|�tjd��dS)NzCan only POST to CGI scripts)�is_cgi�run_cgirHrrmrgs r�do_POSTzCGIHTTPRequestHandler.do_POST�sS�� ��;�;�=�=� 0��L�L�N�N�N�N�N��O�O��*�.�
0�
0�
0�
0�
0rc�� |���r|���St�|��Sr*)r�r�rrrgs rrzCGIHTTPRequestHandler.send_head�s7��;��;�;�=�=� <��<�<�>�>�!�+�5�5�d�;�;�;rc�:� t|j��}|�dd��}|dkrA|d|�|jvr0|�d|dz��}|dkr|d|�|jv�0|dkr"|d|�||dzd�}}||f|_dSdS)Nr'r
rTF)r�rL�find�cgi_directories�cgi_info)rr��dir_sep�head�tails rr�zCGIHTTPRequestHandler.is_cgi�s���
�,�D�I�6�6�� �%�%�c�1�-�-����k�k�.��'��":�d�>R�"R�"R�$�)�)�#�w�q�y�9�9�G���k�k�.��'��":�d�>R�"R�"R��Q�;�;�'����1�>�'�!�)�*�*�3M�$�D� �$�J�D�M��4��urz/cgi-binz/htbinc�"� t|��Sr*)r�)rrLs r�
is_executablez#CGIHTTPRequestHandler.is_executables��?��$���rc�t� tj�|��\}}|���dvS)N)z.pyz.pyw)rrLrmrX)rrLr�r�s r� is_pythonzCGIHTTPRequestHandler.is_pythons1��<��W�%�%�d�+�+�
��d��z�z�|�|��.�.rc�R� |j\}}|dz|z}|�dt|��dz��}|dkr}|d|�}||dzd�}|�|��}tj�|��r+||}}|�dt|��dz��}nn|dk�}|�d��\}}} |�d��}|dkr|d|�||d�}}
n|d}}
|dz|
z}|�|��}tj�|��s%|� tjd|z��dStj�|��s%|� tj
d|z��dS|�|��}
|js|
s:|�|��s%|� tj
d|z��dSt#jtj��}|���|d <|jj|d
<d|d<|j|d
<t1|jj��|d<|j|d<t6j�|��}||d<|�|��|d<||d<| |d<|jd|d<|j� d��}|r�|�!��}t|��dkr�ddl"}ddl#}|d|d<|d�$��dkr� |d�%d��}|�&|���'d��}|�!d��}t|��dkr|d|d<n#|j(tRf$rYnwxYw|j� d���|j�*��|d<n|jd|d<|j� d��}|r||d<|j� d ��}|r||d!<|j�+d"d#��}d$�,|��|d%<|j� d&��}|r||d'<t[d|j�+d(g����}d)�,|��}|r||d*<d+D]}|�.|d���|�/tj0d,��|�1��| �2d-d.��}|j�r�|
g}d/|vr|�3|��ti��}|j5�6��t j7��}|dkr�t j8|d��\}}tsj9|j:gggd��dr>|j:�;d��sn#tsj9|j:gggd��d�>t j<|��}|r|�=d0|����dS t j>|��n#t~$rYnwxYwt j@|j:�A��d��t j@|j5�A��d��t jB|||��dS#|j�C|jD|j��t jEd1��YdSxYwddlF} |g}!|�|��rOt�jH}"|"�$���Id2��r|"dd3�|"d4d�z}"|"d5g|!z}!d/| vr|!�3| ��|�Jd6| �K|!���� t�|��}#n#t�t�f$rd}#YnwxYw| �O|!| jP| jP| jP|�7��}$|j�$��d8kr!|#dkr|j:�;|#��}%nd}%tsj9|j:jQgggd��drH|j:jQ�Rd��sn(tsj9|j:jQgggd��d�H|$�S|%��\}&}'|j5�T|&��|'r|�=d9|'��|$jU�V��|$jW�V��|$jX}(|(r|�=d:|(��dS|�Jd;��dS)<Nr'r
rr]r6zNo such CGI script (%r)z#CGI script is not a plain file (%r)z!CGI script is not executable (%r)�SERVER_SOFTWARE�SERVER_NAMEzCGI/1.1�GATEWAY_INTERFACE�SERVER_PROTOCOL�SERVER_PORT�REQUEST_METHOD� PATH_INFO�PATH_TRANSLATED�SCRIPT_NAME�QUERY_STRING�REMOTE_ADDR�
authorizationr� AUTH_TYPE�basic�ascii�:�REMOTE_USERzcontent-type�CONTENT_TYPEzcontent-length�CONTENT_LENGTH�referer�HTTP_REFERER�acceptr�,�HTTP_ACCEPTz
user-agent�HTTP_USER_AGENT�cookiez, �HTTP_COOKIE)r��REMOTE_HOSTr�r�r�r�zScript output follows�+r��=zCGI script exit code r�zw.exe������z-uzcommand: %s)�stdin�stdoutr��env�postz%szCGI script exit status %#xzCGI script exited OK)Yr�r�r2rrrLrrx�existsrHrr)r&� FORBIDDENr�� have_forkr��copy�deepcopy�environr��serverrrJr>rr:r r!rKr�rSrWrB�base64�binasciirXr��decodebytes�decode�Error�UnicodeError�get_content_type�get_allr�ra�
setdefaultr�r6r�r�r�r�rorpr��waitpid�selectrQ�read�waitstatus_to_exitcoderr�setuidr+�dup2r-�execve�handle_error�request�_exit�
subprocessr�r�r#r��list2cmdlinerFr4rD�Popen�PIPE�_sock�recv�communicater�r�r7r��
returncode))r�dir�restrL�i�nextdir�nextrest� scriptdirrsrz�script�
scriptname�
scriptfile�ispyr��uqrestr�r�r��lengthr�r��ua�co�
cookie_str�k�
decoded_queryr�r��pid�sts�exitcoder��cmdline�interp�nbytes�p�datar�r��statuss) rr�zCGIHTTPRequestHandler.run_cgis
��#��M� ��T��S�y�4����I�I�c�3�s�8�8�A�:�&�&���1�f�f��2�A�2�h�G��A�a�C�D�D�z�H��+�+�G�4�4�I��w�}�}�Y�'�'�
�#�X�T���I�I�c�3�s�8�8�A�:�.�.�����1�f�f�����,�,���a��
�I�I�c�N�N����6�6�����8�T�!�"�"�X�D�F�F���D�F��3�Y��'�
��(�(��4�4�
��w�~�~�j�)�)� ��O�O��$�)�J�6�
8�
8�
8�
�F��w�~�~�j�)�)� ��O�O��$�5�
�B�
D�
D�
D�
�F��~�~�j�)�)���>� �� ��%�%�j�1�1�
�����(�7�*�D�F�F�F����m�B�J�'�'��!%�!4�!4�!6�!6����!�[�4��M��#,��� �!%�!6���� ���!8�9�9��M�� $�������%�%�d�+�+��!��K��!%�!4�!4�V�!<�!<����'��M��#��N��!�0��3��M����(�(��9�9�
�� B�)�/�/�1�1�M��=�!�!�Q�&�&�'�'�'�'�'�'�'�'�#0��#3��K� � ��#�)�)�+�+�w�6�6� B�(5�a�(8�(?�(?��(H�(H�
�(.�(:�(:�=�(I�(I�(.��w���&�
)6�(;�(;�C�(@�(@�
��}�-�-��2�2�1>�q�1A�C�
�.���%�N�L�9�����������<���N�+�+�3�"&�,�"?�"?�"A�"A�C����"&�,�~�">�C�����!�!�"2�3�3��� +�$*�C� �!��,�"�"�9�-�-��� *�")�C�����%�%�h��3�3�� �X�X�f�-�-��M��
�\�
�
�l�
+�
+��
� (�%'�C�!�"�
�D�$�,�.�.�x��<�<�
=�
=���Y�Y�r�]�]�
�� ,�!+�C�
��D� "� "�A��N�N�1�b�!�!�!�!����:�=�*A�B�B�B��������
�
�c�3�/�/�
��>�I 9��8�D��-�'�'����M�*�*�*��\�\�F��J�������'�)�)�C��a�x�x��:�c�1�-�-���S��m�T�Z�L�"�b�!�<�<�Q�?���:�?�?�1�-�-����m�T�Z�L�"�b�!�<�<�Q�?���4�S�9�9���G��N�N�#E�8�#E�#E�F�F�F���
���I�f�%�%�%�%�������D��������
�)�)�+�+�Q�/�/�/����
�)�)�+�+�Q�/�/�/�� �*�d�C�0�0�0�0�0��
���(�(���t�7J�K�K�K����
�
�
�
�
�
����
����!�l�G��~�~�j�)�)�
3�����<�<�>�>�*�*�7�3�3�7�#�C�R�C�[�6�"�#�#�;�6�F�!�4�.�7�2���%������u�%�%�%����]�J�,C�,C�G�,L�,L�M�M�M�
��V�������z�*�
�
�
�����
����� � ��'1��(2��(2��'*� !�#�#�A��|�!�!�#�#�v�-�-�&�1�*�*��z���v�.�.������-���!1� 2�B��A�>�>�q�A�
��z�'�,�,�Q�/�/����-���!1� 2�B��A�>�>�q�A�
��]�]�4�0�0�N�F�F��J���V�$�$�$��
-����t�V�,�,�,�
�H�N�N����
�H�N�N�����\�F��
9����;�V�D�D�D�D�D�� � �!7�8�8�8�8�8sP�AO�O�O�/Z�\�
Z�\�Z�A1\�;]�3`�`�`N)rrrrlrr��rbufsizer�rr�r�r�r�r�rrrrr�s�����������F�#�#�I��H�0�0�0�<�<�<����4"�8�,�O� � � �/�/�/�
x9�x9�x9�x9�x9rrc��tj|tjtjd��}t t|����\}}}}}||fS)N)�type�flags)r�getaddrinfo�SOCK_STREAM�
AI_PASSIVE�next�iter)�address�infos�familyr�proto� canonname�sockaddrs r�_get_best_familyr�sS���� �
�
���
�
�
�E�
04�D��K�K�/@�/@�,�F�D�%��H��8��rr�i@c�� t||��\|_}||_|||��5}|j���dd�\}}d|vrd|�d�n|}td|�d|�d|�d|�d� �� |���n3#t$r&td ��tj d
��YnwxYwddd��dS#1swxYwYdS)Nrr��[�]zServing HTTP on z port z (http://z/) ...z&
Keyboard interrupt received, exiting.r)
r�address_familyrJr�getsockname�print�
serve_forever�KeyboardInterruptr��exit) �HandlerClass�ServerClass�protocolr�bind�addr�httpdr�url_hosts r�testr"�sw���
(8��d�'C�'C�$�K���$,�L�!� ��T�<� (� (��E��\�-�-�/�/����3�
��d�"%��+�+�;�t�;�;�;�;�4��
�
/�t�
/�
/�4�
/�
/��
/�
/�"&�
/�
/�
/�
�
�
� ����!�!�!�!�� � � � ��;�<�<�<��H�Q�K�K�K�K�K� ������������������������s6�A
C�;B�C�-C�=C�?C�C�C�C�__main__z--cgi�
store_truezrun as CGI server)�action�helpz-bz--bind�ADDRESSz.bind to this address (default: all interfaces))�metavarr&z-dz--directoryz1serve this directory (default: current directory))�defaultr&z-pz
--protocol�VERSIONz3conform to this HTTP version (default: %(default)s))r(r)r&rr]z(bind to this port (default: %(default)s))r)r�nargsr&c�$��eZdZ�fd�Zd�Z�xZS)�DualStackServerc���tjt��5|j�tjtjd��ddd��n#1swxYwYt�����Sr�) �
contextlib�suppress� Exceptionr�
setsockopt�IPPROTO_IPV6�IPV6_V6ONLYr r)rrs �rrzDualStackServer.server_binds�����$�Y�/�/�
@�
@���&�&��'��);�Q�@�@�@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@��7�7�&�&�(�(�(s�1A�A�Ac�L�|�|||tj���dS)Nr)�RequestHandlerClassr�r)rr�r�s r�finish_requestzDualStackServer.finish_requests4���$�$�W�n�d�/3�~�
%�
?�
?�
?�
?�
?r)rrrrr7rurvs@rr-r-sG������� )� )� )� )� )� ?� ?� ?� ?� ?� ?� ?rr-)rrrrr)7r��__all__r�r/�email.utilsr�r��http.clientrNrOr�rorr_r�rhrr
r�r��urllib.parser rr�r�rr�ThreadingMixInr�StreamRequestHandlerrrr�r�r�r�rrr"r�argparser/�ArgumentParser�parser�add_argumentrrF�
parse_argsr��cgi�
handler_classr-rrrrrr�<module>rEs����d������
�������������������� � � � ��������� � � � �����
�
�
�
�
�
�
�
�
�
�
�
�����
�
�
�
����������������� 7�� � � � � ��'� � � ������,�5�z����q�q�q�q�q�\�>�q�q�q�h@*�@*�@*�@*�@*�5�@*�@*�@*�J,�,�,�`
��
�
�
� $�$�$�
C9�C9�C9�C9�C9�4�C9�C9�C9�L���-�(��4�d�����.�z����O�O�O�����
$�X�
$�
&�
&�F�
�����0��2�2�2�
����h� �9��:�:�:�����m�Y�R�Y�[�[�<��=�=�=�����l�I� *�6��7�7�7������3�c�6��7�7�7������D��x�1�-�
�
�0�
�?�?�?�?�?�-�?�?�?� �D�"�#�
�Y�
�Y���������Q�r
?>