Your IP : 3.128.168.219


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

3

��2aȐ�@s�dZddlmZmZmZddlmZddlZddlZddl	Z
ddlmZddl
mZddlmZddlZddlZddlZdd	d
ddd
dddddddddgZdadadd�Zdd�Zdd�Zdd�Zeadadejddd fd!d
�Zd5d"d�Zd6d#d�Z d$d
�Z!d%d&�Z"d'd�Z#Gd(d�d�Z$Gd)d	�d	�Z%ejfd*d�Z&d7d+d�Z'ejfd,d�Z(d-d�Z)d.d�Z*d/d�Z+d0d�Z,d8d1d�Z-d2d3�Z.e/d4k�r�e&�dS)9z2.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"�(/opt/alt/python36/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
CsZ|dkrtj}t|d�r |j}nd}t|t�r4|j}d|krDd|d<|ddk�rt|d�\}}|dkrtt||�S|dkr�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��r8tjd}	nd}	|	|d<tjj|	||||d�S)N�encodingzlatin-1�REQUEST_METHOD�GET�POST�CONTENT_TYPEzmultipart/form-dataz!application/x-www-form-urlencoded�CONTENT_LENGTHzMaximum content length exceededr�QUERY_STRINGr*�)r+�	separator)�sys�stdin�hasattrr+�
isinstancer�bufferrr�int�maxlen�
ValueError�read�decode�argv�urllibrr)
�fp�environ�keep_blank_values�strict_parsingr3r+�ctype�pdict�clength�qsr"r"r#rxsH





