
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a™„  ã                   @   sf  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ZddlZddlZ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d0d d
„Zd!d"„ Zd#d„ ZG d$d„ dƒZ G d%d„ dƒZ!ejfd&d„Z"d1d'd„Z#ejfd(d„Z$d)d„ Z%d*d„ Z&d+d„ Z'd,d„ Z(d-d.„ Z)e*d/k�rbe"ƒ  dS )2z2.6é    )ÚStringIOÚBytesIOÚTextIOWrapper)ÚMappingN)Ú
FeedParser)ÚMessageÚMiniFieldStorageÚFieldStorageÚparseÚparse_multipartÚparse_headerÚtestÚprint_exceptionÚprint_environÚ
print_formÚprint_directoryÚprint_argumentsÚprint_environ_usageÚ c                  G   sF   t r,ts,z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©Zallargs© r   ú(/opt/alt/python38/lib64/python3.8/cgi.pyÚinitlog8   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   _   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   Úcloselogc   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r²t	|d
 ƒ}t
r |t
kr t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)Ú	separatorú!application/x-www-form-urlencodedÚCONTENT_LENGTHúMaximum content length exceededr   ÚQUERY_STRINGr'   é   )r(   r-   )ÚsysÚstdinÚhasattrr(   Ú
isinstancer   Úbufferr   r   ÚintÚmaxlenÚ
ValueErrorÚreadÚdecodeÚargvÚurllibr
   Zparse_qs)
ÚfpÚenvironÚkeep_blank_valuesÚstrict_parsingr-   r(   ÚctypeÚpdictZclengthÚqsr   r   r   r
   v   sL    

  


 ÿúutf-8Úreplacec                    sx   |d   d¡}d |¡}tƒ }| |¡ z|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(   Úerrorsr@   r-   c                    s   i | ]}|ˆ   |¡“qS r   )Úgetlist)Ú.0Úk©Zfsr   r   Ú
<dictcomp>Õ   s      z#parse_multipart.<locals>.<dictcomp>)r<   Úformatr   Zset_typeÚKeyErrorr	   )r?   rD   r(   rK   r-   rH   rC   rJ   r   rO   r   r   ¼   s    


 ÿc                 c   s˜   | d d… dkr”| dd … } |   d¡}|dkr`|  dd|¡|  dd|¡ d r`|   d|d ¡}q&|dk rpt| ƒ}| d |… }| ¡ V  | |d … } q d S )Nr2   ú;r   ú"ú\"é   )ÚfindÚcountÚlenÚstrip)ÚsÚendÚfr   r   r   Ú_parseparam×   s    
