f dZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlZddlZddlZddlZgdZejed d adad Zd Zd ZdZeadadejdddfdZd#dZ dZ!dZ"GddZ#GddZ$ejfdZ%d$dZ&ejfdZ'dZ(dZ)dZ*d Z+d!Z,ed"kr e%dSdS)%z2.6)StringIOBytesIO TextIOWrapper)MappingN) FeedParser)Message) MiniFieldStorage FieldStorageparseparse_multipart parse_headertestprint_exception print_environ print_formprint_directoryprint_argumentsprint_environ_usage) )removec tjdtdtr0ts) t tddan#t $rYnwxYwtstantat|dS)Nz7cgi.log() is deprecated as of 3.10. Use logging instead) stacklevelalocale)encoding) warningswarnDeprecationWarninglogfilelogfpopenOSErrornologlogdologallargss */opt/alt/python311/lib64/python3.11/cgi.pyinitlogr,As. MK$4444u #999EE    D  MMMMsA AAcH t||zdzdS)N )r#write)fmtargss r+r(r(fs%G KKD4     c dSNr)s r+r&r&js CDr2c^ datrtdatadS)Nr)r"r#closer,r'r5r2r+closelogr8ns-G   CCCr2&c< | tj}t|dr|j}nd}t |t r|j}d|vrd|d<|ddkrt|d\}}|dkrt|||S|d kr_t|d }tr|tkrtd | | |} nd } d |vr| r| dz} | |d z} n0tjddr| r| dz} | tjdz} | |d <n;d |vr |d } n.tjddrtjd} nd } | |d <tj| ||||S)Nrzlatin-1REQUEST_METHODGETPOST CONTENT_TYPEzmultipart/form-data) separator!application/x-www-form-urlencodedCONTENT_LENGTHMaximum content length exceededr QUERY_STRINGr9)rr?)sysstdinhasattrr isinstancerbufferr r intmaxlen ValueErrorreaddecodeargvurllibr parse_qs) fpenvironkeep_blank_valuesstrict_parsingr?rctypepdictclengthqss r+r r s, z Yr*;"m$$ Y w & &$) ! F**#GN$;<< u ) ) )"2u BBB B 9 9 9'"2344G D'F** !BCCC!!((22BBB W $ $ S2gn--BB Xabb\ " S2chqk!B"$ 7 " " ^ $ 8ABB< !BBB"$ < %6*2i ! I IIr2utf-8replacec0 |dd}d|}t}|| |d|d<n#t$rYnwxYwt ||||ddi|fd DS) Nboundaryasciiz multipart/form-data; boundary={}zCONTENT-LENGTHzContent-Lengthr;r=)headersrerrorsrSr?c<i|]}||Sr5)getlist).0kfss r+ z#parse_multipart..s% ) ) )Arzz!}} ) ) )r2)rNformatrset_typeKeyErrorr ) rRrWrr`r?r]rVr_res @r+r r s Z ''00H . 5 5h ? ?EiiG U $)*:$; !!      b'HV!6*i A A AB ) ) ) )b ) ) ))s A## A0/A0c#K|dddkr|dd}|d}|dkr|dd||dd|z dzrQ|d|dz}|dkr2|dd||dd|z dzQ|dkrt|}|d|}|V||d}|dddkdSdS)NrD;r"\"r)findcountlenstrip)sendfs r+ _parseparamrus BQB%3,, abbEffSkkAgg17733//!''%C2H2HHAMg&&cAg&&CAgg17733//!''%C2H2HHAMg 77a&&C dsdGggii cddG BQB%3,,,,,,r2c td|z}|}i}|D]}|d}|dkr|d|}||dzd}t |dkrP|d|dcxkrdkr7nn4|dd}|dd d d}|||<||fS) Nrk=rrDrrlz\\\rm)ru__next__rnrqlowerrpr[)linepartskeyrWpinamevalues r+r r s  d # #E ..  C E    FF3KK 66RaR5;;==&&((DacddGMMOOE5zzQ58uRy#?#?#?#?C#?#?#?#?#?ad  fd33;;E3GGE$K :r2c<eZdZ dZdZdZdZiZdZiZ iZ dZ dZ dS)r Nc$ ||_||_dSr4rrselfrrs r+__init__zMiniFieldStorage.__init__s4  r2c(d|jd|jdS)NzMiniFieldStorage(, )rrs r+__repr__zMiniFieldStorage.__repr__s.-1YYY CCr2) __name__ __module__ __qualname__filenamelisttypefile type_options dispositiondisposition_optionsr_rrr5r2r+r r seGH D D DLKG DDDDDr2r c eZdZ dddejdddddddf dZdZd Zd Zd Z d Z d Z dZ d!dZ d!dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd ZdS)"r Nr2rrZr[r9c  d} ||_||_| |_| |_d|vr|d} d|_| dks| dkrrd|vr |d} n)t jddrt jd} nd} | tj d} t| }|dd i}|=i}| d krd |d<d |vr |d |d<d|vr |d|_d |vr |d |d <n+t|ttfstd||_|t jj|_nXt|t(r |j|_n6t+|drt+|dstd||_||_| |_t|t0s$tdt3|jz||_d|_||_di}}d|jvrt=|jd\}}||_||_ d|_!d|vr |d|_!d|_"d|vr |d|_"|j"du|_#d|jvrt=|jd\}}n|js| d krdi}}nd i}}||_||_$d|vr,|d|j|j|_%nd|_%d}d |jvrM tM|jd }n#tN$rYnwxYwtPr|tPkrtOd||_)|j |dkr||_dx|_*|_+d|_,|d kr|-dS|dddkr|.|||dS|/dS)Nr<r;HEADrCrDrsurrogateescapez content-typer@r=r>rAcontent-lengthz?headers must be mapping or an instance of email.message.MessagerMreadlinezfp must be file pointerz#outerboundary must be bytes, not %srzcontent-dispositionrrz text/plainr]r2rxrB z multipart/)0rTrUmax_num_fieldsr?upper qs_on_postrErOencodergetpreferredencodingrrHrr TypeErrorr_rFrIrRrrGrr`bytesrr outerboundary bytes_readlimitr rrrr _binary_filer innerboundaryrJrLrKlengthrrdoneread_urlencoded read_multi read_single)rrRr_rrSrTrUrrr`rr?methodrYcdisprWrVclens r+rzFieldStorage.__init__Js* V!2,," w & &-.4466F U??f..((^,!"" Xa[6688:KLLBB)>@ ?G*M'((*1.*A'((")."97**,34D,E()w'(:;; 9!8999 :i&DGG M * * iDGGB'' ;GB ,C,C ; 9:::DG   -// <A"=11:;<< <* 2u DL 0 0' 5J(KLLLE5 #(  U??f DI   !*-DM M5 T\ ) )' ^(DEELE55   C6V#3#3'5EE>5E !   !&z!2!9!9$-:>+"G"GD  "%D  t| + + 4<(89::     D$-- !BCCC : $!))DJ $$ DI 7 7 7  " " " " " 3B3Z< ' ' OOG%6 G G G G G        sL L-,L-c\ |jdS#t$rYdSwxYwr4)rr7AttributeErrorrs r+__del__zFieldStorage.__del__sA  IOO         DD s  ++c|Sr4r5rs r+ __enter__zFieldStorage.__enter__s r2c8|jdSr4)rr7)rr1s r+__exit__zFieldStorage.__exit__s r2c8d|jd|jd|jdS)Nz FieldStorage(rr)rrrrs r+rzFieldStorage.__repr__s(0 4===$***6 6r2cDt|Sr4)iterkeysrs r+__iter__zFieldStorage.__iter__sDIIKK   r2c|dkrt||jrN|jd|j}|jdn|j|j}nd}|S)Nrr)rrseekrMrrs r+ __getattr__zFieldStorage.__getattr__sz 7?? && & 9  INN1   INN$$E INN1     Y "IEEE r2c |jtdg}|jD]"}|j|kr||#|st |t |dkr|dS|S)N not indexablerDr)rrrappendrirp)rr~founditems r+ __getitem__zFieldStorage.__getitem__s( 9 O,, ,I 4 4DyCd!3!3!3 3--  u::??8OLr2cp ||vr0||}t|tr d|DS|jS|S)Ncg|] }|j Sr5rrcxs r+ z)FieldStorage.getvalue..#///A///r2rHrrrr~defaultrs r+getvaluezFieldStorage.getvaluesJF $;;IE%&& #//////{"Nr2cr ||vr1||}t|tr |djS|jS|SNrrrs r+getfirstzFieldStorage.getfirst)sB/ $;;IE%&& #Qx~%{"Nr2cr ||vr1||}t|tr d|DS|jgSgS)Ncg|] }|j Sr5rrs r+rz(FieldStorage.getlist..9rr2r)rr~rs r+rbzFieldStorage.getlist4sL. $;;IE%&& %////// }$Ir2c |jtdttd|jDS)Nrc3$K|] }|jV dSr4r)rcrs r+ z$FieldStorage.keys..Cs$88d 888888r2)rrsetrs r+rzFieldStorage.keys?sB- 9 O,, ,C88di88888999r2cr |jtdtfd|jDS)Nrc3.K|]}|jkVdSr4r)rcrr~s r+rz,FieldStorage.__contains__..Is*::49#::::::r2)rrany)rr~s `r+ __contains__zFieldStorage.__contains__EsA3 9 O,, ,:::: ::::::r2cF t|Sr4)rprrs r+__len__zFieldStorage.__len__Ks.499;;r2cV|jtdt|jS)NzCannot be converted to bool.)rrboolrs r+__bool__zFieldStorage.__bool__Os' 9 :;; ;DIr2c  |j|j}t|ts+t |jdt |j||j |j }|j r |d|j zz }tj ||j|j|j |j |j|j}d|D|_|dS)N should return bytes, got r9rr`rr?c4g|]\}}t||Sr5r rcr~rs r+rz0FieldStorage.read_urlencoded..as'JJJjc5%c511JJJr2)rRrMrrHrrLrrrNrr`rrPr parse_qslrTrUrr?r skip_lines)rrYquerys r+rzFieldStorage.read_urlencodedTs9 W\\$+ & &"e$$ = $b):):<== = YYt}dk 2 2 ? ( #' 'B && &(;]4;.$.'JJKJEJJJ  r2c  |j}t|std|g|_|jrmt j|j|j|j |j |j |j |j }|jd|D|jp|j}|j}t'|t(s+t|jdt+|j|xjt1|z c_|d|jzkrZ|rX|j}|xjt1|z c_|d|jzkr|X|j }||t1|jz} t5} d} |j} | | z } | sn4| sn9|xjt1| z c_| | |j |j | } d| vr| d=|jdn|j|jz } ||j| ||||| |j |j ||j }|8|d z}|jr|t1|jz}|d krtd |xj|jz c_|j||j s|j|j!cxkrd krnnn|"dS) Nz$Invalid boundary in multipart form: rc3<K|]\}}t||VdSr4rrs r+rz*FieldStorage.read_multi..qs1RRjc5-c599RRRRRRr2r--Tr2rrDrzMax number of fields exceeded)#rvalid_boundaryrLrrrPr rrTrUrr`rr?extendFieldStorageClass __class__rRrrHrrrrrprqrfeedrNr7rrrrr)rrSrTrUibrklass first_linerparserhdr_textdatar_rparts r+rzFieldStorage.read_multifs=  b!! O*MNN N ? SL**!79Lt{#2dn+NNE I  RRERRR R R R&8$.W%%'' *e,, E $j)9)9)B)BDEE E 3z??*!!ed.@&@AAB))++J OOs: .OO!!ed.@&@AAB ,  % c$)nn ,N# \\FH w''))D zz||     OOs8}} ,OO KK t{CC D D DllnnG 7**,- J.DDZ$/1 5'2w8I' ^T^UUD)!#95"c$)nn4N!A%%$%DEEE OOt .OO I  T " " "y DOt{>>>>Q>>>>>G# H r2c |jdkr)||n||jddSr)r read_binaryr read_linesrrrs r+rzFieldStorage.read_singlesa, ;!         OO     OO    qr2i c ||_|j}|dkr|dkr|jt ||j}t|ts+t|jdt|j |xj t|z c_ |s d|_dS|j||t|z }|dkdSdSdS)Nrrrx) make_filerrrRrMminbufsizerHrrLrrrrprr/)rtodors r+rzFieldStorage.read_binarys)NN$$ { 199((w||Cdl$;$;<<!$..G$(,d1D1D&FGGG3t99, "DIE %%%c$ii'(((( 9(r2c |jrtx|_|_nt x|_|_|jr|dS|dSr4)rrr_FieldStorage__filerrread_lines_to_outerboundaryread_lines_to_eofrs r+rzFieldStorage.read_linessq>   1&-ii /DI &.jj 0DI   %  , , . . . . .  " " $ $ $ $ $r2c |j|jt|zdkrS||_|j}|j|d|_|jr|j|dS|j||j |j dS)Ni) rtellrprrrr/rrNrr`)rr|rs r+__writezFieldStorage.__writes. ; "{!!CII-44 NN,, {++-- %%%"   E IOOD ! ! ! ! ! IOODKK t{CC D D D D Dr2c |jd}|xjt|z c_|s d|_dS||X)NrDrx)rRrrrpr_FieldStorage__write)rr|s r+r zFieldStorage.read_lines_to_eofs`- 7##E**D OOs4yy (OO   LL     r2c d|jz}|dz}d}d}d} |jd|jcxkr|krnndS|jd}|xjt |z c_|t |z }|s d|_dS|dkr||z}d}|dr-|r+|}||krdS||kr d|_dS|}| d rd }|dd }d}nL| d rd }|dd}d}n(| drd}|dd}d }nd}d }| ||zM) Nrr2TrrDrrx s  F) rrrRrrrpr startswithrstripendswithr) r next_boundary last_boundarydelimlast_line_lfend_readr| strippedlineodelims r+rz(FieldStorage.read_lines_to_outerboundarys  22 %- & (z%!tz*B*B*B*BU*B*B*B*B*B7##E**D OOs4yy (OO SYY E  ~~t|u%% / #{{}} =00E=00 !DIEF}}W%% (CRCy"&u%% (CRCy"&u%% (CRCy"'"' LL$ ' ' 'M& (r2c| |jr|jrdSd|jz}|dz}d} |jd}|xjt |z c_|s d|_dS|dr-|r+|}||krdS||kr d|_dS|d})NrTrrxrDr)rrrRrrrprrq)rrrrr|rs r+rzFieldStorage.skip_linessC! TY  F 22 %-  37##E**D OOs4yy (OO  }}U##  #zz|| =00E=00 !DIE"mmE22O 3r2cr |jrtjdStjd|jdS)Nzwb+zw+r.)rnewline)rtempfile TemporaryFilerrs r+rzFieldStorage.make_file3sH .   8)%00 0)$$888 8r2r4) rrrosrSrrrrrrrrrrrbrrrrrrrrrrrrr rrrr5r2r+r r s(RCqgi $ccccJ 666 !!!                 ::: ;;;      CCCJG(((" % % % E E E0(0(0(d333,88888r2r cj tdttjt_ t }t t t|t|td}|fd}td|n#tYnxYwtdda t }t t t|t|dS#tYdSxYw)NzContent-type: text/htmlc$tddS)Nz,testing print_exception() -- italics?)execr5r2r+rtztest..ffs ? @ @ @ @ @r2c|dSr4r5)rts r+gztest..ghs ACCCCCr2z9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

