???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................B
    YI~d                 @   s  d Z ddlmZmZmZ ddlmZ ddlZddlZddl	Z
ddlmZ ddlmZ ddlmZ ddlZddlZddlZdd	d
ddddddddddddgZdadadd Zdd Zdd Zdd Zeadadejddd fd!d
Zd7d"dZd8d#dZ d9d&dZ!d'd( Z"d)d Z#G d*d dZ$G d+d	 d	Z%ejfd,dZ&d:d-dZ'ejfd.dZ(d/d Z)d0d Z*d1d Z+d2d Z,d;d3dZ-d4d5 Z.e/d6kre&  dS )<z2.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 c              G   sF   t r,ts,ytt daW n tk
r*   Y nX ts6tantat|   d S )Na)logfilelogfpopenOSErrornologlogdolog)allargs r"   (/opt/alt/python37/lib64/python3.7/cgi.pyinitlog:   s    r$   c             G   s   t | | d  d S )N
)r   write)Zfmtargsr"   r"   r#   r    ]   s    r    c              G   s   d S )Nr"   )r!   r"   r"   r#   r   a   s    r   c               C   s   da trt  d atad S )Nr   )r   r   closer$   r   r"   r"   r"   r#   closeloge   s
    r)   &c       
      C   s^  | d krt j} t| dr | j}nd}t| tr4| j} d|krDd|d< |d dkrt|d \}}|dkrxt| ||dS |d	krt	|d
 }t
r|t
krtd| ||}	nd}	d|kr|	r|	d }	|	|d  }	n*t jdd  r|	r|	d }	|	t jd  }	|	|d< n<d|kr |d }	n(t jdd  r<t jd }	nd}	|	|d< tjj|	||||dS )Nencodingzlatin-1REQUEST_METHODGETPOSTCONTENT_TYPEzmultipart/form-data)	separatorz!application/x-www-form-urlencodedCONTENT_LENGTHzMaximum content length exceededr   QUERY_STRINGr*      )r+   r0   )sysstdinhasattrr+   
isinstancer   bufferr   r   intmaxlen
ValueErrorreaddecodeargvurllibr   r   )
fpenvironkeep_blank_valuesstrict_parsingr0   r+   ctypepdictZclengthqsr"   r"   r#   r   x   sH    

  


c             C   s   t dtd tj| ||S )Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs instead   )r   DeprecationWarningr?   r   r   )rF   rB   rC   r"   r"   r#   r      s    c             C   s   t dtd tj| ||S )Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrG   )r   rH   r?   r   r   )rF   rB   rC   r"   r"   r#   r      s    utf-8replacec                sx   |d  d}d|}t }|| y|d |d< W n tk
rL   Y nX t| |||ddi|d  fd	d
 D S )Nboundaryasciiz multipart/form-data; boundary={}zCONTENT-LENGTHzContent-Lengthr,   r.   )headersr+   errorsrA   r0   c                s   i | ]}  ||qS r"   )getlist).0k)fsr"   r#   
<dictcomp>   s    z#parse_multipart.<locals>.<dictcomp>)r=   formatr   Zset_typeKeyErrorr
   )r@   rE   r+   rN   r0   rK   rD   rM   r"   )rR   r#   r      s    


c             c   s   x| d d dkr| dd  } |  d}x<|dkrd| dd|| dd| d rd|  d|d }q*W |dk rvt| }| d | }| V  | |d  } qW d S )Nr3   ;r   "z\"rG   )findcountlenstrip)sendfr"   r"   r#   _parseparam   s    
*
r_   c             C   s   t d|  }| }i }x|D ]}|d}|dkr|d |   }||d d   }t|dkr|d |d   krdkrn n |dd }|dd	d
d}|||< qW ||fS )NrV   =r   r3   rG   rW   z\\\z\")r_   __next__rX   r[   lowerrZ   rJ   )linepartskeyrE   pinamevaluer"   r"   r#   r      s    

,c               @   s<   e Zd ZdZdZdZdZi ZdZi Z	i Z
dd Zdd ZdS )r	   Nc             C   s   || _ || _d S )N)rj   rk   )selfrj   rk   r"   r"   r#   __init__  s    zMiniFieldStorage.__init__c             C   s   d| j | jf S )NzMiniFieldStorage(%r, %r))rj   rk   )rl   r"   r"   r#   __repr__   s    zMiniFieldStorage.__repr__)__name__
__module____qualname__filenamelisttypefiletype_optionsdispositiondisposition_optionsrM   rm   rn   r"   r"   r"   r#   r	     s   c               @   s   e Zd ZdddejdddddddfddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zd:ddZd;ddZdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdZd'd( Zd)d* Zd+Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 ZdS )<r
   N    r   zutf-8rJ   r*   c             C   sZ  d}|| _ || _|