(
r^   c                 C   s¸   t d|  ƒ}| ¡ }i }|D ]’}| d¡}|dkr|d |…  ¡  ¡ }||d d …  ¡ }t|ƒdkr¦|d |d   kr‚dkr¦n n |dd… }| dd	¡ d
d¡}|||< q||fS )NrS   ú=r   r2   rV   éÿÿÿÿrT   z\\ú\rU   )r^   Ú__next__rW   rZ   ÚlowerrY   rG   )ÚlineÚpartsÚkeyrD   Ú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 r$   ©ri   rj   ©Úselfri   rj   r   r   r   Ú__init__	  s    zMiniFieldStorage.__init__c                 C   s   d| j | jf S )NzMiniFieldStorage(%r, %r)rk   ©rm   r   r   r   Ú__repr__  s    zMiniFieldStorage.__repr__)Ú__name__Ú
__module__Ú__qualname__ÚfilenameÚlistÚtypeÚfileÚtype_optionsÚdispositionÚdisposition_optionsrJ   rn   rp   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   rF   rG   r'   c                 C   sZ  d}|| _ || _|
| _|| _d|kr0|d  ¡ }d | _|dksF|dkržd|krX|d }ntjdd … rrtjd }nd}| t	 
¡ d¡}t|ƒ}|d krždd	i}|d kröi }|d
krºd	|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ƒ�s�tdt|ƒj ƒ‚|| _d| _|| _di  }}d| jk�rÊt| 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�räzt&| jd ƒ}W n t'k
�rÊ   Y nX t(�rä|t(k�rät'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HEADr1   r2   r   Úsurrogateescapezcontent-typer.   r+   r,   r/   ú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-dispositionri   rt   z
text/plainrH   r{   r`   r0   é
   z
multipart/)0rA   rB   Úmax_num_fieldsr-   ÚupperÚ
qs_on_postr3   r=   ÚencodeÚlocaleZgetpreferredencodingr   r6   r   r   Ú	TypeErrorrJ   r4   r7   r?   r   r5   r(   rK   Úbytesrv   rq   ÚouterboundaryÚ
bytes_readÚlimitr   ry   rz   ri   rt   Ú_binary_filerx   Úinnerboundaryr8   r:   r9   Úlengthru   rw   ÚdoneÚread_urlencodedÚ
read_multiÚread_single)rm   r?   rJ   r‡   r@   rA   rB   r‰   r(   rK   r€   r-   ÚmethodrE   ZcdisprD   rC   Zclenr   r   r   rn   ?  s¶    /
ÿ


ÿ






ÿ

zFieldStorage.__init__c                 C   s(   z| j  ¡  W n tk
r"   Y nX d S r$   )rw   r%   ÚAttributeErrorro   r   r   r   Ú__del__ä  s    zFieldStorage.__del__c                 C   s   | S r$   r   ro   r   r   r   Ú	__enter__ê  s    zFieldStorage.__enter__c                 G   s   | j  ¡  d S r$   )rw   r%   )rm   r#   r   r   r   Ú__exit__í  s    zFieldStorage.__exit__c                 C   s   d| j | j| jf S )NzFieldStorage(%r, %r, %r))ri   rt   rj   ro   r   r   r   rp   ð  s
      ÿzFieldStorage.__repr__c                 C   s   t |  ¡ ƒS r$   )ÚiterÚkeysro   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 )Nrj   r   )r’   rw   Úseekr;   ru   rl   r   r   r   Ú__getattr__ø  s    

zFieldStorage.__getattr__c                 C   s^   | j d krtdƒ‚g }| j D ]}|j|kr| |¡ q|sBt|ƒ‚t|ƒdkrV|d S |S d S )Núnot indexabler2   r   )ru   r…   ri   ÚappendrR   rY   )rm   rf   Ú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   ©rj   ©rM   Úxr   r   r   Ú
<listcomp>  s     z)FieldStorage.getvalue.<locals>.<listcomp>©r6   ru   rj   ©rm   rf   Údefaultrj   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   r¤   r¥   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   r    r¡   r   r   r   r£   .  s     z(FieldStorage.getlist.<locals>.<listcomp>r¤   )rm   rf   rj   r   r   r   rL   )  s    

zFieldStorage.getlistc                 C   s*   | j d krtdƒ‚t tdd„ | j D ƒƒƒS )Nr›   c                 s   s   | ]}|j V  qd S r$   ©ri   ©rM   rž   r   r   r   Ú	<genexpr>8  s     z$FieldStorage.keys.<locals>.<genexpr>)ru   r…   Úsetro   r   r   r   r—   4  s    
zFieldStorage.keysc                    s*   | j d krtdƒ‚t‡ fdd„| j D ƒƒS )Nr›   c                 3   s   | ]}|j ˆ kV  qd S r$   rª   r«   ©rf   r   r   r¬   >  s     z,FieldStorage.__contains__.<locals>.<genexpr>)ru   r…   Úany)rm   rf   r   r®   r   Ú__contains__:  s    
zFieldStorage.__contains__c                 C   s   t |  ¡ ƒS r$   )rY   r—   ro   r   r   r   Ú__len__@  s    zFieldStorage.__len__c                 C   s   | j d krtdƒ‚t| j ƒS )NzCannot be converted to bool.)ru   r…   Úboolro   r   r   r   Ú__bool__D  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 )Nú%s should return bytes, got %sr'   ©r(   rK   r€   r-   c                 S   s   g | ]\}}t ||ƒ‘qS r   ©r   ©rM   rf   rj   r   r   r   r£   V  s     z0FieldStorage.read_urlencoded.<locals>.<listcomp>)r?   r;   rŒ   r6   r†   r:   rv   rq   r<   r(   rK   r‚   r>   r
   Ú	parse_qslrA   rB   r€   r-   ru   Ú
skip_lines)rm   rE   Úqueryr   r   r   rŽ   I  s&    
ÿ    ýzFieldStorage.read_urlencodedc                 C   sL  | 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ƒsžtd| jt|ƒjf ƒ‚|  jt|ƒ7  _| ¡ d| j  krä|rä| j ¡ }|  jt|ƒ7  _q°| j}|d k	�r|t| jƒ8 }tƒ }	d}
| j ¡ }|
|7 }
| ¡ �s�q0�q|
�s:�q@|  jt|
ƒ7  _|	 |
 | j
| j¡¡ |	 ¡ }d|k�rz|d= | jd k�rŠd n
| j| j }|| j||||||| j
| j|| jƒ}|d k	�rô|d	8 }|j�râ|t|jƒ8 }|d
k �rôtdƒ‚|  j|j7  _| j |¡ |j �s@| j| j!  k�r4d
k�rn n�q@�q|  "¡  d S )Nz&Invalid boundary in multipart form: %rrµ   c                 s   s   | ]\}}t ||ƒV  qd S r$   r¶   r·   r   r   r   r¬   f  s     z*FieldStorage.read_multi.<locals>.<genexpr>r´   ó   --r{   r}   r2   r   zMax number of fields exceeded)#r‹   Úvalid_boundaryr:   ru   r‚   r>   r
   r¸   rA   rB   r(   rK   r€   r-   ÚextendÚFieldStorageClassÚ	__class__r?   r~   r6   r†   rv   rq   rˆ   rY   rZ   r   Zfeedr<   r%   r‰   rœ   r�   rŒ   r¹   )rm   r@   rA   rB   Zibrº   ÚklassZ
first_liner€   ÚparserZhdr_textÚdatarJ   r‰   Úpartr   r   r   r�   [  s‚        ý

ÿÿ





ÿ    þ

(zFieldStorage.read_multic                 C   s4   | j dkr|  ¡  |  ¡  n|  ¡  | j d¡ d S r¨   )rŒ   Úread_binaryr¹   Ú
read_linesrw   r™   ro   r   r   r   r�      s
    

zFieldStorage.read_singlei    c                 C   s’   |   ¡ | _| j}|dkrŽ|dkrŽ| j t|| jƒ¡}t|tƒsVt	d| jt
|ƒjf ƒ‚|  jt|ƒ7  _|std| _qŽ| j |¡ |t|ƒ }qd S )Nr   r´   r`   )Ú	make_filerw   rŒ   r?   r;   ÚminÚbufsizer6   r†   r:   rv   rq   rˆ   rY   r�   r"   )rm   ZtodorÂ   r   r   r   rÄ   «  s    

ÿzFieldStorage.read_binaryc                 C   s@   | j rtƒ  | _| _ntƒ  | _| _| jr4|  ¡  n|  ¡  d S r$   )rŠ   r   rw   Ú_FieldStorage__filer   r‡   Úread_lines_to_outerboundaryÚread_lines_to_eofro   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É   ÚtellrY   rÆ   rw   r§   r"   rŠ   r<   r(   rK   )rm   rd   rÂ   r   r   r   Z__writeÇ  s    


zFieldStorage.__writec                 C   s:   | j  d¡}|  jt|ƒ7  _|s*d| _q6|  |¡ q d S )Né   r`   )r?   r~   rˆ   rY   r�   Ú_FieldStorage__write)rm   rd   r   r   r   rË   Ö  s    zFieldStorage.read_lines_to_eofc           	      C   sJ  d| j  }|d }d}d}d}| jd k	rFd| j  kr>|krFn n�qF| j d¡}|  jt|ƒ7  _|t|ƒ7 }|s~d| _�qF|dkr’|| }d}| d¡rÆ|rÆ| ¡ }||kr´�qF||krÆd| _�qF|}| 	d	¡rêd	}|d d
… }d}nL| 	d¡�rd}|d d… }d}n*| 	d¡�r.d}|d d… }d}nd}d}|  
|| ¡ qd S )Nr»   r{   Tr   rÍ   r`   ó   r2   s   
éþÿÿÿó   
F)r‡   r‰   r?   r~   rˆ   rY   r�   Ú
startswithÚrstripÚendswithrÎ   )	rm   Únext_boundaryÚlast_boundaryZdelimÚlast_line_lfendZ_readrd   ÚstrippedlineZodelimr   r   r   rÊ   à  sN    
$
z(FieldStorage.read_lines_to_outerboundaryc                 C   s�   | j r| jrd S d| j  }|d }d}| j d¡}|  jt|ƒ7  _|sPd| _qŒ| d¡r€|r€| ¡ }||krpqŒ||kr€d| _qŒ| d¡}q&d S )Nr»   TrÍ   r`   r2   rÑ   )r‡   r�   r?   r~   rˆ   rY   rÔ   rZ   )rm   rÕ   rÖ   r×   rd   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(   ro   r   r   r   rÆ   (  s    
 ÿzFieldStorage.make_file)N)N) rq   rr   rs   Úosr@   rn   r“   r”   r•   rp   r˜   rš   rŸ   r§   r©   rL   r—   r°   r±   r³   rŽ   r¾   r�   r�   rÈ   rÄ   rÅ   rÎ   rË   rÊ   r¹   rÆ   r   r   r   r   r	     sJ   +     ý
 &

E	
2c                 C   sÂ   t dƒ t ƒ  tjt_zNtƒ }tƒ  tƒ  t|ƒ t| ƒ t	ƒ  dd„ }|fdd„}t dƒ |ƒ  W n   t
ƒ  Y nX t dƒ daz&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]   [  s    ztest.<locals>.fc                 S   s
   | ƒ  d S r$   r   )r]   r   r   r   Úg]  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   )Úprintr3   ÚstdoutÚstderrr	   r   r   r   r   r   r   r9   )r@   Úformr]   rÝ   r   r   r   r   J  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   r`   )	r3   Úexc_infoÚ	tracebackrß   Ú	format_tbÚformat_exception_onlyÚhtmlÚescapeÚjoin)rv   rj   Útbr‰   rä   ru   r   r   r   r   q  s    

