MINI MINI MANI MO

Path : /lib64/python3.6/http/__pycache__/
File Upload :
Current File : //lib64/python3.6/http/__pycache__/server.cpython-36.opt-2.pyc

3


 \@sdZddddgZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZdZd	ZGd
ddejZGdddejZGdddeZd
dZdaddZddZ GdddeZ!eedddfddZ"e#dkrej$Z%e%j&dddde%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
HTTPServerBaseHTTPRequestHandlerSimpleHTTPRequestHandlerCGIHTTPRequestHandlerN)
HTTPStatusa<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;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@seZdZdZddZdS)rcCs4tjj||jdd\}}tj||_||_dS)N)socketserver	TCPServerserver_bindserver_addresssocketZgetfqdnserver_nameserver_port)selfhostportr#/usr/lib64/python3.6/http/server.pyrszHTTPServer.server_bindN)__name__
__module____qualname__Zallow_reuse_addressrrrrrrsc
@seZdZdejjdZdeZe	Z
eZdZ
ddZddZd	d
ZddZd?ddZd@ddZdAddZddZddZddZdBddZddZdd Zd!d"ZdCd#d$Zd%d&Zd'd(d)d*d+d,d-gZd
d.d/d0d1d2d3d4d5d6d7d8d9g
Zd:d;Z d<Z!e"j#j$Z%d=d>e&j'j(DZ)d
S)DrzPython/rz	BaseHTTP/zHTTP/0.9cCsd|_|j|_}d|_t|jd}|jd}||_|j}t	|dkr|\}}}yZ|dddkrjt
|jddd}|jd	}t	|d
krt
t|dt|df}Wn*t
tfk
r|j
tjd|d
SX|dkr|jdkrd
|_|dkrr|j
tjd|d
Sn^t	|d
krR|\}}d|_|dkrr|j
tjd|d
Sn |s\d
S|j
tjd|d
S||||_|_|_ytjj|j|jd|_Wnrtjjk
r}z|j
tjdt|d
Sd}~Xn:tjjk
r}z|j
tjdt|d
Sd}~XnX|jjdd}	|	jdkr:d|_n |	jdkrZ|jdkrZd
|_|jjdd}
|
jdkr|jdkr|jdkr|jsd
SdS)NTz
iso-8859-1z
zHTTP//r.rrzBad request version (%r)FzHTTP/1.1zInvalid HTTP version (%s)ZGETzBad HTTP/0.9 request type (%r)zBad request syntax (%r))Z_classz
Line too longzToo many headers
Connectionclosez
keep-aliveZExpectz100-continue)rr)rr)commanddefault_request_versionrequest_versionclose_connectionstrraw_requestlinerstriprequestlinesplitlen
ValueErrorint
IndexError
send_errorrZBAD_REQUESTprotocol_versionZHTTP_VERSION_NOT_SUPPORTEDpathhttpclientZ
parse_headersrfileMessageClassheadersZLineTooLongZREQUEST_HEADER_FIELDS_TOO_LARGEZ
HTTPExceptiongetlowerhandle_expect_100)rversionr&wordsrr.Zbase_version_numberZversion_numbererrZconntypeZexpectrrr
parse_requests












z$BaseHTTPRequestHandler.parse_requestcCs|jtj|jdS)NT)send_response_onlyrZCONTINUEend_headers)rrrrr6gsz(BaseHTTPRequestHandler.handle_expect_100cCsy|jjd|_t|jdkr@d|_d|_d|_|jtj	dS|jsPd|_
dS|js\dSd|j}t||s|jtj
d|jdSt||}||jjWn4tjk
r}z|jd|d|_
dSd}~XnXdS)NiirTZdo_zUnsupported method (%r)zRequest timed out: %r)r1readliner$r(r&r!rr,rZREQUEST_URI_TOO_LONGr"r:hasattrNOT_IMPLEMENTEDgetattrwfileflushr
Ztimeout	log_error)rZmnamemethoderrrhandle_one_requestys4