| _|| _d|kr0|d  }d | _|dksF|dkrd|krX|d }ntjdd  rrtjd }nd}|t	
 d}t|}|d krdd	i}|d kri }|d
krd	|d< d|kr|d |d< d|kr|d | _d|kr|d |d< nt|ttfstd|| _|d kr*tjj| _n<t|tr@|j| _n&t|drXt|ds`td|| _|| _|	| _t|tstdt|j || _d| _|| _di  }}d| jkrt| jd \}}|| _|| _ d | _!d|kr|d | _!d | _"d|kr
|d | _"| j"d k	| _#d| jkr6t| jd \}}n(| jsH|d
krTdi  }}n
d	i  }}|| _|| _$d|kr|d | j| j| _%nd| _%d}d| jkryt&| jd }W n t'k
r   Y nX t(r|t(krt'd|| _)| jd kr|dkr|| _d  | _*| _+d| _,|d	kr,| -  n*|d d dkrN| .||| n| /  d S )Nr-   r,   ZHEADr2   r3   r   surrogateescapezcontent-typez!application/x-www-form-urlencodedr.   r/   r1   zcontent-lengthz?headers must be mapping or an instance of email.message.Messager<   readlinezfp must be file pointerz#outerboundary must be bytes, not %sr   zcontent-dispositionrj   rr   z
text/plainrK   ry   ra   zMaximum content length exceeded
   z
multipart/)0rB   rC   max_num_fieldsr0   upper
qs_on_postr4   r>   encodelocalegetpreferredencodingr   r7   r   r   	TypeErrorrM   r5   r8   r@   r   r6   r+   rN   bytesrt   ro   outerboundary
bytes_readlimitr   rw   rx   rj   rr   _binary_filerv   innerboundaryr9   r;   r:   lengthrs   ru   doneread_urlencoded
read_multiread_single)rl   r@   rM   r   rA   rB   rC   r   r+   rN   r}   r0   methodrF   ZcdisprE   rD   Zclenr"   r"   r#   rm   P  s    /












zFieldStorage.__init__c             C   s(   y| j   W n tk
r"   Y nX d S )N)ru   r(   AttributeError)rl   r"   r"   r#   __del__  s    zFieldStorage.__del__c             C   s   | S )Nr"   )rl   r"   r"   r#   	__enter__  s    zFieldStorage.__enter__c             G   s   | j   d S )N)ru   r(   )rl   r'   r"   r"   r#   __exit__  s    zFieldStorage.__exit__c             C   s   d| j | j| jf S )NzFieldStorage(%r, %r, %r))rj   rr   rk   )rl   r"   r"   r#   rn     s    zFieldStorage.__repr__c             C   s   t |  S )N)iterkeys)rl   r"   r"   r#   __iter__  s    zFieldStorage.__iter__c             C   sT   |dkrt || jr:| jd | j }| jd n| jd k	rL| j}nd }|S )Nrk   r   )r   ru   seekr<   rs   )rl   rj   rk   r"   r"   r#   __getattr__	  s    

zFieldStorage.__getattr__c             C   sb   | j d krtdg }x"| j D ]}|j|kr|| qW |sFt|t|dkrZ|d S |S d S )Nznot indexabler3   r   )rs   r   rj   appendrU   rZ   )rl   rg   founditemr"   r"   r#   __getitem__  s    

 zFieldStorage.__getitem__c             C   s8   || kr0| | }t |tr(dd |D S |jS n|S d S )Nc             S   s   g | ]
}|j qS r"   )rk   )rP   xr"   r"   r#   
<listcomp>)  s    z)FieldStorage.getvalue.<locals>.<listcomp>)r7   rs   rk   )rl   rg   defaultrk   r"   r"   r#   getvalue$  s    
zFieldStorage.getvaluec             C   s4   || kr,| | }t |tr$|d jS |jS n|S d S )Nr   )r7   rs   rk   )rl   rg   r   rk   r"   r"   r#   getfirst/  s    

zFieldStorage.getfirstc             C   s:   || kr2| | }t |tr(dd |D S |jgS ng S d S )Nc             S   s   g | ]
}|j qS r"   )rk   )rP   r   r"   r"   r#   r   ?  s    z(FieldStorage.getlist.<locals>.<listcomp>)r7   rs   rk   )rl   rg   rk   r"   r"   r#   rO   :  s    

zFieldStorage.getlistc             C   s*   | j d krtdt tdd | j D S )Nznot indexablec             s   s   | ]}|j V  qd S )N)rj   )rP   r   r"   r"   r#   	<genexpr>I  s    z$FieldStorage.keys.<locals>.<genexpr>)rs   r   set)rl   r"   r"   r#   r   E  s    
zFieldStorage.keysc                s*   | j d krtdt fdd| j D S )Nznot indexablec             3   s   | ]}|j  kV  qd S )N)rj   )rP   r   )rg   r"   r#   r   O  s    z,FieldStorage.__contains__.<locals>.<genexpr>)rs   r   any)rl   rg   r"   )rg   r#   __contains__K  s    
zFieldStorage.__contains__c             C   s   t |  S )N)rZ   r   )rl   r"   r"   r#   __len__Q  s    zFieldStorage.__len__c             C   s   | j d krtdt| j S )NzCannot be converted to bool.)rs   r   bool)rl   r"   r"   r#   __bool__U  s    
zFieldStorage.__bool__c          	   C   s   | j | j}t|ts0td| j t|jf || j	| j
}| jrT|d| j 7 }tjj|| j| j| j	| j
| j| jd}dd |D | _|   d S )Nz%s should return bytes, got %sr*   )r+   rN   r}   r0   c             S   s   g | ]\}}t ||qS r"   )r	   )rP   rg   rk   r"   r"   r#   r   g  s    z0FieldStorage.read_urlencoded.<locals>.<listcomp>)r@   r<   r   r7   r   r;   rt   ro   r=   r+   rN   r   r?   r   r   rB   rC   r}   r0   rs   
skip_lines)rl   rF   queryr"   r"   r#   r   Z  s    

zFieldStorage.read_urlencodedc             C   sT  | j }t|std|f g | _| jrftjj| j| j| j	| j
| j| j| jd}| jdd |D  | jpp| j}| j }t|tstd| jt|jf |  jt|7  _x6| d| j  kr|r| j }|  jt|7  _qW | j}|d k	r|t| j8 }x>t }	d}
x$| j }|
|7 }
| sP qW |
sBP |  jt|
7  _|	|
| j
| j |	 }d|kr|d= | jd krd n
| j| j }|| j||||||| j
| j|| j}|d k	r|d	8 }|jr|t|j8 }|d
k rtd|  j|j7  _| j| |j s@| j| j!  kr<d
kr
n nP q
W | "  d S )Nz&Invalid boundary in multipart form: %r)r+   rN   r}   r0   c             s   s   | ]\}}t ||V  qd S )N)r	   )rP   rg   rk   r"   r"   r#   r   w  s    z*FieldStorage.read_multi.<locals>.<genexpr>z%s should return bytes, got %ss   --ry   zcontent-lengthr3   r   zMax number of fields exceeded)#r   valid_boundaryr;   rs   r   r?   r   r   rB   rC   r+   rN   r}   r0   extendFieldStorageClass	__class__r@   r{   r7   r   rt   ro   r   rZ   r[   r   Zfeedr=   r(   r   r   r   r   r   )rl   rA   rB   rC   Zibr   klassZ
first_liner}   parserZhdr_textdatarM   r   partr"   r"   r#   r   l  sl    








(zFieldStorage.read_multic             C   s4   | j dkr|   |   n|   | jd d S )Nr   )r   read_binaryr   
read_linesru   r   )rl   r"   r"   r#   r     s
    

zFieldStorage.read_singlei    c             C   s   |   | _| j}|dkrxx|dkr| jt|| j}t|tsXt	d| jt
|jf |  jt|7  _|svd| _P | j| |t| }qW d S )Nr   z%s should return bytes, got %sra   )	make_fileru   r   r@   r<   minbufsizer7   r   r;   rt   ro   r   rZ   r   r&   )rl   Ztodor   r"   r"   r#   r     s    


zFieldStorage.read_binaryc             C   s@   | j rt  | _| _nt  | _| _| jr4|   n|   d S )N)r   r   ru   _FieldStorage__filer   r   read_lines_to_outerboundaryread_lines_to_eof)rl   r"   r"   r#   r     s    
zFieldStorage.read_linesc             C   sv   | j d k	rF| j  t| dkrF|  | _| j  }| j| d | _ | jrZ| j| n| j|| j	| j
 d S )Ni  )r   tellrZ   r   ru   r   r&   r   r=   r+   rN   )rl   re   r   r"   r"   r#   Z__write  s    


zFieldStorage.__writec             C   s>   x8| j d}|  jt|7  _|s,d| _P | | qW d S )Ni   ra   )r@   r{   r   rZ   r   _FieldStorage__write)rl   re   r"   r"   r#   r     s    zFieldStorage.read_lines_to_eofc       	      C   sH  d| j  }|d }d}d}d}x"| jd k	rHd| j  krB|krHn nP | jd}|  jt|7  _|t|7 }|s~d| _P |dkr|| }d}|dr|r| }||krP ||krd| _P |}|	d	rd	}|d d
 }d}nL|	drd}|d d }d}n*|	dr*d}|d d }d}nd}d}| 
||  q"W d S )Ns   --ry   Tr   i   ra      r3   s   
   
F)r   r   r@   r{   r   rZ   r   
startswithrstripendswithr   )	rl   next_boundarylast_boundaryZdelimlast_line_lfendZ_readre   strippedlineZodelimr"   r"   r#   r     sP    
$
z(FieldStorage.read_lines_to_outerboundaryc             C   s   | j r| jrd S d| j  }|d }d}xh| jd}|  jt|7  _|sRd| _P |dr|r| }||krrP ||krd| _P |d}q(W d S )Ns   --Ti   ra   r3   r   )r   r   r@   r{   r   rZ   r   r[   )rl   r   r   r   re   r   r"   r"   r#   r   #  s&    
zFieldStorage.skip_linesc             C   s&   | j rtdS tjd| jddS d S )Nzwb+zw+r%   )r+   newline)r   tempfileZTemporaryFiler+   )rl   r"   r"   r#   r   9  s    
zFieldStorage.make_file)N)N) ro   rp   rq   osrA   rm   r   r   r   rn   r   r   r   r   r   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r
   %  s>   + #

E	
2c             C   s   t d t   tjt_yNt }t  t  t| t|  t	  dd }|fdd}t d |  W n   t
  Y nX t d day&t }t  t  t| t|  W n   t
  Y nX d S )	NzContent-type: text/htmlc               S   s   t d d S )Nz,testing print_exception() -- <I>italics?</I>)execr"   r"   r"   r#   r^   l  s    ztest.<locals>.fc             S   s
   |   d S )Nr"   )r^   r"   r"   r#   gn  s    ztest.<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
   r   r   r   r   r   r   r:   )rA   formr^   r   r"   r"   r#   r   [  s4    
c          	   C   sx   | d krt  \} }}dd l}t  td ||||| | }tdtd|d d t|d f  ~d S )Nr   z+<H3>Traceback (most recent call last):</H3>z<PRE>%s<B>%s</B></PRE>r   ra   )	r4   exc_info	tracebackr   	format_tbformat_exception_onlyhtmlr   join)rt   rk   tbr   r   rs   r"   r"   r#   r     s    
c          	   C   s`   t |  }t  td td x*|D ]"}tdt|dt| |  q(W td t  d S )Nz<H3>Shell Environment:</H3>z<DL>z<DT>z<DD>z</DL>)sortedr   r   r   r   )rA   r   rg   r"   r"   r#   r     s    
"c             C   s   t |  }t  td |s&td td xb|D ]Z}tdt| d dd | | }tdttt| d	  td
tt|  q4W td t  d S )Nz<H3>Form Contents:</H3>z<P>No form fields.z<DL>z<DT>: )r]   z<i>z</i>z<DD>z</DL>)r   r   r   r   r   reprrt   )r   r   rg   rk   r"   r"   r#   r     s    
c           
   C   sj   t   t d yt } W n6 tk
