[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.191.68.112: ~ $
�
�_c@sFdZdgZddlZddlZddlmZmZmZmZddl	Z	ej
d�Zej
d�Zde
fd��YZd	�Zd
�Zddd��YZd
dd��YZddd��YZdd d��YZdd!d��YZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS("s"
Middleware to check for obedience to the WSGI specification.

Some of the things this checks:

* Signature of the application and start_response (including that
  keyword arguments are not used).

* Environment checks:

  - Environment is a dictionary (and not a subclass).

  - That all the required keys are in the environment: REQUEST_METHOD,
    SERVER_NAME, SERVER_PORT, wsgi.version, wsgi.input, wsgi.errors,
    wsgi.multithread, wsgi.multiprocess, wsgi.run_once

  - That HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH are not in the
    environment (these headers should appear as CONTENT_LENGTH and
    CONTENT_TYPE).

  - Warns if QUERY_STRING is missing, as the cgi module acts
    unpredictably in that case.

  - That CGI-style variables (that don't contain a .) have
    (non-unicode) string values

  - That wsgi.version is a tuple

  - That wsgi.url_scheme is 'http' or 'https' (@@: is this too
    restrictive?)

  - Warns if the REQUEST_METHOD is not known (@@: probably too
    restrictive).

  - That SCRIPT_NAME and PATH_INFO are empty or start with /

  - That at least one of SCRIPT_NAME or PATH_INFO are set.

  - That CONTENT_LENGTH is a positive integer.

  - That SCRIPT_NAME is not '/' (it should be '', and PATH_INFO should
    be '/').

  - That wsgi.input has the methods read, readline, readlines, and
    __iter__

  - That wsgi.errors has the methods flush, write, writelines

* The status is a string, contains a space, starts with an integer,
  and that integer is in range (> 100).

* That the headers is a list (not a subclass, not another kind of
  sequence).

* That the items of the headers are tuples of strings.

* That there is no 'status' header (that is used in CGI, but not in
  WSGI).

* That the headers don't contain newlines or colons, end in _ or -, or
  contain characters codes below 037.

* That Content-Type is given if there is content (CGI often has a
  default content type, but WSGI does not).

* That no Content-Type is given when there is no content (@@: is this
  too restrictive?)

* That the exc_info argument to start_response is a tuple or None.

* That all calls to the writer are with strings, and no other methods
  on the writer are accessed.

* That wsgi.input is used properly:

  - .read() is called with zero or one argument

  - That it returns a string

  - That readline, readlines, and __iter__ return strings

  - That .close() is not called

  - No other methods are provided

* That wsgi.errors is used properly:

  - .write() and .writelines() is called with a string

  - That .close() is not called, and no other methods are provided.

* The response iterator:

  - That it is not a string (it should be a list of a single string; a
    string will work, but perform horribly).

  - That .next() returns a string

  - That the iterator is not iterated over until start_response has
    been called (that can signal either a server or application
    error).

  - That .close() is called (doesn't raise exception, only prints to
    sys.stderr, because we only know it isn't called when the object
    is garbage collected).
t	validatori����N(tDictTypet
StringTypet	TupleTypetListTypes^[a-zA-Z][a-zA-Z0-9\-_]*$s[\000-\037]tWSGIWarningcBseZdZRS(s:
    Raised in response to WSGI-spec-related warnings
    (t__name__t
__module__t__doc__(((s(/usr/lib64/python2.7/wsgiref/validate.pyRzscGs|st|��ndS(N(tAssertionError(tcondtargs((s(/usr/lib64/python2.7/wsgiref/validate.pytassert_scs�fd�}|S(s�
    When applied between a WSGI server and a WSGI application, this
    middleware will check for WSGI compliancy on a number of levels.
    This middleware does not modify the request or response in any
    way, but will raise an AssertionError if anything seems off
    (except for a failure to close the application iterator, which
    will be printed to stderr -- there's no way to raise an exception
    at that point).
    cs�tt|�dkd�t|d�|\}�t|�g���fd�}t|d�|d<t|d�|d<�||�}t|dk	o�|tkd�t|�t|��S(NisTwo arguments requiredsNo keyword arguments allowedcs�tt|�dkp$t|�dkd|f�t|d�|d}|d}t|�dkrs|d}nd}t|�t|�t||�t|��jd�t�|��S(NiisInvalid number of arguments: %ssNo keyword arguments allowedii(	RtlentNonetcheck_statust
check_headerstcheck_content_typetcheck_exc_infotappendtWriteWrapper(Rtkwtstatustheaderstexc_info(tstart_responsetstart_response_started(s(/usr/lib64/python2.7/wsgiref/validate.pytstart_response_wrapper�s$







s
wsgi.inputswsgi.errorss>The application must return an iterator, if only an empty list(	RR
t
check_environtInputWrappertErrorWrapperRtFalsetcheck_iteratortIteratorWrapper(RRtenvironRtiterator(tapplication(RRs(/usr/lib64/python2.7/wsgiref/validate.pytlint_app�s

((R$R%((R$s(/usr/lib64/python2.7/wsgiref/validate.pyR�s)RcBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs
||_dS(N(tinput(tselft
wsgi_input((s(/usr/lib64/python2.7/wsgiref/validate.pyt__init__�scGsHtt|�dk�|jj|�}tt|�td�k�|S(Nit(RR
R&treadttype(R'Rtv((s(/usr/lib64/python2.7/wsgiref/validate.pyR+�scCs/|jj�}tt|�td�k�|S(NR*(R&treadlineRR,(R'R-((s(/usr/lib64/python2.7/wsgiref/validate.pyR.�scGsutt|�dk�|jj|�}tt|�tg�k�x*|D]"}tt|�td�k�qKW|S(NiR*(RR
R&t	readlinesR,(R'Rtlinestline((s(/usr/lib64/python2.7/wsgiref/validate.pyR/�s
 ccs%x|j�}|sdS|VqdS(N(R.(R'R1((s(/usr/lib64/python2.7/wsgiref/validate.pyt__iter__�s
cCstdd�dS(Nis input.close() must not be called(R(R'((s(/usr/lib64/python2.7/wsgiref/validate.pytclose�s(RRR)R+R.R/R2R3(((s(/usr/lib64/python2.7/wsgiref/validate.pyR�s					RcBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs
||_dS(N(terrors(R'twsgi_errors((s(/usr/lib64/python2.7/wsgiref/validate.pyR)�scCs0tt|�td�k�|jj|�dS(NR*(RR,R4twrite(R'ts((s(/usr/lib64/python2.7/wsgiref/validate.pyR6�scCs|jj�dS(N(R4tflush(R'((s(/usr/lib64/python2.7/wsgiref/validate.pyR8�scCs"x|D]}|j|�qWdS(N(R6(R'tseqR1((s(/usr/lib64/python2.7/wsgiref/validate.pyt
writelines�s
cCstdd�dS(Nis!errors.close() must not be called(R(R'((s(/usr/lib64/python2.7/wsgiref/validate.pyR3�s(RRR)R6R8R:R3(((s(/usr/lib64/python2.7/wsgiref/validate.pyR�s
				RcBseZd�Zd�ZRS(cCs
||_dS(N(twriter(R'twsgi_writer((s(/usr/lib64/python2.7/wsgiref/validate.pyR)�scCs-tt|�td�k�|j|�dS(NR*(RR,R;(R'R7((s(/usr/lib64/python2.7/wsgiref/validate.pyt__call__�s(RRR)R=(((s(/usr/lib64/python2.7/wsgiref/validate.pyR�s	tPartialIteratorWrappercBseZd�Zd�ZRS(cCs
||_dS(N(R#(R't
wsgi_iterator((s(/usr/lib64/python2.7/wsgiref/validate.pyR)�scCst|jd�S(N(R!R#R(R'((s(/usr/lib64/python2.7/wsgiref/validate.pyR2�s(RRR)R2(((s(/usr/lib64/python2.7/wsgiref/validate.pyR>�s	R!cBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs.||_t|�|_t|_||_dS(N(toriginal_iteratortiterR#Rtclosedtcheck_start_response(R'R?RC((s(/usr/lib64/python2.7/wsgiref/validate.pyR)s		cCs|S(N((R'((s(/usr/lib64/python2.7/wsgiref/validate.pyR2	scCsOt|jd�|jj�}|jdk	rKt|jd�d|_n|S(NsIterator read after closedsjThe application returns and we started iterating over its body, but start_response has not yet been called(RRBR#tnextRCR(R'R-((s(/usr/lib64/python2.7/wsgiref/validate.pyRDs
	cCs/t|_t|jd�r+|jj�ndS(NR3(tTrueRBthasattrR@R3(R'((s(/usr/lib64/python2.7/wsgiref/validate.pyR3s	cCs0|jstjjd�nt|jd�dS(Ns/Iterator garbage collected without being closed(RBtsyststderrR6R(R'((s(/usr/lib64/python2.7/wsgiref/validate.pyt__del__s
		
	(RRR)R2RDR3RI(((s(/usr/lib64/python2.7/wsgiref/validate.pyR!s
			
	c	Cs�tt|�tkdt|�|f�xCdddddddd	d
g	D] }t||kd|f�qKWx5dd
gD]'}t||kd||df�q|Wd|kr�tjdt�nx^|j�D]P}d|kr�q�ntt||�tkd|t||�||f�q�Wtt|d�tkd|df�t|dd+kd|d�t	|d�t
|d�|dd,kr�tjd |dt�nt|jd!�p�|d!jd"�d#|d!�t|jd$�p
|d$jd"�d%|d$�|jd&�rPtt
|d&�d'kd(|d&�n|jd!�sutd$|kd)�nt|jd!�d"kd*�dS(-Ns:Environment is not of the right type: %r (environment: %r)tREQUEST_METHODtSERVER_NAMEtSERVER_PORTswsgi.versions
wsgi.inputswsgi.errorsswsgi.multithreadswsgi.multiprocesss
wsgi.run_onces$Environment missing required key: %rtHTTP_CONTENT_TYPEtHTTP_CONTENT_LENGTHs8Environment should not have the key: %s (use %s instead)itQUERY_STRINGs�QUERY_STRING is not in the WSGI environment; the cgi module will use sys.argv when this variable is missing, so application errors are more likelyt.s9Environmental variable %s is not a string: %r (value: %r)s#wsgi.version should be a tuple (%r)swsgi.url_schemethttpthttpsswsgi.url_scheme unknown: %rtGETtHEADtPOSTtOPTIONStPUTtDELETEtTRACEsUnknown REQUEST_METHOD: %rtSCRIPT_NAMEt/s$SCRIPT_NAME doesn't start with /: %rt	PATH_INFOs"PATH_INFO doesn't start with /: %rtCONTENT_LENGTHisInvalid CONTENT_LENGTH: %rsgOne of SCRIPT_NAME or PATH_INFO are required (PATH_INFO should at least be '/' if SCRIPT_NAME is empty)sOSCRIPT_NAME cannot be '/'; it should instead be '', and PATH_INFO should be '/'(RQRR(RSRTRURVRWRXRY(RR,RtwarningstwarnRtkeysRRtcheck_inputtcheck_errorstgett
startswithtint(R"tkey((s(/usr/lib64/python2.7/wsgiref/validate.pyR"s`	

#	

cCsAx:ddddgD]&}tt||�d||f�qWdS(NR+R.R/R2s-wsgi.input (%r) doesn't have the attribute %s(RRF(R(tattr((s(/usr/lib64/python2.7/wsgiref/validate.pyRacscCs>x7dddgD]&}tt||�d||f�qWdS(NR8R6R:s.wsgi.errors (%r) doesn't have the attribute %s(RRF(R5Rg((s(/usr/lib64/python2.7/wsgiref/validate.pyRbiscCs�tt|�tkd|�|jdd�d}tt|�dkd|�t|�}t|dkd|�t|�dks�|dd	kr�tjd
|t	�ndS(Ns Status must be a string (not %r)iiis)Status codes must be three characters: %ridsStatus code is invalid: %rit sjThe status string (%r) should be a three-digit integer followed by a single space and a status explanation(
RR,RtsplitRR
ReR^R_R(Rtstatus_codet
status_int((s(/usr/lib64/python2.7/wsgiref/validate.pyRos"c	Cs_tt|�tkd|t|�f�i}x)|D]!}tt|�tkd|t|�f�tt|�dk�|\}}t|j�dkd|�d||j�<td|ko�d|kd|�ttj|�d	|�t|j	d
�o|j	d�d|�t
j|�r6td
d|t
j|�jd
�f�q6q6WdS(Ns%Headers (%r) must be of type list: %rs1Individual headers (%r) must be of type tuple: %riRsyThe Status header cannot be used; it conflicts with CGI script, and HTTP status is not given through headers (value: %r).s
t:s,Header names may not contain ':' or '\n': %rsBad header name: %rt-t_s#Names may not end in '-' or '_': %ris#Bad header value: %r (bad char: %r)(RR,RRR
tlowerRt	header_retsearchtendswithtbad_header_value_retgroup(Rtheader_namestitemtnametvalue((s(/usr/lib64/python2.7/wsgiref/validate.pyR~s,
 	cCs�t|jdd�d�}d}xJ|D]B\}}|j�dkr)||krWdStdd|�q)q)W||kr�tdd|�ndS(	Niii�i0scontent-typesJContent-Type header found in a %s response, which must not return content.s,No Content-Type header found in headers (%s)(i�i0(ReRiRRoR(RRtcodetNO_MESSAGE_BODYRwRx((s(/usr/lib64/python2.7/wsgiref/validate.pyR�s	cCs?t|dkp$t|�td�kd|t|�f�dS(Ns exc_info (%r) is not a tuple: %r((RRR,(R((s(/usr/lib64/python2.7/wsgiref/validate.pyR�s$cCstt|t�d�dS(NsvYou should not return a string as your application iterator, instead return a single-item list containing that string.(Rt
isinstancetstr(R#((s(/usr/lib64/python2.7/wsgiref/validate.pyR �s((((((Rt__all__treRGttypesRRRRR^tcompileRpRstWarningRRRRRRR>R!RRaRbRRRRR (((s(/usr/lib64/python2.7/wsgiref/validate.pyt<module>ns.	"		7"		!	A						

Filemanager

Name Type Size Permission Actions
.__init__.pyo.40009 File 729 B 0644
.headers.pyo.40009 File 7.3 KB 0644
.simple_server.pyo.40009 File 5.92 KB 0644
.util.pyo.40009 File 5.86 KB 0644
.validate.pyo.40009 File 16.44 KB 0644
__init__.py File 586 B 0644
__init__.pyc File 729 B 0644
__init__.pyo File 729 B 0644
handlers.py File 15.61 KB 0644
handlers.pyc File 15.87 KB 0644
handlers.pyo File 15.24 KB 0644
headers.py File 5.74 KB 0644
headers.pyc File 7.3 KB 0644
headers.pyo File 7.3 KB 0644
simple_server.py File 4.63 KB 0644
simple_server.pyc File 5.92 KB 0644
simple_server.pyo File 5.92 KB 0644
util.py File 5.45 KB 0644
util.pyc File 5.86 KB 0644
util.pyo File 5.86 KB 0644
validate.py File 14.39 KB 0644
validate.pyc File 16.44 KB 0644
validate.pyo File 16.44 KB 0644