2) printrEstdoutstderrr rrrrrrrK)rSformrtr(s r+rrUsT  #$$$ GGGCJ~~4g A A A     IJJJ  6777F~~4gsA7B..CADD2c |tj\}}}ddl}ttd||||||z}tdt jd|dddt j|dd~dS)Nrz+

Traceback (most recent call last):

z
rrxzz
) rEexc_info tracebackr* format_tbformat_exception_onlyhtmlescapejoin)rrtbrr0rs r+rr|s |,..eR GGG 7888   r5 ) )  * *4 7 7 8D E BGGD"I&&'''' DH     r2c ^ t|}ttdtd|D]>}tdtj|dtj||?tdtdS)Nz

Shell Environment:





)sortedrr*r3r4)rSrr~s r+rrs- ',,.. ! !D GGG '((( &MMMKK fdk#&& GCL0I0IJJJJ 'NNN GGGGGr2c N t|}ttd|stdtd|D]}tdtj|zdzd||}tdtjt t |zd ztd tjt |ztd tdS) Nz

Form Contents:

z

No form fields.r8r9: )rszzr:r;)r<rr*r3r4reprr)r-rr~rs r+rrs. $))++  D GGG #$$$ $ "### &MMM11 ft{3'''#-37777S  edk$tE{{"3"3444v=>>> ft{4;;///0000 'NNN GGGGGr2c V ttd tj}ttj|nF#t $r9}tdtjt |Yd}~nd}~wwxYwtdS)Nz#

Current Working Directory:

zOSError:)r*r#getcwdr3r4r%str)pwdmsgs r+rrs- GGG /000 ikk dk# 111 j$+c#hh//000000001 GGGGGsA B/BBcttdtttjtdS)Nz

Command Line Arguments:

)r*rErOr5r2r+rrs= GGG ,--- GGG #(OOO GGGGGr2c& 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
)r*r5r2r+rrs&C ' '''''r2cjddl}t|trd}nd}|||S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rerHrmatch)rrrI _vb_patterns r+rrs= III!U,, + 88K # ##r2__main__)rZr[r9)NNNN)- __version__iorrrcollections.abcrrEr# urllib.parserP email.parserr email.messagerr3rr!r__all__ _deprecatedrr"r#r,r(r&r8r'rKrSr r rur r r rrrrrrrrr5r2r+rUs * 0/////////###### ######!!!!!!  " " " Xf----  ###J!!!     2:cCICICICIL****6   0DDDDDDDD2p8p8p8p8p8p8p8p8l%%%%N     *              )))^$$$ zDFFFFFr2