grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf™„ã @sfdZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlZddlZddlZddd d d d d dddddg Zdadadd„Zdd„Zdd„Zdd„Zeadadejdddfdd „Zd0d d „Zd!d"„Zd#d „ZGd$d„dƒZ Gd%d„dƒZ!ejfd&d „Z"d1d'd „Z#ejfd(d„Z$d)d„Z%d*d„Z&d+d„Z'd,d„Z(d-d.„Z)e*d/k�rbe"ƒdS)2z2.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ÚcGsFtr,ts,zttdƒaWntk r*YnXts6tantat|ŽdS)NÚa)ÚlogfileÚlogfpÚopenÚOSErrorÚnologÚlogÚdolog©Zallargs©rú(/opt/alt/python38/lib64/python3.8/cgi.pyÚinitlog8sr cGst ||d¡dS)NÚ )rÚwrite)ZfmtÚargsrrrr[srcGsdS©Nrrrrrr_srcCsdatrt ¡datadS)Nr)rrÚcloser rrrrrÚcloselogcs 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 t d ƒ‚|  |¡  |¡} nd } d |krØ| rÊ| d} | |d } n*tjdd…�r| rô| d} | tjd} | |d <nÕsz#parse_multipart..)r<ÚformatrZset_typeÚKeyErrorr )r?rDr(rKr-rHrCrJrrOrr ¼s   ÿccs˜|dd…dkr”|dd…}| d¡}|dkr`| dd|¡| dd|¡dr`| d|d¡}q&|dkrpt|ƒ}|d|…}| ¡V||d…}qdS)Nr2ú;rú"ú\"é)ÚfindÚcountÚlenÚstrip)ÚsÚendÚfrrrÚ _parseparam×s  (  r^cCs¸td|ƒ}| ¡}i}|D]’}| d¡}|dkr|d|… ¡ ¡}||dd… ¡}t|ƒdkr¦|d|dkr‚dkr¦nn |dd…}| dd ¡ d d¡}|||<q||fS) NrSú=rr2rVéÿÿÿÿrTz\\ú\rU)r^Ú__next__rWrZÚlowerrYrG)ÚlineÚpartsÚkeyrDÚpÚiÚnameÚvaluerrrr ãs  ,  c@s<eZdZdZdZdZdZiZdZiZ iZ dd„Z dd„Z dS)rNcCs||_||_dSr$©rirj©ÚselfrirjrrrÚ__init__ szMiniFieldStorage.__init__cCsd|j|jfS)NzMiniFieldStorage(%r, %r)rk©rmrrrÚ__repr__szMiniFieldStorage.__repr__) Ú__name__Ú __module__Ú __qualname__ÚfilenameÚlistÚtypeÚfileÚ type_optionsÚ dispositionÚdisposition_optionsrJrnrprrrrrûsc @súeZdZdddejdddddddf dd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„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)sz)FieldStorage.getvalue..©r6rurj©rmrfÚdefaultrjrrrÚgetvalues  zFieldStorage.getvaluecCs4||kr,||}t|tƒr$|djS|jSn|SdS©Nrr¤r¥rrrÚgetfirsts   zFieldStorage.getfirstcCs:||kr2||}t|tƒr(dd„|DƒS|jgSngSdS)NcSsg|] }|j‘qSrr r¡rrrr£.sz(FieldStorage.getlist..r¤)rmrfrjrrrrL)s   zFieldStorage.getlistcCs*|jdkrtdƒ‚ttdd„|jDƒƒƒS)Nr›css|] }|jVqdSr$©ri©rMržrrrÚ 8sz$FieldStorage.keys..)rur…Úsetrorrrr—4s zFieldStorage.keyscs*|jdkrtdƒ‚t‡fdd„|jDƒƒS)Nr›c3s|]}|jˆkVqdSr$rªr«©rfrrr¬>sz,FieldStorage.__contains__..)rur…Úany)rmrfrr®rÚ __contains__:s zFieldStorage.__contains__cCs t| ¡ƒSr$)rYr—rorrrÚ__len__@szFieldStorage.__len__cCs|jdkrtdƒ‚t|jƒS)NzCannot be converted to bool.)rur…ÚboolrorrrÚ__bool__Ds zFieldStorage.__bool__c Cs–|j |j¡}t|tƒs0td|jt|ƒjfƒ‚| |j |j ¡}|j rT|d|j 7}t j j||j|j|j |j |j|jd�}dd„|Dƒ|_| ¡dS)Nú%s should return bytes, got %sr'©r(rKr€r-cSsg|]\}}t||ƒ‘qSr©r©rMrfrjrrrr£Vsz0FieldStorage.read_urlencoded..)r?r;rŒr6r†r:rvrqr<r(rKr‚r>r Ú parse_qslrArBr€r-ruÚ skip_lines)rmrEÚqueryrrrrŽIs& ÿýzFieldStorage.read_urlencodedc CsL|j}t|ƒstd|fƒ‚g|_|jrftjj|j|j|j |j |j |j |j d�}|j dd„|Dƒ¡|jpp|j}|j ¡}t|tƒsžtd|jt|ƒjfƒ‚|jt|ƒ7_| ¡d|jkrä|rä|j ¡}|jt|ƒ7_q°|j }|dk �r|t|jƒ8}tƒ} d} |j ¡} | | 7} |  ¡�s �q0�q | �s:�q@|jt| ƒ7_|  |  |j |j ¡¡|  ¡} d| k�rz| d=|jdk�rŠdn |j|j} ||j| ||||| |j |j ||j ƒ }|dk �rô|d 8}|j�râ|t|jƒ8}|d k�rôtd ƒ‚|j|j7_|j |¡|j �s@|j|j!k�r4d k�rnn�q@�q| "¡dS) Nz&Invalid boundary in multipart form: %rrµcss|]\}}t||ƒVqdSr$r¶r·rrrr¬fsz*FieldStorage.read_multi..r´ó--r{r}r2rzMax number of fields exceeded)#r‹Úvalid_boundaryr:rur‚r>r r¸rArBr(rKr€r-ÚextendÚFieldStorageClassÚ __class__r?r~r6r†rvrqrˆrYrZrZfeedr<r%r‰rœr�rŒr¹)rmr@rArBZibrºÚklassZ first_liner€ÚparserZhdr_textÚdatarJr‰Úpartrrrr�[s‚ý   ÿÿ      ÿþ   (zFieldStorage.read_multicCs4|jdkr| ¡| ¡n| ¡|j d¡dSr¨)rŒÚ read_binaryr¹Ú read_linesrwr™rorrrr� s   zFieldStorage.read_singlei cCs’| ¡|_|j}|dkrŽ|dkrŽ|j t||jƒ¡}t|tƒsVt d|jt |ƒj fƒ‚|j t |ƒ7_ |std|_qŽ|j |¡|t |ƒ}qdS)Nrr´r`)Ú make_filerwrŒr?r;ÚminÚbufsizer6r†r:rvrqrˆrYr�r")rmZtodorÂrrrrÄ«s  ÿ zFieldStorage.read_binarycCs@|jrtƒ|_|_ntƒ|_|_|jr4| ¡n| ¡dSr$)rŠrrwÚ_FieldStorage__filerr‡Úread_lines_to_outerboundaryÚread_lines_to_eofrorrrrżs  zFieldStorage.read_linescCsv|jdk rF|j ¡t|ƒdkrF| ¡|_|j ¡}|j |¡d|_|jrZ|j |¡n|j | |j |j ¡¡dS)Niè) rÉÚtellrYrÆrwr§r"rŠr<r(rK)rmrdrÂrrrZ__writeÇs    zFieldStorage.__writecCs:|j d¡}|jt|ƒ7_|s*d|_q6| |¡qdS)Nér`)r?r~rˆrYr�Ú_FieldStorage__write)rmrdrrrrËÖs  zFieldStorage.read_lines_to_eofc CsJd|j}|d}d}d}d}|jdk rFd|jkr>|krFnn�qF|j d¡}|jt|ƒ7_|t|ƒ7}|s~d|_�qF|dkr’||}d}| d¡rÆ|rÆ| ¡}||kr´�qF||krÆd|_�qF|}|  d ¡rêd }|dd …}d}nL|  d ¡�r d }|dd…}d}n*|  d¡�r.d}|dd…}d }nd}d }|  ||¡qdS) Nr»r{TrrÍr`ó r2s éþÿÿÿó F) r‡r‰r?r~rˆrYr�Ú startswithÚrstripÚendswithrÎ) rmÚ next_boundaryÚ last_boundaryZdelimÚlast_line_lfendZ_readrdÚ strippedlineZodelimrrrrÊàsN $        z(FieldStorage.read_lines_to_outerboundarycCs�|jr |jrdSd|j}|d}d}|j d¡}|jt|ƒ7_|sPd|_qŒ| d¡r€|r€| ¡}||krpqŒ||kr€d|_qŒ| d¡}q&dS)Nr»TrÍr`r2rÑ)r‡r�r?r~rˆrYrÔrZ)rmrÕrÖr×rdrØrrrr¹s$   zFieldStorage.skip_linescCs&|jrt d¡Stjd|jdd�SdS)Nzwb+zw+r!)r(Únewline)rŠÚtempfileZ TemporaryFiler(rorrrrÆ(s  ÿzFieldStorage.make_file)N)N) rqrrrsÚosr@rnr“r”r•rpr˜ršrŸr§r©rLr—r°r±r³rŽr¾r�r�rÈrÄrÅrÎrËrÊr¹rÆrrrrr sJ+ý &   E   2cCsÂtdƒtƒtjt_zNtƒ}tƒtƒt|ƒt|ƒt ƒdd„}|fdd„}tdƒ|ƒWnt ƒYnXtdƒda z&tƒ}tƒtƒt|ƒt|ƒWnt ƒYnXdS) NzContent-type: text/htmlcSs tdƒdS)Nz,testing print_exception() -- italics?)Úexecrrrrr][sztest..fcSs |ƒdSr$r)r]rrrÚg]sztest..gz9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

