Viewing File: /opt/alt/python35/lib64/python3.5/http/__pycache__/server.cpython-35.opt-2.pyc



]ҫ@s\dZddddgZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZdZd	Zd
dZGdddejZGd
ddejZGdddeZddZdaddZddZGdddeZ eedddddZ!e"dkrXej#Z$e$j%ddddd e$j%d!d"d#dd$d%dd&e$j%d'dd(d#dd)e&d*d+dd,e$j'Z(e(j)r3e Z*neZ*e!d-e*d'e(j+d.e(j,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-8cCs(|jddjddjddS)N&z&amp;<z&lt;>z&gt;)replace)htmlr+/opt/alt/python35/lib64/python3.5/server.py_quote_htmlsrc@s"eZdZdZddZdS)rcCsNtjj||jjdd\}}tj||_||_dS)N)socketserver	TCPServerserver_bindsocketgetsocknamegetfqdnserver_nameserver_port)selfhostportrrr
rszHTTPServer.server_bindN)__name__
__module____qualname__Zallow_reuse_addressrrrrr
rsc
@seZdZdejjdZdeZe	Z
eZdZ
ddZddZd	d
ZddZd
d
ddZd
ddZd
ddZddZddZddZddddZddZdd Zd!d"Zd
d#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)?rzPython/rz	BaseHTTP/zHTTP/0.9cCsyd|_|j|_}d|_t|jd}|jd}||_|j}t	|dkr|\}}}|dddkr|j
tjd|dSya|jd	d
d
}|jd}t	|dkrt
t|d
t|d
f}Wn3t
tfk
r@|j
tjd|dSYnX|dkre|jdkred|_|dkr|j
tjd|dSnvt	|dkr|\}}d|_|dkr|j
tjd|dSn%|sdS|j
tjd|dS||||_|_|_y%tjj|jd|j|_Wnytjjk
rx|j
tjddSYnKtjjk
r}z%|j
tjdt|dSWYdd}~XnX|jjdd}	|	jdkrd|_n*|	jdkr |jdkr d|_|jjdd}
|
jdkru|jdkru|jdkru|jsudSdS)NTz
iso-8859-1z
zHTTP/zBad request version (%r)F/r.rrzHTTP/1.1zInvalid HTTP Version (%s)GETzBad 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
send_errorrZBAD_REQUEST
ValueErrorint
IndexErrorprotocol_versionZHTTP_VERSION_NOT_SUPPORTEDpathhttpclientZ
parse_headersrfileMessageClassheadersZLineTooLongZ
HTTPExceptionZREQUEST_HEADER_FIELDS_TOO_LARGEgetlowerhandle_expect_100)rversionr.wordsr'r6Zbase_version_numberZversion_numbererrZconntypeexpectrrr

parse_request	s			$			
	z$BaseHTTPRequestHandler.parse_requestcCs|jtj|jdS)NT)send_response_onlyrZCONTINUEend_headers)rrrr
r>ks
z(BaseHTTPRequestHandler.handle_expect_100cCs,y|jjd|_t|jdkr\d|_d|_d|_|jtj	dS|jsrd|_
dS|jsdSd|j}t||s|jtj
d|jdSt||}||jjWnEtjk
r'}z"|jd|d|_
dSWYdd}~XnXdS)Niir%TZdo_zUnsupported method (%r)zRequest timed out: %r)r9readliner,r0r.r)r'r1rZREQUEST_URI_TOO_LONGr*rChasattrNOT_IMPLEMENTEDgetattrwfileflushrtimeout	log_error)rZmnamemethoderrr
handle_one_request}s4					
	z)BaseHTTPRequestHandler.handle_one_requestcCs1d|_|jx|js,|jqWdS)NT)r*rP)rrrr
handles	
zBaseHTTPRequestHandler.handleNcCs^y|j|\}}Wntk
r7d\}}YnX|dkrJ|}|dkr\|}|jd|||j|||jddd}|dkr+|tjtjtjfkr+|j	d|dt
|dt
|i}|jd	d
}|jd|j|jdt
t||j|jd
krZ|rZ|jj|dS)N???zcode %d, message %sr$r&codemessageexplainzUTF-8r
zContent-TypezContent-LengthZHEAD)rRrR)	responsesKeyErrorrM
send_responsesend_headerrZ
NO_CONTENTZ
RESET_CONTENTZNOT_MODIFIEDerror_message_formatrencodeerror_content_typer3r0rEr'rJwrite)rrTrUrVZshortmsgZlongmsgZbodyZcontentrrr
r1s4
	