ÿþc              	   C   s\   t |  ¡ ƒ}tƒ  tdƒ tdƒ |D ]"}tdt |¡dt | | ¡ƒ q&tdƒ tƒ  d S )Nz<H3>Shell Environment:</H3>ú<DL>ú<DT>ú<DD>ú</DL>)Úsortedr—   rß   rç   rè   )r@   r—   rf   r   r   r   r     s     c                 C   s    t |  ¡ ƒ}tƒ  tdƒ |s&tdƒ tdƒ |D ]Z}tdt |¡ d dd� | | }tdt tt|ƒƒ¡ d	 ƒ td
t t|ƒ¡ ƒ q2tdƒ tƒ  d S )Nz<H3>Form Contents:</H3>z<P>No form fields.rë   rì   ú:ú )r\   z<i>z</i>rí   rî   )rï   r—   rß   rç   rè   Úreprrv   )râ   r—   rf   rj   r   r   r   r   Š  s    c               
   C   sj   t ƒ  t dƒ zt ¡ } W n6 tk
rP } zt dt t|ƒ¡ƒ W 5 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ß   r3   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   s(   dd l }t| tƒrd}nd}| || ¡S )Nr   s   ^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)Úrer6   r†   Úmatch)r[   r÷   Z_vb_patternr   r   r   r¼   Ü  s
    
r¼   Ú__main__)rF   rG   r'   )NNNN)+Ú__version__Úior   r   r   Zcollections.abcr   r3   rÛ   Zurllib.parser>   Zemail.parserr   Zemail.messager   rç   r„   rÚ   Ú__all__r   r   r    r   r   r&   r   r9   r@   r
   r   r^   r   r   r	   r   r   r   r   r   r   r   r¼   rq   r   r   r   r   Ú<module>   sf        ý#	 ÿ
F
    :'
/