cCstdtd�tjj|||�S)Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs instead�)r�DeprecationWarningr?rr)rGrBrCr"r"r#r�scCstdtd�tjj|||�S)Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrH)rrIr?rr
)rGrBrCr"r"r#r
�scCs�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--r2zcontent-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�key�paramsrMr"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)Nr2�;r�"z\"rH)�find�count�len�strip)�s�end�fr"r"r#�_parseparam1s
*
rhcCs�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_�=rr2rHr`z\\�\z\"rNrN)rh�__next__rard�lowerrc�replace)r\�partsr]rE�p�irM�valuer"r"r#r=s

,c@s<eZdZdZdZdZdZiZdZiZ	iZ
dd�Zdd�ZdS)r	NcCs||_||_dS)N)rMrq)�selfrMrqr"r"r#�__init__cszMiniFieldStorage.__init__cCsd|j|jfS)NzMiniFieldStorage(%r, %r))rMrq)rrr"r"r#�__repr__iszMiniFieldStorage.__repr__)
�__name__�
__module__�__qualname__�filename�list�type�file�type_options�disposition�disposition_optionsrZrsrtr"r"r"r#r	Usc@s�eZdZdddejdddddddfdd�Zd	d
�Zdd�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/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�ZdS)>r
NrJrzutf-8rmr*c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,ZHEADr1r2r�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-dispositionrMrxz
text/plainrKrJzMaximum content length exceeded�
z
multipart/rN)0rBrC�max_num_fieldsr3�upper�
qs_on_postr4r>�encode�locale�getpreferredencodingrr7rr�	TypeErrorrZr5r8r@rr6r+�errorsrXrzru�
outerboundary�
bytes_read�limitrr}r~rMrx�_binary_filer|�
innerboundaryr9r;r:�lengthryr{�done�read_urlencoded�
read_multi�read_single)rrr@rZr�rArBrCr�r+r�r�r3�methodrGZcdisprErDZclenr"r"r#rs�s�/












zFieldStorage.__init__cCs(y|jj�Wntk
r"YnXdS)N)r{r(�AttributeError)rrr"r"r#�__del__=szFieldStorage.__del__cCs|S)Nr")rrr"r"r#�	__enter__CszFieldStorage.__enter__cGs|jj�dS)N)r{r()rrr'r"r"r#�__exit__FszFieldStorage.__exit__cCsd|j|j|jfS)NzFieldStorage(%r, %r, %r))rMrxrq)rrr"r"r#rtIszFieldStorage.__repr__cCst|j��S)N)�iter�keys)rrr"r"r#�__iter__NszFieldStorage.__iter__cCsT|dkrt|��|jr:|jjd�|jj�}|jjd�n|jdk	rL|j}nd}|S)Nrqr)r�r{�seekr<ry)rrrMrqr"r"r#�__getattr__Qs

zFieldStorage.__getattr__cCsb|jdkrtd��g}x"|jD]}|j|kr|j|�qW|sFt|��t|�dkrZ|dS|SdS)Nz
not indexabler2r)ryr�rMrU�KeyErrorrc)rrr]�found�itemr"r"r#�__getitem__^s

zFieldStorage.__getitem__cCs8||kr0||}t|t�r(dd�|D�S|jSn|SdS)NcSsg|]
}|j�qSr")rq)�.0�xr"r"r#�
<listcomp>qsz)FieldStorage.getvalue.<locals>.<listcomp>)r7ryrq)rrr]�defaultrqr"r"r#�getvaluels
zFieldStorage.getvaluecCs4||kr,||}t|t�r$|djS|jSn|SdS)Nr)r7ryrq)rrr]r�rqr"r"r#�getfirstws

zFieldStorage.getfirstcCs:||kr2||}t|t�r(dd�|D�S|jgSngSdS)NcSsg|]
}|j�qSr")rq)r�r�r"r"r#r��sz(FieldStorage.getlist.<locals>.<listcomp>)r7ryrq)rrr]rqr"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>)ryr��set)rrr"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>)ryr��any)rrr]r")r]r#�__contains__�s
zFieldStorage.__contains__cCst|j��S)N)rcr�)rrr"r"r#�__len__�szFieldStorage.__len__cCs|jdkrtd��t|j�S)NzCannot be converted to bool.)ryr��bool)rrr"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 %sr*)r+r�r�r3cSsg|]\}}t||��qSr")r	)r�r]rqr"r"r#r��sz0FieldStorage.read_urlencoded.<locals>.<listcomp>)r@r<r�r7rXr;rzrur=r+r�r�r?rr
rBrCr�r3ry�
skip_lines)rrrG�queryr"r"r#r��s

zFieldStorage.read_urlencodedcCs@|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
�}
|dk	�r�|d	8}|
j�r�|t|
j�8}|d
k�r�td��|j|
j7_|jj|
�|
j �s,|j|j!k�o$d
kn�r
P�q
W|j"�dS)Nz&Invalid boundary in multipart form: %r)r+r�r�r3css|]\}}t||�VqdS)N)r	)r�r]rqr"r"r#r��sz*FieldStorage.read_multi.<locals>.<genexpr>z%s should return bytes, got %ss--rJzcontent-lengthr2rzMax number of fields exceeded)#r�rPr;ryr�r?rr
rBrCr+r�r�r3�extend�FieldStorageClass�	__class__r@rRr7rXrzrur�rcrdrZfeedr=r(r�rUr�r�r�)rrrArBrCZibr��klassZ
first_liner��parserZhdr_textrYrZ�partr"r"r#r��sh








(zFieldStorage.read_multicCs4|jdkr|j�|j�n|j�|jjd�dS)Nr)r��read_binaryr��
read_linesr{r�)rrr"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 %sr2rN)�	make_filer{r�r@r<�min�bufsizer7rXr;rzrur�rcr�r&)rrZtodorYr"r"r#r�s


zFieldStorage.read_binarycCs@|jrt�|_|_nt�|_|_|jr4|j�n|j�dS)N)r�rr{�_FieldStorage__filerr��read_lines_to_outerboundary�read_lines_to_eof)rrr"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��tellrcr�r{r�r&r�r=r+r�)rrr\rYr"r"r#Z__writes


zFieldStorage.__writecCs>x8|jjd�}|jt|�7_|s,d|_P|j|�qWdS)Nr2�irN)r@rRr�rcr��_FieldStorage__write)rrr\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--rJTrr2r��
s
rHrLFirNrOrNrN)r�r�r@rRr�rcr�rSrT�endswithr�)	rr�
next_boundary�
last_boundaryZdelim�last_line_lfendZ_readr\�strippedlineZodelimr"r"r#r�7sP



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--Tr2r�rLirN)r�r�r@rRr�rcr�rd)rrr�r�r�r\r�r"r"r#r�hs&
zFieldStorage.skip_linescCs&|jrtjd�Stjd|jdd�SdS)Nzwb+zw+r%)r+�newline)r��tempfileZ
TemporaryFiler+)rrr"r"r#r�~s
zFieldStorage.make_file)N)Ni ) rurvrw�osrArsr�r�r�rtr�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
ns>+"


C	
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#rg�sztest.<locals>.fcSs
|�dS)Nr")rgr"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�formrgr�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>rr2rNrN)	r4�exc_info�	tracebackr��	format_tb�format_exception_only�htmlrrV)rzrq�tbr�r�ryr"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>�:� )rfz<i>z</i>z<DD>z</DL>)r�r�r�r�r�reprrz)r�r�r]rqr"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)�
stacklevelr*z&amp;�<z&lt;�>z&gt;r`z&quot;)rrIrm)reZquoter"r"r#r2s
cCs(ddl}t|t�rd}nd}|j||�S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)�rer7rX�match)rer�Z_vb_patternr"r"r#rP>s

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

d6'
/



?>