z)BaseHTTPRequestHandler.handle_one_requestcCs&d|_|jx|js |jqWdS)NT)r"rF)rrrrhandleszBaseHTTPRequestHandler.handleNcCs
y|j|\}}Wntk
r.d\}}YnX|dkr<|}|dkrH|}|jd|||j|||jddd}|dkr|tjtjtjfkr|j	|t
j|ddt
j|ddd}|jd	d
}|jd|j
|jdtt||j|jd
ko|r|jj|dS)N???zcode %d, message %srrF)quote)codemessageexplainzUTF-8replacezContent-TypezContent-LengthZHEAD)rHrH)	responsesKeyErrorrC
send_responsesend_headerrZ
NO_CONTENTZ
RESET_CONTENTZNOT_MODIFIEDerror_message_formathtmlescapeencodeerror_content_typer#r(r<rrAwrite)rrKrLrMZshortmsgZlongmsgZbodyZcontentrrrr,s4
z!BaseHTTPRequestHandler.send_errorcCs:|j||j|||jd|j|jd|jdS)NZServerZDate)log_requestr;rRversion_stringdate_time_string)rrKrLrrrrQs
z$BaseHTTPRequestHandler.send_responsecCsd|jdkr`|dkr0||jkr,|j|d}nd}t|ds@g|_|jjd|j||fjdddS)NzHTTP/0.9rr_headers_bufferz
%s %d %s
zlatin-1strict)r!rOr>r\appendr-rV)rrKrLrrrr;s


z)BaseHTTPRequestHandler.send_response_onlycCsl|jdkr6t|dsg|_|jjd||fjdd|jdkrh|jdkrVd|_n|jd	krhd
|_dS)NzHTTP/0.9r\z%s: %s
zlatin-1r]Z
connectionrTz
keep-aliveF)r!r>r\r^rVr5r")rkeywordvaluerrrrRs

z"BaseHTTPRequestHandler.send_headercCs"|jdkr|jjd|jdS)NzHTTP/0.9s
)r!r\r^
flush_headers)rrrrr<s
z"BaseHTTPRequestHandler.end_headerscCs(t|dr$|jjdj|jg|_dS)Nr\)r>rArXjoinr\)rrrrra
s
z$BaseHTTPRequestHandler.flush_headers-cCs.t|tr|j}|jd|jt|t|dS)Nz
"%s" %s %s)
isinstancerr`log_messager&r#)rrKsizerrrrYs
z"BaseHTTPRequestHandler.log_requestcGs|j|f|dS)N)rf)rformatargsrrrrCsz BaseHTTPRequestHandler.log_errorcGs&tjjd|j|j||fdS)Nz%s - - [%s] %s
)sysstderrrXaddress_stringlog_date_time_string)rrhrirrrrf(sz"BaseHTTPRequestHandler.log_messagecCs|jd|jS)N )server_versionsys_version)rrrrrZ>sz%BaseHTTPRequestHandler.version_stringcCs |dkrtj}tjj|ddS)NT)Zusegmt)timeemailZutilsZ
formatdate)rZ	timestamprrrr[Bsz'BaseHTTPRequestHandler.date_time_stringc	CsBtj}tj|\	}}}}}}}}	}
d||j|||||f}|S)Nz%02d/%3s/%04d %02d:%02d:%02d)rqZ	localtime	monthname)rZnowZyearZmonthZdayZhhZmmZssxyzsrrrrmHs
z+BaseHTTPRequestHandler.log_date_time_stringZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs
|jdS)Nr)client_address)rrrrrlVsz%BaseHTTPRequestHandler.address_stringzHTTP/1.0cCsi|]}|j|jf|qSr)phraseZdescription).0vrrr
<dictcomp>esz!BaseHTTPRequestHandler.<dictcomp>)NN)N)N)rdrd)N)*rrrrjr7r'rp__version__roDEFAULT_ERROR_MESSAGErSDEFAULT_ERROR_CONTENT_TYPErWr r:r6rFrGr,rQr;rRr<rarYrCrfrZr[rmZweekdaynamersrlr-r/r0ZHTTPMessager2r__members__valuesrOrrrrrs<i`%
5



	c@sxeZdZdeZddZddZddZdd	Zd
dZ	dd
Z
ddZej
sVejejjZejddddddS)rzSimpleHTTP/c
Cs.|j}|r*z|j||jWd|jXdS)N)	send_headcopyfilerAr)rfrrrdo_GETzs
zSimpleHTTPRequestHandler.do_GETcCs|j}|r|jdS)N)rr)rrrrrdo_HEADsz SimpleHTTPRequestHandler.do_HEADc	Csx|j|j}d}tjj|rtjj|j}|jjds|jt	j
|d|d|dd|d|df}tjj|}|jd||j
dSx6dD]$}tjj||}tjj|r|}PqW|j|S|j|}yt|d
}Wn$tk
r|jt	jddSXyZ|jt	j|jd|tj|j}|jd
t|d|jd|j|j|j
|S|jYnXdS)NrrrrrZLocation
index.html	index.htmrbzFile not foundzContent-typezContent-Lengthz
Last-Modified)rr)translate_pathr.osisdirurllibparseZurlsplitendswithrQrZMOVED_PERMANENTLYZ
urlunsplitrRr<rcexistslist_directory
guess_typeopenOSErrorr,	NOT_FOUNDOKfstatfilenor#r[st_mtimer)	rr.rpartsZ	new_partsZnew_urlindexZctypeZfsrrrrsF


