U
¡ê,a–¸ ã @ sþ d Z dddddgZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZ dd lmZ d
ZdZG dd„ dejƒZG d
d„ dejeƒZG dd„ dejƒZ G dd„ de ƒZ!dd„ Z"da#dd„ Z$dd„ Z%G dd„ de!ƒZ&dd„ Z'e edddfdd„Z(e)dkrúddl*Z*e* +¡ Z,e,j-ddd d! e,j-d"d#d$d%d& e,j-d'd(e .¡ d)d* e,j-d+d,de/d-d.d/ e, 0¡ Z1e1j2rÈe&Z3nee!e1j4d0Z3G d1d2„ d2eƒZ5e(e3e5e1j6e1j7d3 dS )4z0.6Ú
HTTPServerÚThreadingHTTPServerÚBaseHTTPRequestHandlerÚSimpleHTTPRequestHandlerÚCGIHTTPRequestHandleré N)Úpartial)Ú
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 j | ¡ | jd d… \}}t |¡| _|| _d S )Né )ÚsocketserverÚ TCPServerÚserver_bindZserver_addressÚsocketZgetfqdnÚserver_nameÚserver_port)ÚselfÚhostÚport© r ú0/opt/alt/python38/lib64/python3.8/http/server.pyr
ˆ s zHTTPServer.server_bindN)Ú__name__Ú
__module__Ú__qualname__Zallow_reuse_addressr
r r r r r „ s c @ s e Zd ZdZdS )r TN)r r r Zdaemon_threadsr r r r r s c
@ s e Zd Zdej ¡ 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' (¡ D ƒZ)d
S )Dr zPython/r z BaseHTTP/úHTTP/0.9c
C sÔ d | _ | j | _}d| _t| jdƒ}| d¡}|| _| ¡ }t |ƒdkrLdS t |ƒdkr&|d }zT|
d¡srt‚| d d
¡d
}| d¡}t |ƒdkrœt‚t|d ƒt|d
ƒf}W n, tt
fk
râ | tjd
| ¡ Y dS X |dkr | jdkr d| _|dkr | tjd| ¡ dS || _dt |ƒ krBdksZn | tjd| ¡ dS |d d… \}}t |ƒdkržd| _|dkrž| tjd| ¡ dS || | _ | _ztjj| j| jd| _W n‚ tjjk
r } z| tjdt|ƒ¡ W Y ¢dS d }~X Y nB tjjk
rH } z| tjdt|ƒ¡ W Y ¢dS d }~X Y nX | j dd¡} | ¡ dkrnd| _n | ¡ dkrŽ| jdkrŽd| _| j dd¡}
|
¡ dkrÐ| jdkrÐ| jdkrÐ| ¡ sÐdS dS )NTz
iso-8859-1z
r Fé éÿÿÿÿzHTTP/ú/r Ú.r
zBad request version (%r))r r zHTTP/1.1)r
r zInvalid HTTP version (%s)zBad request syntax (%r)ZGETzBad HTTP/0.9 request type (%r))Z_classz
Line too longzToo many headersÚ
ConnectionÚ Úcloseú
keep-aliveZExpectz100-continue) ÚcommandÚdefault_request_versionÚrequest_versionÚclose_connectionÚstrÚraw_requestlineÚrstripÚrequestlineÚsplitÚlenÚ
startswithÚ
ValueErrorÚintÚ
IndexErrorÚ
send_errorr ZBAD_REQUESTÚprotocol_versionZHTTP_VERSION_NOT_SUPPORTEDÚpathÚhttpÚclientZ
parse_headersÚrfileÚMessageClassÚheadersZLineTooLongZREQUEST_HEADER_FIELDS_TOO_LARGEZ
HTTPExceptionÚgetÚlowerÚhandle_expect_100)r Úversionr) ÚwordsZbase_version_numberZversion_numberr" r2 ÚerrZconntypeZexpectr r r Ú
parse_request
s¨
þ
þþ
þ
ÿýýÿÿþ
z$BaseHTTPRequestHandler.parse_requestc C s | tj¡ | ¡ dS ©NT)Úsend_response_onlyr ZCONTINUEÚend_headers©r r r r r: p s z(BaseHTTPRequestHandler.handle_expect_100c
C sî z¬| j d¡| _t| jƒdkrBd| _d| _d| _| tj ¡ W d S | jsTd| _
W d S | ¡ sbW d S d| j }t| |ƒs| tj
d| j ¡ W d S t| |ƒ}|ƒ | j ¡ W n< tjk
rè } z| d|¡ d| _
W Y ¢d S d }~X Y nX d S )Ni i r TZdo_zUnsupported method (%r)zRequest timed out: %r)r5 Úreadliner' r+ r) r$ r" r0 r ZREQUEST_URI_TOO_LONGr% r> ÚhasattrÚNOT_IMPLEMENTEDÚgetattrÚwfileÚflushr ZtimeoutÚ log_error)r ZmnameÚmethodÚer r r Úhandle_one_request‚ s6
þ
z)BaseHTTPRequestHandler.handle_one_requestc C s" d| _ | ¡ | j s| ¡ qd S r? )r% rL rB r r r Úhandle§ s zBaseHTTPRequestHandler.handleNc C s z| j | \}}W n tk
r. d\}}Y nX |d kr<|}|d krH|}| d||¡ | ||¡ | dd¡ d }|dkrâ|tjtjtjfkrâ| j |t
j|ddt
j|dddœ }| d d
¡}| d| j
¡ | dtt|ƒƒ¡ | ¡ | jd
kr|r| j |¡ d S )N)ú???rN zcode %d, message %sr r éÈ F©Úquote)ÚcodeÚmessageÚexplainzUTF-8ÚreplacezContent-TypeúContent-LengthZHEAD)Ú responsesÚKeyErrorrI Ú
send_responseÚsend_headerr Z
NO_CONTENTZ
RESET_CONTENTÚNOT_MODIFIEDÚerror_message_formatÚhtmlÚescapeÚencodeÚerror_content_typer&