z!BaseHTTPRequestHandler.send_errorcCsM|j||j|||jd|j|jd|jdS)NZServerZDate)log_requestrDrZversion_stringdate_time_string)rrTrUrrr
rYs
z$BaseHTTPRequestHandler.send_responsecCs|dkr5||jkr/|j|d}nd}|jdkrt|ds\g|_|jjd|j||fjdddS)Nrr%zHTTP/0.9_headers_bufferz
%s %d %s
zlatin-1strict)rWr)rGrbappendr5r\)rrTrUrrr
rDs	z)BaseHTTPRequestHandler.send_response_onlycCs|jdkrMt|ds'g|_|jjd||fjdd|jdkr|jdkr}d|_n|jd	krd
|_dS)NzHTTP/0.9rbz%s: %s
zlatin-1rc
connectionr&Tz
keep-aliveF)r)rGrbrdr\r=r*)rkeywordvaluerrr
rZs		z"BaseHTTPRequestHandler.send_headercCs-|jdkr)|jjd|jdS)NzHTTP/0.9s
)r)rbrd
flush_headers)rrrr
rEsz"BaseHTTPRequestHandler.end_headerscCs8t|dr4|jjdj|jg|_dS)Nrb)rGrJr^joinrb)rrrr
rhsz$BaseHTTPRequestHandler.flush_headers-cCsAt|tr|j}|jd|jt|t|dS)Nz
"%s" %s %s)
isinstancerrglog_messager.r+)rrTsizerrr
r_s		z"BaseHTTPRequestHandler.log_requestcGs|j||dS)N)rm)rformatargsrrr
rMsz BaseHTTPRequestHandler.log_errorcGs1tjjd|j|j||fdS)Nz%s - - [%s] %s
)sysstderrr^address_stringlog_date_time_string)rrorprrr
rm,s		z"BaseHTTPRequestHandler.log_messagecCs|jd|jS)N )server_versionsys_version)rrrr
r`Bsz%BaseHTTPRequestHandler.version_stringc	Css|dkrtj}tj|\	}}}}}}}}	}
d|j|||j|||||f}|S)Nz#%s, %02d %3s %4d %02d:%02d:%02d GMT)timegmtimeweekdayname	monthname)rZ	timestampyearmonthdayhhmmssZwdyzsrrr
raFs*
z'BaseHTTPRequestHandler.date_time_stringc	Cs]tj}tj|\	}}}}}}}}	}
d||j|||||f}|S)Nz%02d/%3s/%04d %02d:%02d:%02d)rx	localtimer{)rZnowr|r}r~rrrxrrrrrr
rtQs
* z+BaseHTTPRequestHandler.log_date_time_stringZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs|jdS)Nr)client_address)rrrr
rs_sz%BaseHTTPRequestHandler.address_stringzHTTP/1.0cCs%i|]}|j|jf|qSr)phrasedescription).0vrrr

<dictcomp>ns	z!BaseHTTPRequestHandler.<dictcomp>)*rrrrqr?r/rw__version__rvDEFAULT_ERROR_MESSAGEr[DEFAULT_ERROR_CONTENT_TYPEr]r(rCr>rPrQr1rYrDrZrErhr_rMrmr`rartrzr{rsr5r7r8ZHTTPMessager:r__members__valuesrWrrrr
rs<i
b%5
		c	@seZdZdeZddZddZddZdd	Zd
dZ	dd
Z
ddZej
s}ejejjZejddddddddidS)rzSimpleHTTP/c
Cs;|j}|r7z|j||jWd|jXdS)N)	send_headcopyfilerJr&)rfrrr
do_GETs
zSimpleHTTPRequestHandler.do_GETcCs |j}|r|jdS)N)rr&)rrrrr
do_HEADsz SimpleHTTPRequestHandler.do_HEADc	Cs|j|j}d}tjj|r
tjj|j}|jjds|jt	j
|d|d|dd|d|df}tjj|}|jd||j
dSxIdD]4}tjj||}tjj|r|}PqW|j|S|j|}yt|d
}Wn)tk
rW|jt	jddSYnXy}|jt	j|jd|tj|j}|jd
t|d|jd|j|j|j
|SWn|jYnXdS)Nr!rrrrZLocation
index.html	index.htmrbzFile not foundzContent-typezContent-Lengthz
Last-Modified)rr)translate_pathr6osisdirurllibparseZurlsplitendswithrYrZMOVED_PERMANENTLYZ
urlunsplitrZrErjexistslist_directory
guess_typeopenOSErrorr1	NOT_FOUNDOKfstatfilenor+rast_mtimer&)	rr6rpartsZ	new_partsZnew_urlindexZctypefsrrr
rsF



	

