Your IP : 3.23.103.203


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

3

�Qgc��@s�dZddlmZmZmZddlmZddlZddlZddl	Z
ddlmZddl
mZddlmZddlZddlZddlZdd	d
ddd
dddddddddgZdadadd�Zdd�Zdd�Zdd�Zeadadejdddfd d
�Zd4d!d�Zd5d"d�Z d#d
�Z!d$d%�Z"d&d�Z#Gd'd�d�Z$Gd(d	�d	�Z%ejfd)d�Z&d6d*d�Z'ejfd+d�Z(d,d�Z)d-d�Z*d.d�Z+d/d�Z,d7d0d�Z-d1d2�Z.e/d3k�r�e&�dS)8z2.6�)�StringIO�BytesIO�
TextIOWrapper)�MappingN)�
FeedParser)�Message)�warn�MiniFieldStorage�FieldStorage�parse�parse_qs�	parse_qsl�parse_multipart�parse_header�test�print_exception�
print_environ�
print_form�print_directory�print_arguments�print_environ_usage�escape�cGsHtr.tr.yttd�aWntk
r,YnXts8tantat|�dS)N�a)�logfile�logfp�open�OSError�nolog�log�dolog)�allargs�r"�/usr/lib64/python3.6/cgi.py�initlog:s
r$cGstj||d�dS)N�
)r�write)Zfmt�argsr"r"r#r ]sr cGsdS)Nr")r!r"r"r#rasrcCsdatrtj�datadS)Nr)rr�closer$rr"r"r"r#�closeloges
r)c
Cs\|dkrtj}t|d�r |j}nd}t|t�r4|j}d|krDd|d<|ddk�rt|d�\}}|dkrxt|||d�S|d	kr�t	|d
�}t
r�|t
kr�td��|j|�j
|�}	nd}	d
|kr�|	r�|	d}	|	|d
}	n*tjdd��r|	r�|	d}	|	tjd}	|	|d
<n<d
|k�r |d
}	n(tjdd��r<tjd}	nd}	|	|d
<tjj|	|||d�S)N�encodingzlatin-1�REQUEST_METHOD�GET�POST�CONTENT_TYPEzmultipart/form-data)�	separatorz!application/x-www-form-urlencoded�CONTENT_LENGTHzMaximum content length exceededr�QUERY_STRING�&�)r*)�sys�stdin�hasattrr*�
isinstancer�bufferrr�int�maxlen�
ValueError�read�decode�argv�urllibrr)
�fp�environ�keep_blank_values�strict_parsingr/r*�ctype�pdict�clength�qsr"r"r#rxsH




cCs tdtd�tjj||||d�S)Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs instead�)r/)r�DeprecationWarningr?rr)rGrBrCr/r"r"r#r�scCs tdtd�tjj||||d�S)Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrH)r/)rrIr?rr
)rGrBrCr/r"r"r#r
�scCs�ddl}d}d|kr|d}t|�s2td|f��d|}d|d}i}d}�x�||k�r�d}d}	|r�|jj|�}
|
jd�}|r�yt|�}Wntk
r�YnX|dkr�tr�|tkr�td��|j|�}	nd}	g}xD|j	�}
|
s�|}P|
j
d��r|
j�}|||fk�rP|j|
�q�W|	dk�r&qR|dk�r�|�r�|d}
|
dd�d
k�r^|
dd�}
n|
dd�dk�r||
dd�}
|
|d<dj
|�}	|
d}
|
�s�qRt|
�\}}|d
k�r�qRd|krR|d}nqR||k�r�||j|	�qR|	g||<qRW|S)Nr��boundaryz&Invalid boundary in multipart form: %rs--r3zcontent-lengthzMaximum content length exceededrHs
�
zcontent-dispositionz	form-data�name���rN���rOrNrNrN)Zhttp.client�valid_boundaryr;ZclientZ
parse_headers�getr9r:r<�readline�
startswith�rstrip�append�joinr)r@rEZhttprKZnextpartZlastpartZpartdict�
terminator�bytes�data�headersrF�lines�line�keyZparamsrMr"r"r#r�s|







