3
öLÖjª¬ ã @ s” d Z ddddgZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZ dZd ZG d
d„ dejƒZG dd„ dejƒZG dd„ deƒZd
d„ Zdadd„ Zdd„ Z G dd„ deƒZ!eedddfdd„Z"e#dk�r�ej$ƒ Z%e%j&dddd� e%j&dddd d!d"� e%j&d#d$de'd%d&d'� e%j(ƒ Z)e)j*�rze!Z+neZ+e"e+e)j,e)j-d(� dS ))z0.6Ú
HTTPServerÚBaseHTTPRequestHandlerÚSimpleHTTPRequestHandlerÚCGIHTTPRequestHandleré N)Ú
HTTPStatusa¹
Error response
Error response
Error code: %(code)d
Message: %(message)s.
Error code explanation: %(code)s - %(explain)s.
ztext/html;charset=utf-8c @ s e Zd ZdZdd„ ZdS )r é c C s4 t jj| ƒ | jd d… \}}tj|ƒ| _|| _d S )Né )ÚsocketserverÚ TCPServerÚserver_bindÚserver_addressÚsocketZgetfqdnÚserver_nameÚserver_port)ÚselfÚhostÚport© r ú#/usr/lib64/python3.6/http/server.pyr † s zHTTPServer.server_bindN)Ú__name__Ú
__module__Ú__qualname__Zallow_reuse_addressr r r r r r ‚ s c
@ s e Zd Zdejjƒ d Zde Ze Z
eZdZ
dd„ Zdd„ Zd d
„ Zdd„ Zd?dd„Zd@dd„ZdAdd„Zdd„ Zdd„ Zdd„ ZdBdd„Zdd„ Zdd „ Zd!d"„ ZdCd#d$„Zd%d&„ Zd'd(d)d*d+d,d-gZd
d.d/d0d1d2d3d4d5d6d7d8d9g
Zd:d;„ Z d„ e&j'j(ƒ D ƒZ)d
S )Dr zPython/r z BaseHTTP/zHTTP/0.9c C sÀ d | _ | j | _}d| _t| jdƒ}|jdƒ}|| _|jƒ }t |ƒdk�r|\}}}yZ|d d… dkrjt
‚|jddƒd }|jd ƒ}t |ƒd
kr”t
‚t|d ƒt|d ƒf}W n* t
tfk
rØ | j
tjd| ƒ d
S X |dkrò| jdkròd
| _|dk�rr| j
tjd| ƒ d
S n^t |ƒd
k�rR|\}}d| _|dk�rr| j
tjd| ƒ d
S n |�s\d
S | j
tjd| ƒ d
S ||| | _ | _| _| jjdƒ�r¨d| jjdƒ | _ytjj| j| jd�| _W nr tjjk
�rü } z| j
tjdt|ƒƒ d
S d }~X n: tjjk
�r4 } z| j
tjdt|ƒƒ d
S d }~X nX | jjddƒ} | jƒ dk�rZd| _n | jƒ dk�rz| jdk�rzd
| _| jjddƒ}
|
jƒ dk�r¼| jdk�r¼| jdk�r¼| j ƒ �s¼d
S dS )NTz
iso-8859-1z
é é zHTTP/ú/r Ú.r r zBad request version (%r)FzHTTP/1.1zInvalid HTTP version (%s)ZGETzBad HTTP/0.9 request type (%r)zBad request syntax (%r)z//)Z_classz
Line too longzToo many headersÚ
ConnectionÚ Úclosez
keep-aliveZExpectz100-continue)r r )r r )!ÚcommandÚdefault_request_versionÚrequest_versionÚclose_connectionÚstrÚraw_requestlineÚrstripÚrequestlineÚsplitÚlenÚ
ValueErrorÚintÚ
IndexErrorÚ
send_errorr ZBAD_REQUESTÚprotocol_versionZHTTP_VERSION_NOT_SUPPORTEDÚpathÚ
startswithÚlstripÚhttpÚclientZ
parse_headersÚrfileÚMessageClassÚheadersZLineTooLongZREQUEST_HEADER_FIELDS_TOO_LARGEZ
HTTPExceptionÚgetÚlowerÚhandle_expect_100)r Úversionr&