o ?Og?@s^ dZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlZddlZddlZddlZgdZdadad d Zd d Zd dZddZeadadejdddfddZd1ddZddZddZ GdddZ!GdddZ"ejfd d!Z#d2d"d#Z$ejfd$d%Z%d&d'Z&d(d)Z'd*d+Z(d,d-Z)d.d/Z*e+d0kre#dSdS)3z2.6)StringIOBytesIO TextIOWrapper)MappingN) FeedParser)Message) MiniFieldStorage FieldStorageparseparse_multipart parse_headertestprint_exception print_environ print_formprint_directoryprint_argumentsprint_environ_usagecGsZ tjdtddtr ts z ttdddaWn tyYnwts%tant at|dS)Nz7cgi.log() is deprecated as of 3.10. Use logging instead) stacklevelalocale)encoding) warningswarnDeprecationWarninglogfilelogfpopenOSErrornologlogdologZallargsr%*/opt/alt/python310/lib64/python3.10/cgi.pyinitlog9s  r'cGs t||ddS)N )rwrite)Zfmtargsr%r%r&r#^sr#cGs dSNr%r$r%r%r&r!bsr!cCs datr tdatadS)Nr)rrcloser'r"r%r%r%r&closelogfs r-&c CsX |durtj}t|dr|j}nd}t|tr|j}d|vr#d|d<|ddkrt|d\}}|dkrsz#parse_multipart..)rBformatrZset_typeKeyErrorr )rErJrrQr3rNrIrPr%rUr&r s    r ccs|dddkrg|dd}|d}|dkrD|dd||dd|drD|d|d}|dkrD|dd||dd|ds(|dkrLt|}|d|}|V||d}|dddks dSdS)Nr8;r"\"r)findcountlenstrip)sendfr%r%r& _parseparams  ((   rccCs td|}|}i}|D]I}|d}|dkrX|d|}||dd}t|dkrT|d|dkrBdkrTnn|dd}|dd d d}|||<q||fS) NrY=rr8rrZz\\\r[)rc__next__r\r_lowerr^rM)linepartskeyrJpinamevaluer%r%r&r s  , r c@s>eZdZ dZdZdZdZiZdZiZ iZ ddZ ddZ dS)rNcCs ||_||_dSr+rnroselfrnror%r%r&__init__ s zMiniFieldStorage.__init__cCs d|j|jfS)NzMiniFieldStorage(%r, %r)rprrr%r%r&__repr__szMiniFieldStorage.__repr__) __name__ __module__ __qualname__filenamelisttypefile type_options dispositiondisposition_optionsrPrsrur%r%r%r&rs rc @seZdZ dddejdddddddf ddZd d Zd d Zd dZddZ ddZ ddZ ddZ d:ddZ d:ddZddZddZdd Zd!d"Zd#d$Zd%d&ZdZd'd(Zd)d*Zd+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9ZdS);r NrrLrMr.c CsL d} ||_||_| |_| |_d|vr|d} d|_| dks$| dkrPd|vr-|d} ntjddr:tjd} nd} | t d} t | }|durPdd i}|dur|i}| d kr^d |d<d |vrh|d |d<d|vrq|d|_d |vr{|d |d <n t |t tfstd||_|durtjj|_nt |tr|j|_nt|drt|dstd||_||_| |_t |tstdt|j||_d|_||_di}}d|jvrt|jd\}}||_||_ d|_!d|vr|d|_!d|_"d|vr|d|_"|j"du|_#d|jvrt|jd\}}n|js| d kr"di}}nd i}}||_||_$d|vr>|d|j|j|_%nd|_%d}d |jvriz t&|jd }Wn t'y\Ynwt(ri|t(krit'd||_)|jdurz|dkrz||_d|_*|_+d|_,|d kr|-dS|dddkr|.|||dS|/dS)Nr0r/ZHEADr7r8rsurrogateescapez content-typer4r1r2r5content-lengthz?headers must be mapping or an instance of email.message.MessagerAreadlinezfp must be file pointerz#outerboundary must be bytes, not %srzcontent-dispositionrnryz text/plainrNrrer6 z multipart/)0rGrHmax_num_fieldsr3upper qs_on_postr9rCencoderZgetpreferredencodingrr<rr TypeErrorrPr:r=rErr;rrQbytesr{rv outerboundary bytes_readlimitr r~rrnry _binary_filer} innerboundaryr>r@r?lengthrzr|doneread_urlencoded read_multi read_single)rrrErPrrFrGrHrrrQrr3methodrKZcdisprJrIZclenr%r%r&rsBs+                         zFieldStorage.__init__cCs&z|jWdStyYdSwr+)r|r,AttributeErrorrtr%r%r&__del__s  zFieldStorage.__del__cCs|Sr+r%rtr%r%r& __enter__szFieldStorage.__enter__cGs|jdSr+)r|r,)rrr*r%r%r&__exit__szFieldStorage.__exit__cCs d|j|j|jfS)NzFieldStorage(%r, %r, %r))rnryrortr%r%r&rus zFieldStorage.__repr__cCs t|Sr+)iterkeysrtr%r%r&__iter__ zFieldStorage.__iter__cCsX|dkrt||jr|jd|j}|jd|S|jdur(|j}|Sd}|S)Nror)rr|seekrArzrqr%r%r& __getattr__s    zFieldStorage.__getattr__cCs\ |jdur tdg}|jD] }|j|kr||q|s"t|t|dkr,|dS|S)N not indexabler8r)rzrrnappendrXr^)rrrkfounditemr%r%r& __getitem__s   zFieldStorage.__getitem__cCs4 ||vr||}t|trdd|DS|jS|S)NcSg|]}|jqSr%rorSxr%r%r& z)FieldStorage.getvalue..r<rzrorrrkdefaultror%r%r&getvalues zFieldStorage.getvaluecCs0 ||vr||}t|tr|djS|jS|SNrrrr%r%r&getfirst!s  zFieldStorage.getfirstcCs6 ||vr||}t|trdd|DS|jgSgS)NcSrr%rrr%r%r&r1rz(FieldStorage.getlist..r)rrrkror%r%r&rR,s zFieldStorage.getlistcCs, |jdur tdttdd|jDS)Nrcss|]}|jVqdSr+rnrSrr%r%r& ;sz$FieldStorage.keys..)rzrsetrtr%r%r&r7 zFieldStorage.keyscs, |jdur tdtfdd|jDS)Nrc3s|]}|jkVqdSr+rrrkr%r&rAsz,FieldStorage.__contains__..)rzrany)rrrkr%rr& __contains__=rzFieldStorage.__contains__cCs t|Sr+)r^rrtr%r%r&__len__C zFieldStorage.__len__cCs|jdur tdt|jS)NzCannot be converted to bool.)rzrboolrtr%r%r&__bool__Gs  zFieldStorage.__bool__c Cs |j|j}t|tstd|jt|jf||j |j }|j r+|d|j 7}t j j||j|j|j |j |j|jd}dd|D|_|dS)N%s should return bytes, got %sr.rrQrr3cSsg|] \}}t||qSr%rrSrkror%r%r&rYsz0FieldStorage.read_urlencoded..)rErArr<rr@r{rvrBrrQrrDr parse_qslrGrHrr3rz skip_lines)rrrKqueryr%r%r&rLs    zFieldStorage.read_urlencodedc CsL |j}t|std|fg|_|jr4tjj|j|j|j |j |j |j |j d}|jdd|D|jp9|j}|j}t|tsPtd|jt|jf|jt|7_|d|jkr}|r}|j}|jt|7_|d|jkr}|sd|j }|dur|t|j8} t} d} |j} | | 7} | snq| sn||jt| 7_| | |j |j | } d | vr| d =|jdurdn|j|j} ||j| ||||| |j |j ||j }|dur|d 8}|jr|t|j8}|d krtd |j|j7_|j||j s|j|j!krd krnnnq|"dS) Nz&Invalid boundary in multipart form: %rrcss|] \}}t||VqdSr+rrr%r%r&risz*FieldStorage.read_multi..r--Trrr8rzMax number of fields exceeded)#rvalid_boundaryr@rzrrDr rrGrHrrQrr3extendFieldStorageClass __class__rErr<rr{rvrr^r_rZfeedrBr,rrrrr)rrrFrGrHZibrklassZ first_linerparserZhdr_textdatarPrpartr%r%r&r^s        ( $zFieldStorage.read_multicCs6 |jdkr||n||jddSr)r read_binaryr read_linesr|rrtr%r%r&rs   zFieldStorage.read_singlei cCs ||_|j}|dkrN|dkrP|jt||j}t|ts,t d|jt |j f|j t |7_ |sitalics?)execr%r%r%r&rb^rztest..fcSs |dSr+r%)rbr%r%r&g`s ztest..gz9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