ccs�x�|dd�dkr�|dd�}|jd�}x<|dkrd|jdd|�|jdd|�drd|jd|d�}q*W|dkrvt|�}|d|�}|j�V||d�}qWdS)Nr3�;r�"z\"rH)�find�count�len�strip)�s�end�fr"r"r#�_parseparam/s
*
rgcCs�td|�}|j�}i}x�|D]�}|jd�}|dkr|d|�j�j�}||dd�j�}t|�dkr�|d|d
ko�dknr�|dd�}|jdd�jd	d�}|||<qW||fS)Nr^�=rr3rHr_z\\�\z\"rNrN)rg�__next__r`rc�lowerrb�replace)r\�partsr]rE�p�irM�valuer"r"r#r;s

,c@s<eZdZdZdZdZdZiZdZiZ	iZ
dd�Zdd�ZdS)r	NcCs||_||_dS)N)rMrp)�selfrMrpr"r"r#�__init__aszMiniFieldStorage.__init__cCsd|j|jfS)NzMiniFieldStorage(%r, %r))rMrp)rqr"r"r#�__repr__gszMiniFieldStorage.__repr__)
�__name__�
__module__�__qualname__�filename�list�type�file�type_options�disposition�disposition_optionsrZrrrsr"r"r"r#r	Ssc@s�eZdZdddejdddddddfdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zd:dd�Z
d;dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�ZdZd&d'�Zd(d)�Zd<Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�ZdS)=r
NrJrzutf-8rlcCsRd}||_||_|
|_||_d|kr0|dj�}d|_|dksF|dkr�d|krX|d}
ntjdd�rrtjd}
nd}
|
jt	j
�d�}
t|
�}|dkr�dd	i}|dkr�i}|d
kr�d	|d<d|kr�|d|d<d|kr�|d|_d|kr�|d|d
<nt|t
tf��std��||_|dk�r*tjj|_n<t|t��r@|j|_n&t|d��oTt|d��s`td��||_||_|	|_t|t��s�tdt|�j��||_d|_||_di}}d|jk�r�t|jd�\}}||_||_ d|_!d|k�r�|d|_!d|_"d|k�r
|d|_"|j"dk	|_#d|jk�r6t|jd�\}}n(|j�sH|d
k�rTdi}}n
d	i}}||_||_$d|k�r�|dj|j�|_%nd|_%d}d
|jk�r�yt&|jd
�}Wnt'k
�r�YnXt(�r�|t(k�r�t'd��||_)|jdk�r�|�r�||_d|_*|_+d|_,|d	k�r$|j-�n*|dd�dk�rF|j.|||�n|j/�dS)Nr,r+ZHEADr1r3r�surrogateescapezcontent-typez!application/x-www-form-urlencodedr-r.r0zcontent-lengthz?headers must be mapping or an instance of email.message.Messager<rRzfp must be file pointerz#outerboundary must be bytes, not %srzcontent-dispositionrMrwz
text/plainrKrJzMaximum content length exceeded�
z
multipart/rN)0rBrC�max_num_fieldsr/�upper�
qs_on_postr4r>�encode�locale�getpreferredencodingrr7rr�	TypeErrorrZr5r8r@rr6r*�errorsrXryrt�
outerboundary�
bytes_read�limitrr|r}rMrw�_binary_filer{�
innerboundaryr9r;r:�lengthrxrz�done�read_urlencoded�
read_multi�read_single)rqr@rZr�rArBrCr�r*r�r�r/�methodrGZcdisprErDZclenr"r"r#rr�s�/












zFieldStorage.__init__cCs(y|jj�Wntk
r"YnXdS)N)rzr(�AttributeError)rqr"r"r#�__del__;szFieldStorage.__del__cCs|S)Nr")rqr"r"r#�	__enter__AszFieldStorage.__enter__cGs|jj�dS)N)rzr()rqr'r"r"r#�__exit__DszFieldStorage.__exit__cCsd|j|j|jfS)NzFieldStorage(%r, %r, %r))rMrwrp)rqr"r"r#rsGszFieldStorage.__repr__cCst|j��S)N)�iter�keys)rqr"r"r#�__iter__LszFieldStorage.__iter__cCsT|dkrt|��|jr:|jjd�|jj�}|jjd�n|jdk	rL|j}nd}|S)Nrpr)r�rz�seekr<rx)rqrMrpr"r"r#�__getattr__Os

zFieldStorage.__getattr__cCsb|jdkrtd��g}x"|jD]}|j|kr|j|�qW|sFt|��t|�dkrZ|dS|SdS)Nz
not indexabler3r)rxr�rMrU�KeyErrorrb)rqr]�found�itemr"r"r#�__getitem__\s

zFieldStorage.__getitem__cCs8||kr0||}t|t�r(dd�|D�S|jSn|SdS)NcSsg|]
}|j�qSr")rp)�.0�xr"r"r#�
<listcomp>osz)FieldStorage.getvalue.<locals>.<listcomp>)r7rxrp)rqr]�defaultrpr"r"r#�getvaluejs
zFieldStorage.getvaluecCs4||kr,||}t|t�r$|djS|jSn|SdS)Nr)r7rxrp)rqr]r�rpr"r"r#�getfirstus

zFieldStorage.getfirstcCs:||kr2||}t|t�r(dd�|D�S|jgSngSdS)NcSsg|]
}|j�qSr")rp)r�r�r"r"r#r��sz(FieldStorage.getlist.<locals>.<listcomp>)r7rxrp)rqr]rpr"r"r#�getlist�s

zFieldStorage.getlistcCs*|jdkrtd��ttdd�|jD���S)Nz
not indexablecss|]}|jVqdS)N)rM)r�r�r"r"r#�	<genexpr>�sz$FieldStorage.keys.<locals>.<genexpr>)rxr��set)rqr"r"r#r��s
zFieldStorage.keyscs*|jdkrtd��t�fdd�|jD��S)Nz
not indexablec3s|]}|j�kVqdS)N)rM)r�r�)r]r"r#r��sz,FieldStorage.__contains__.<locals>.<genexpr>)rxr��any)rqr]r")r]r#�__contains__�s
zFieldStorage.__contains__cCst|j��S)N)rbr�)rqr"r"r#�__len__�szFieldStorage.__len__cCs|jdkrtd��t|j�S)NzCannot be converted to bool.)rxr��bool)rqr"r"r#�__bool__�s
zFieldStorage.__bool__c	Cs�|jj|j�}t|t�s0td|jt|�jf��|j|j	|j
�}|jrT|d|j7}tj
j||j|j|j	|j
|j|jd�}dd�|D�|_|j�dS)Nz%s should return bytes, got %sr2)r*r�r�r/cSsg|]\}}t||��qSr")r	)r�r]rpr"r"r#r��sz0FieldStorage.read_urlencoded.<locals>.<listcomp>)r@r<r�r7rXr;ryrtr=r*r�r�r?rr
rBrCr�r/rx�
skip_lines)rqrG�queryr"r"r#r��s

zFieldStorage.read_urlencodedc
CsB|j}t|�std|f��g|_|jrftjj|j|j|j	|j
|j|j|j
d�}|jjdd�|D��|jpp|j}|jj�}t|t�s�td|jt|�jf��|jt|�7_x6|j�d|jkr�|r�|jj�}|jt|�7_q�W|j}|dk	�r|t|j�8}�x,t�}	d}
x$|jj�}|
|7}
|j��sP�qW|
�sBP|jt|
�7_|	j|
j|j
|j��|	j�}d|k�r�|d=||j||||||j|j|j
|j||j
d	�}
|dk	�r�|d
8}|
j�r�|t|
j�8}|dk�r�td��|j|
j7_|jj|
�|
j �s.|j|j!k�o&dkn�r
P�q
W|j"�dS)
Nz&Invalid boundary in multipart form: %r)r*r�r�r/css|]\}}t||�VqdS)N)r	)r�r]rpr"r"r#r��sz*FieldStorage.read_multi.<locals>.<genexpr>z%s should return bytes, got %ss--rJzcontent-length)r/r3rzMax number of fields exceeded)#r�rPr;rxr�r?rr
rBrCr*r�r�r/�extend�FieldStorageClass�	__class__r@rRr7rXryrtr�rbrcrZfeedr=r(r�rUr�r�r�)rqrArBrCZibr��klassZ
first_liner��parserZhdr_textrYrZ�partr"r"r#r��sj










(zFieldStorage.read_multicCs4|jdkr|j�|j�n|j�|jjd�dS)Nr)r��read_binaryr��
read_linesrzr�)rqr"r"r#r��s


zFieldStorage.read_single�icCs�|j�|_|j}|dkr�xx|dkr�|jjt||j��}t|t�sXt	d|jt
|�jf��|jt
|�7_|svd|_P|jj|�|t
|�}qWdS)Nrz%s should return bytes, got %sr3rN)�	make_filerzr�r@r<�min�bufsizer7rXr;ryrtr�rbr�r&)rqZtodorYr"r"r#r�s


zFieldStorage.read_binarycCs@|jrt�|_|_nt�|_|_|jr4|j�n|j�dS)N)r�rrz�_FieldStorage__filerr��read_lines_to_outerboundary�read_lines_to_eof)rqr"r"r#r�s
zFieldStorage.read_linescCsv|jdk	rF|jj�t|�dkrF|j�|_|jj�}|jj|�d|_|jrZ|jj|�n|jj|j|j	|j
��dS)Ni�)r��tellrbr�rzr�r&r�r=r*r�)rqr\rYr"r"r#Z__writes


zFieldStorage.__writecCs>x8|jjd�}|jt|�7_|s,d|_P|j|�qWdS)Nr3�irN)r@rRr�rbr��_FieldStorage__write)rqr\r"r"r#r�,szFieldStorage.read_lines_to_eofc	Cs,d|j}|d}d}d}d}�x||jkr.P|jjd�}|jt|�7_|t|�7}|sdd
|_P|dkrx||}d}|jd�r�|r�|j�}||kr�P||kr�d|_P|}|j	d�r�d}|dd�}d}nJ|j	d
�r�d
}|dd�}d}n*|j	d��rd}|dd�}d}nd}d}|j
||�q"WdS)Ns--rJTrr3r��
s
rHrLFirNrOrNrN)r�r�r@rRr�rbr�rSrT�endswithr�)	rq�
next_boundary�
last_boundaryZdelim�last_line_lfendZ_readr\�strippedlineZodelimr"r"r#r�6sP



z(FieldStorage.read_lines_to_outerboundarycCs�|js|jrdSd|j}|d}d}xh|jjd�}|jt|�7_|sTd|_P|jd�r�|r�|j�}||krtP||kr�d|_P|jd�}q*WdS)Ns--Tr3r�rLirN)r�r�r@rRr�rbr�rc)rqr�r�r�r\r�r"r"r#r�gs&
zFieldStorage.skip_linescCs&|jrtjd�Stjd|jdd�SdS)Nzwb+zw+r%)r*�newline)r��tempfileZ
TemporaryFiler*)rqr"r"r#r�}s
zFieldStorage.make_file)N)Ni ) rtrurv�osrArrr�r�r�rsr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r"r"r"r#r
ls>+"


D	
1cCs�td�t�tjt_yNt�}t�t�t|�t|�t	�dd�}|fdd�}td�|�Wnt
�YnXtd�day&t�}t�t�t|�t|�Wnt
�YnXdS)	NzContent-type: text/htmlcSstd�dS)Nz,testing print_exception() -- <I>italics?</I>)�execr"r"r"r#rf�sztest.<locals>.fcSs
|�dS)Nr")rfr"r"r#�g�sztest.<locals>.gz9<H3>What follows is a test, not an actual exception:</H3>z*<H1>Second try with a small maxlen...</H1>�2)�printr4�stdout�stderrr
rrrrrrr:)rA�formrfr�r"r"r#r�s4
cCsx|dkrtj�\}}}ddl}t�td�|j||�|j||�}tdtjdj|dd���tj|d�f�~dS)Nrz+<H3>Traceback (most recent call last):</H3>z<PRE>%s<B>%s</B></PRE>rr3rNrN)	r4�exc_info�	tracebackr��	format_tb�format_exception_only�htmlrrV)ryrp�tbr�r�rxr"r"r#r�s
cCs`t|j��}t�td�td�x*|D]"}tdtj|�dtj||��q(Wtd�t�dS)Nz<H3>Shell Environment:</H3>z<DL>z<DT>z<DD>z</DL>)�sortedr�r�r�r)rAr�r]r"r"r#r�s
"cCs�t|j��}t�td�|s&td�td�xb|D]Z}tdtj|�ddd�||}tdtjtt|���d	�td
tjt|���q4Wtd�t�dS)Nz<H3>Form Contents:</H3>z<P>No form fields.z<DL>z<DT>�:� )rez<i>z</i>z<DD>z</DL>)r�r�r�r�r�reprry)r�r�r]rpr"r"r#r�s
cCsjt�td�ytj�}Wn6tk
rP}ztdtjt|���WYdd}~XnXttj|��t�dS)Nz#<H3>Current Working Directory:</H3>zOSError:)r�r��getcwdrr�r�str)�pwd�msgr"r"r#r�s&cCs(t�td�t�ttj�t�dS)Nz <H3>Command Line Arguments:</H3>)r�r4r>r"r"r"r#r�s