rP } zt dtt| W d d }~X Y nX t t|  t   d S )Nz#<H3>Current Working Directory:</H3>zOSError:)r   r   getcwdr   r   r   str)pwdmsgr"   r"   r#   r     s    &c               C   s(   t   t d t   t tj t   d S )Nz <H3>Command Line Arguments:</H3>)r   r4   r>   r"   r"   r"   r#   r     s
    
c               C   s   t d d S )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#   r     s    'c             C   sF   t dtdd | dd} | dd} | dd	} |rB| d
d} | S )Nz1cgi.escape is deprecated, use html.escape insteadrG   )
stacklevelr*   z&amp;<z&lt;>z&gt;rW   z&quot;)r   rH   rJ   )r\   Zquoter"   r"   r#   r     s    
c             C   s(   dd l }t| trd}nd}||| S )Nr   s   ^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rer7   r   match)r\   r   Z_vb_patternr"   r"   r#   r     s
    
r   __main__)r   r   )r   r   )rI   rJ   r*   )NNNN)N)0__version__ior   r   r   Zcollections.abcr   r4   r   Zurllib.parser?   Zemail.parserr   Zemail.messager   warningsr   r   r   r   __all__r   r   r$   r    r   r)   r   r:   rA   r   r   r   r   r_   r   r	   r
   r   r   r   r   r   r   r   r   r   ro   r"   r"   r"   r#   <module>   s`   #	H


    :'
/