é2) Úprintr3ÚstdoutÚstderrr rrrrrrr9)r@Úformr]rÝrrrr Js4    c Csx|dkrt ¡\}}}ddl}tƒtdƒ| ||¡| ||¡}tdt d |dd…¡¡t |d¡fƒ~dS)Nrz+

Traceback (most recent call last):

z
%s%s
rr`) r3Úexc_infoÚ tracebackrßÚ format_tbÚformat_exception_onlyÚhtmlÚescapeÚjoin)rvrjÚtbr‰rärurrrrqs  ÿ þc Cs\t| ¡ƒ}tƒtdƒtdƒ|D]"}tdt |¡dt ||¡ƒq&tdƒtƒdS)Nz

Shell Environment:

ú
ú
ú
ú
)Úsortedr—rßrçrè)r@r—rfrrrrs  cCs t| ¡ƒ}tƒtdƒ|s&tdƒtdƒ|D]Z}tdt |¡ddd�||}tdt tt|ƒƒ¡d ƒtd t t|ƒ¡ƒq2td ƒtƒdS) Nz

Form Contents:

z

No form fields.rërìú:ú )r\zzrírî)rïr—rßrçrèÚreprrv)râr—rfrjrrrrŠs c Csjtƒtdƒz t ¡}Wn6tk rP}ztdt t|ƒ¡ƒW5d}~XYnXtt |¡ƒtƒdS)Nz#

Current Working Directory:

zOSError:)rßrÛÚgetcwdrrçrèÚstr)ÚpwdÚmsgrrrršs &cCs(tƒtdƒtƒttjƒtƒdS)Nz

Command Line Arguments:

)rßr3r=rrrrr¦s  cCs tdƒdS)NaØ

These environment variables could have been set:

  • AUTH_TYPE
  • CONTENT_LENGTH
  • CONTENT_TYPE
  • DATE_GMT
  • DATE_LOCAL
  • DOCUMENT_NAME
  • DOCUMENT_ROOT
  • DOCUMENT_URI
  • GATEWAY_INTERFACE
  • LAST_MODIFIED
  • PATH
  • PATH_INFO
  • PATH_TRANSLATED
  • QUERY_STRING
  • REMOTE_ADDR
  • REMOTE_HOST
  • REMOTE_IDENT
  • REMOTE_USER
  • REQUEST_METHOD
  • SCRIPT_NAME
  • SERVER_NAME
  • SERVER_PORT
  • SERVER_PROTOCOL
  • SERVER_ROOT
  • SERVER_SOFTWARE
In addition, HTTP headers sent by the server may be passed in the environment as well. Here are some common variable names:
  • HTTP_ACCEPT
  • HTTP_CONNECTION
  • HTTP_HOST
  • HTTP_PRAGMA
  • HTTP_REFERER
  • HTTP_USER_AGENT
)rßrrrrr­scCs(ddl}t|tƒrd}nd}| ||¡S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)Úrer6r†Úmatch)r[r÷Z _vb_patternrrrr¼Üs  r¼Ú__main__)rFrGr')NNNN)+Ú __version__ÚiorrrZcollections.abcrr3rÛZ urllib.parser>Z email.parserrZ email.messagerrçr„rÚÚ__all__rrr rrr&rr9r@r r r^r rr r rrrrrrr¼rqrrrrÚsf   ý# ÿ F  :'   /