2) printr9stdoutstderrr rrrrrrr?)rFformrbrr%r%r&r Ms6   r c Csx|dur t\}}}ddl}ttd||||||}tdtd|ddt|df~dS)Nrz+

Traceback (most recent call last):

z
%s%s
rre) r9exc_info tracebackr format_tbformat_exception_onlyhtmlescapejoin)r{rotbrrrzr%r%r&rts   rc Cs^ t|}ttdtd|D]}tdt|dt||qtdtdS)Nz

Shell Environment:





)sortedrrrr)rFrrkr%r%r&rs   rcCs t|}ttd|stdtd|D]-}tdt|ddd||}tdttt|d td tt|qtd tdS) Nz

Form Contents:

z

No form fields.rr: )razzrr)rrrrrreprr{)rrrkror%r%r&rs  rc Csn ttdzt}Wnty*}ztdtt|WYd}~n d}~wwtt|tdS)Nz#

Current Working Directory:

zOSError:)rrgetcwdr rrstr)pwdmsgr%r%r&rs   rcCs(ttdtttjtdS)Nz

Command Line Arguments:

)rr9rCr%r%r%r&rs   rcCs tddS)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
)rr%r%r%r&rrrcCs(ddl}t|tr d}nd}|||S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rer<rmatch)r`rZ _vb_patternr%r%r&rs   r__main__)rLrMr.)NNNN), __version__iorrrZcollections.abcrr9rZ urllib.parserDZ email.parserrZ email.messagerrrrr__all__rrr'r#r!r-r"r?rFr r rcr rr r rrrrrrrrvr%r%r%r&sZ    %  F : '  /