z"SimpleHTTPRequestHandler.send_headc
Cs`ytj|}Wn)tk
r>|jtjddSYnX|jdddg}ytjj	|j
dd}Wn$tk
rtjj	|}YnXtj
|}tj}d|}|jd|jd	|jd
||jd||jd||jd
x|D]}tj
j||}|}	}
tj
j|rr|d}	|d}
tj
j|r|d}	|jdtjj|
ddtj
|	fq'W|jddj|j|d}tj}|j||jd|jtj|jdd||jdtt||j|S)NzNo permission to list directorykeycSs
|jS)N)r=)arrr
<lambda>sz9SimpleHTTPRequestHandler.list_directory.<locals>.<lambda>errors
surrogatepasszDirectory 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) rlistdirrr1rrsortrrunquoter6UnicodeDecodeErrorrescaperqgetfilesystemencodingrdrjrislinkquoter\ioBytesIOr^seekrYrrZr+r0rE)
rr6listrZdisplaypathenctitlenamefullnameZdisplaynameZlinknameencodedrrrr
rs\
	




	





	



z'SimpleHTTPRequestHandler.list_directorycCs$|jddd}|jddd}|jjd}ytjj|dd}Wn$tk
rtjj|}YnXtj|}|jd}t	d|}t
j}xP|D]H}t
jj
|s|t
jt
jfkrqt
jj||}qW|r |d7}|S)N?rr#r!rr)r/r-rrrrr	posixpathnormpathfilterrgetcwdr6dirnamecurdirpardirrj)rr6Ztrailing_slashr@Zwordrrr
rs$	

*
z'SimpleHTTPRequestHandler.translate_pathcCstj||dS)N)shutilcopyfileobj)rsourceZ
outputfilerrr
rsz!SimpleHTTPRequestHandler.copyfilecCsdtj|\}}||jkr/|j|S|j}||jkrU|j|S|jdSdS)Nr%)rsplitextextensions_mapr=)rr6baseextrrr
r+sz#SimpleHTTPRequestHandler.guess_typer%zapplication/octet-streamz.pyz
text/plainz.cz.hN)rrrrrvrrrrrrr	mimetypesZinitedZinitZ	types_mapcopyrupdaterrrr
rts 
	1:	
c	Cs+|jd\}}}tjj|}|jd}g}xP|ddD]>}|dkro|jqP|rP|dkrP|j|qPW|r|j}|r|dkr|jd}q|dkrd}nd}|rdj||f}ddj||f}dj|}|S)Nrr!rz..r"r%)	partitionrrrr/poprdrj)	r6_query
path_partsZ
head_partspartZ	tail_partZ	splitpathcollapsed_pathrrr
_url_collapse_pathPs.

		rcCstr
tSyddl}Wntk
r2dSYnXy|jddaWn5tk
rdtdd|jDaYnXtS)Nrrnobodyrcss|]}|dVqdS)rNr)rrrrr
	<genexpr>sznobody_uid.<locals>.<genexpr>r)rpwdImportErrorgetpwnamrXmaxgetpwall)rrrr

nobody_uids
	
(rcCstj|tjS)N)raccessX_OK)r6rrr

executablesrc@syeZdZeedZdZddZddZddZ	d	d
gZ
ddZd
dZddZ
dS)rforkrcCs0|jr|jn|jtjddS)NzCan only POST to CGI scripts)is_cgirun_cgir1rrH)rrrr
do_POSTs

zCGIHTTPRequestHandler.do_POSTcCs'|jr|jStj|SdS)N)rrrr)rrrr
rs
zCGIHTTPRequestHandler.send_headcCslt|j}|jdd}|d|||dd}}||jkrh||f|_dSdS)Nr!rTF)rr6findcgi_directoriescgi_info)rrZdir_sepheadtailrrr
rs%zCGIHTTPRequestHandler.is_cgiz/cgi-binz/htbincCs
t|S)N)r)rr6rrr

is_executablesz#CGIHTTPRequestHandler.is_executablecCs(tjj|\}}|jdkS)N.py.pyw)rr)rr6rr=)rr6rrrrr
	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|sl|j	t
jd|dStjj|s|j	t
j
d|dS|j|}
|js|
r|j|s|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
rfYn0X|j!d}t|dkr|d|d<|jj ddkr|jj*|d<n|jd|d<|jj d}|r||d<|jj d }|r||d!<g}xc|jj+d"D]O}|ddd#krd|j,|j-q2||d$dj!d%}q2Wd%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|krr|j,|t6}|j7j8tj9}|dkrtj:|d\}}x9t;j;|j<gggddr|j<j=dsPqW|r
|j>d1|dSyoytj?|Wnt@k
r6YnXtjA|j<jBdtjA|j7jBdtjC|||Wq|jjD|jE|jtjFd2YqXnddlG} |g}!|j|r!tHjI}"|"j$jJd3r|"dd@|"dAd}"|"d6g|!}!d0|	kr:|!j,|	|jKd7| jL|!ytM|}#WntNtOfk
rd}#YnX| jP|!d8| jQd9| jQd:| jQd;|}$|jj$d<kr|#dkr|j<j=|#}%nd}%x?t;j;|j<jRgggddr1|j<jRjSdsPqW|$jT|%\}&}'|j7jU|&|'rm|j>d=|'|$jVjW|$jXjW|$jY}(|(r|j>d1|(n
|jKd>dS)BNr!rrrr%zNo 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+ru=zCGI script exit status %#xzw.exer rz-uzcommand: %sstdinstdoutrrenvZpostz%szCGI script exited OK)rr	rrrr)Zrrr0rrr6rrrr1rrisfileZ	FORBIDDENr	have_forkrrdeepcopyenvironr`Zserverrr5r+rr'rrrrr;r<r/base64binasciir=r\ZdecodebytesdecodeErrorUnicodeErrorZget_content_typeZgetallmatchingheadersrdstriprjrZget_all
setdefaultrYrrhr
rrJrKrwaitpidselectr9readrMsetuidrdup2rexecveZhandle_errorZrequest_exit
subprocessrqrrrmlist2cmdliner3	TypeErrorr2PopenPIPE_sockrecvcommunicater^rrr&r
returncode))rdirrestr6iZnextdirZnextrestZ	scriptdirrrZscriptZ
scriptnameZ
scriptfileZispyrZuqrestrrrlengthrrlineZuacoZ
cookie_strkZ
decoded_queryrprpidstsr$ZcmdlineZinterpnbytespdatarrrstatusrrr
rs4
$









!



		
	
%
		
				!(

	zCGIHTTPRequestHandler.run_cgiN)rrrrGrrZrbufsizerrrrrrrrrrr
rszHTTP/1.0i@r%cCs||f}||_|||}|jj}td|dd|ddy|jWn3tk
rtd|jtjdYnXdS)NzServing HTTP onrrrz...z&
Keyboard interrupt received, exiting.)	r5rrprintZ
serve_foreverKeyboardInterruptZserver_closerqexit)HandlerClassZServerClassprotocolrbindZserver_addressZhttpdsarrr
tests	


rA__main__z--cgiaction
store_truehelpzRun as CGI Serverz--bindz-bdefaultmetavarZADDRESSz8Specify alternate bind address [default: all interfaces]rstoretypenargsrz&Specify alternate port [default: 8000]r=r?)-r__all__rZhttp.clientr7rrrrrrrrrqrxZurllib.parserrargparserrrrrrZStreamRequestHandlerrrrrrrrrArArgumentParserparseradd_argumentr3
parse_argsrpZcgiZ
handler_classrr?rrrr
<module>Ss`0
		
Back to Directory File Manager