z"SimpleHTTPRequestHandler.send_headc
Csytj|}Wn"tk
r0|jtjddSX|jdddg}ytjj	|j
dd}Wn tk
r|tjj	|}YnXtj
|dd}tj}d	|}|jd
|jd|jd||jd
||jd||jdx~|D]v}tj
j||}|}	}
tj
j|r"|d}	|d}
tj
j|r8|d}	|jdtjj|
ddtj
|	ddfqW|jddj|j|d}tj}|j||jd|jtj|jdd||jdtt||j|S)NzNo permission to list directorycSs|jS)N)r5)arrr<lambda>sz9SimpleHTTPRequestHandler.list_directory.<locals>.<lambda>)key
surrogatepass)errorsF)rJzDirectory listing for %szZ<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">z
<html>
<head>z@<meta http-equiv="Content-Type" content="text/html; charset=%s">z<title>%s</title>
</head>z<body>
<h1>%s</h1>z	<hr>
<ul>r@z<li><a href="%s">%s</a></li>z</ul>
<hr>
</body>
</html>

surrogateescaperzContent-typeztext/html; charset=%szContent-Length) rlistdirrr,rrsortrrunquoter.UnicodeDecodeErrorrTrUrjgetfilesystemencodingr^rcrislinkrJrVioBytesIOrXseekrQrrRr#r(r<)
rr.listrZdisplaypathenctitlenamefullnameZdisplaynameZlinknameZencodedrrrrrs\







z'SimpleHTTPRequestHandler.list_directorycCs|jddd}|jddd}|jjd}ytjj|dd}Wn tk
rbtjj|}YnXtj|}|jd}t	d|}t
j}x8|D]0}t
jj
|s|t
jt
jfkrqt
jj||}qW|r|d7}|S)N?rr#rr)r)r'r%rrrrr	posixpathnormpathfilterrgetcwdr.dirnamecurdirpardirrc)rr.Ztrailing_slashr8Zwordrrrrs$	



z'SimpleHTTPRequestHandler.translate_pathcCstj||dS)N)shutilZcopyfileobj)rsourceZ
outputfilerrrrsz!SimpleHTTPRequestHandler.copyfilecCsLtj|\}}||jkr"|j|S|j}||jkr>|j|S|jdSdS)Nr)rsplitextextensions_mapr5)rr.baseZextrrrr"s



z#SimpleHTTPRequestHandler.guess_typezapplication/octet-streamz
text/plain)rz.pyz.cz.hN)rrrr}rorrrrrrr	mimetypesZinitedZinitZ	types_mapcopyrupdaterrrrrks 
	1:
c	Cs|jd\}}}tjj|}|jd}g}x<|ddD],}|dkrN|jq8|r8|dkr8|j|q8W|r|j}|r|dkr|jd}q|dkrd}nd}|rdj||f}ddj||f}dj|}|S)Nrrrz..rr)	partitionrrrr'popr^rc)	r._query
path_partsZ
head_partspartZ	tail_partZ	splitpathcollapsed_pathrrr_url_collapse_pathGs.


rcCsptrtSyddl}Wntk
r(dSXy|jddaWn.tk
rjdtdd|jDaYnXtS)Nrrnobodyrcss|]}|dVqdS)rNr)rzrtrrr	<genexpr>sznobody_uid.<locals>.<genexpr>r)rpwdImportErrorgetpwnamrPmaxZgetpwall)rrrr
nobody_uidys rcCstj|tjS)N)raccessX_OK)r.rrr
executablesrc@sReZdZeedZdZddZddZddZ	d	d
gZ
ddZd
dZddZ
dS)rforkrcCs$|jr|jn|jtjddS)NzCan only POST to CGI scripts)is_cgirun_cgir,rr?)rrrrdo_POSTs

zCGIHTTPRequestHandler.do_POSTcCs|jr|jStj|SdS)N)rrrr)rrrrrszCGIHTTPRequestHandler.send_headcCsPt|j}|jdd}|d|||dd}}||jkrL||f|_dSdS)NrrTF)rr.findcgi_directoriescgi_info)rrZdir_sepheadtailrrrrs