cCstd�dS)Na�
<H3>These environment variables could have been set:</H3>
<UL>
<LI>AUTH_TYPE
<LI>CONTENT_LENGTH
<LI>CONTENT_TYPE
<LI>DATE_GMT
<LI>DATE_LOCAL
<LI>DOCUMENT_NAME
<LI>DOCUMENT_ROOT
<LI>DOCUMENT_URI
<LI>GATEWAY_INTERFACE
<LI>LAST_MODIFIED
<LI>PATH
<LI>PATH_INFO
<LI>PATH_TRANSLATED
<LI>QUERY_STRING
<LI>REMOTE_ADDR
<LI>REMOTE_HOST
<LI>REMOTE_IDENT
<LI>REMOTE_USER
<LI>REQUEST_METHOD
<LI>SCRIPT_NAME
<LI>SERVER_NAME
<LI>SERVER_PORT
<LI>SERVER_PROTOCOL
<LI>SERVER_ROOT
<LI>SERVER_SOFTWARE
</UL>
In addition, HTTP headers sent by the server may be passed in the
environment as well.  Here are some common variable names:
<UL>
<LI>HTTP_ACCEPT
<LI>HTTP_CONNECTION
<LI>HTTP_HOST
<LI>HTTP_PRAGMA
<LI>HTTP_REFERER
<LI>HTTP_USER_AGENT
</UL>
)r�r"r"r"r#rs'cCsFtdtdd�|jdd�}|jdd�}|jdd	�}|rB|jd
d�}|S)Nz1cgi.escape is deprecated, use html.escape insteadrH)�
stacklevelr2z&amp;�<z&lt;�>z&gt;r_z&quot;)rrIrl)rdZquoter"r"r#r1s
cCs(ddl}t|t�rd}nd}|j||�S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)�rer7rX�match)rdr�Z_vb_patternr"r"r#rP=s

rP�__main__)rrN)rrN)NNNN)N)0�__version__�iorrr�collectionsrr4r�Zurllib.parser?Zemail.parserrZ
email.messager�warningsrr�r�r��__all__rrr$r rr)rr:rArrr
rrgrr	r
rrrrrrrrrPrtr"r"r"r#�<module>s`#	E

c7'
/



?>