zCGIHTTPRequestHandler.is_cgiz/cgi-binz/htbincCst|S)N)r)rr.rrr
is_executablesz#CGIHTTPRequestHandler.is_executablecCstjj|\}}|jdkS)N.py.pyw)rr)rr.rr5)rr.rrrrr	is_pythonszCGIHTTPRequestHandler.is_pythonc)Cs|j\}}|d|}|jdt|d}x`|dkr|d|}||dd}|j|}tjj|r||}}|jdt|d}q,Pq,W|jd\}}}	|jd}|dkr|d|||d}
}n
|d}
}|d|
}|j|}tjj|s|j	t
jd|dStjj|s2|j	t
j
d|dS|j|}
|jsL|
rn|j|sn|j	t
j
d|dStjtj}|j|d	<|jj|d
<d|d<|j|d
<t|jj|d<|j|d<tjj|}||d<|j||d<||d<|	r|	|d<|jd|d<|jj d}|r|j!}t|dkrddl"}ddl#}|d|d<|dj$dkry"|dj%d}|j&|j'd}Wn|j(t)fk
rYn&X|j!d}t|dkr|d|d<|jj ddkr|jj*|d<n|jd|d<|jj d}|r||d<|jj d }|r"||d!<g}xN|jj+d"D]>}|ddd#krZ|j,|j-n||d$dj!d%}q4Wd%j.||d&<|jj d'}|r||d(<t/d|jj0d)g}d*j.|}|r||d+<xd<D]}|j1|dqW|j2t
j3d-|j4|	j5d.d/}|jr.|
g}d0|kr*|j,|t6}|j7j8tj9}|dkrtj:|d\}}x0t;j;|j<gggddr|j<j=ds^Pq^W|r|j>d1|dSy\ytj?|Wnt@k
rYnXtjA|j<jBdtjA|j7jBdtjC|||Wn(|jjD|jE|jtjFd2YnXnddlG} |g}!|j|rtHjI}"|"j$jJd3rv|"dd=|"d>d}"|"d6g|!}!d0|	kr|!j,|	|jKd7| jL|!ytM|}#WntNtOfk
rd}#YnX| jP|!| jQ| jQ| jQ|d8}$|jj$d9kr|#dkr|j<j=|#}%nd}%x4t;j;|j<jRgggddrN|j<jRjSdsPqW|$jT|%\}&}'|j7jU|&|'r||j>d:|'|$jVjW|$jXjW|$jY}(|(r|j>d1|(n
|jKd;dS)?NrrrrrzNo such CGI script (%r)z#CGI script is not a plain file (%r)z!CGI script is not executable (%r)ZSERVER_SOFTWAREZSERVER_NAMEzCGI/1.1ZGATEWAY_INTERFACEZSERVER_PROTOCOLZSERVER_PORTZREQUEST_METHODZ	PATH_INFOZPATH_TRANSLATEDZSCRIPT_NAMEQUERY_STRINGZREMOTE_ADDR
authorizationrZ	AUTH_TYPEZbasicascii:ZREMOTE_USERzcontent-typeZCONTENT_TYPEzcontent-lengthCONTENT_LENGTHrefererHTTP_REFERERacceptz	

 ,ZHTTP_ACCEPTz
user-agentHTTP_USER_AGENTZcookiez, HTTP_COOKIEREMOTE_HOSTzScript output follows+rn=zCGI script exit status %#xzw.exerrz-uzcommand: %s)stdinstdoutrkenvZpostz%szCGI script exited OK)rrrrrr)Zrrr(rrr.rrrr,rrisfileZ	FORBIDDENr	have_forkrrdeepcopyenvironrZZserverrr-r#rrrrrrxr3r4r'base64binasciir5rVZdecodebytesdecodeErrorUnicodeErrorZget_content_typeZgetallmatchingheadersr^striprcrZget_all
setdefaultrQrrarNrrArBrwaitpidselectr1readrCsetuidrdup2rexecveZhandle_errorZrequest_exit
subprocessrjrrrfZlist2cmdliner*	TypeErrorr)PopenPIPEZ_sockZrecvZcommunicaterXrkrr
returncode))rdirrestr.iZnextdirZnextrestZ	scriptdirrrZscriptZ
scriptnameZ
scriptfileZispyrZuqrestrrrZlengthrrlineZuacoZ
cookie_strkZ
decoded_queryrirpidstsr
ZcmdlineZinterpnbytespdatarrkZstatusrrrrs4

























zCGIHTTPRequestHandler.run_cgiN)rrrr>rrZrbufsizerrrrrrrrrrrrs
zHTTP/1.0i@rc	Cs||f}||_|||b}|jj}d}t|j|d|ddy|jWn&tk
rttdtjdYnXWdQRXdS)Nz>Serving HTTP on {host} port {port} (http://{host}:{port}/) ...rr)rrz&
Keyboard interrupt received, exiting.)	r-r
ZgetsocknameprintrhZ
serve_foreverKeyboardInterruptrjexit)	HandlerClassZServerClassZprotocolrbindrZhttpdZsaZ
serve_messagerrrtests
r"__main__z--cgi
store_truezRun as CGI Server)actionhelpz--bindz-bZADDRESSz8Specify alternate bind address [default: all interfaces])defaultmetavarr&rZstorerz&Specify alternate port [default: 8000])r%r'typenargsr&)r rr!).r}__all__Zemail.utilsrrrTZhttp.clientr/rrrrrrr
r	rjrqZurllib.parserrargparserr~rr
rZStreamRequestHandlerrrrrrrrr"rArgumentParserparseradd_argumentr*
parse_argsriZcgiZ
handler_classrr!rrrr<module>Ssh`]0


OHA YOOOO