]Č@sIdZddlmZmZmZddlmZddlZddlZddl Z ddl m Z ddl mZddlmZddlZddlZddlZdd d d d d ddddddddgZdadaddZddZddZddZeadadejdddd Zddd d Zddd!d Z d"d Z!d#d$Z"d%dZ#Gd&ddZ$Gd'd d Z%ejd(d)Z&ddddd*dZ'ejd+dZ(d,dZ)d-dZ*d.dZ+d/dZ,dd0dZ-d1d2Z.e/d3krEe&dS)4z2.6)StringIOBytesIO TextIOWrapper)MappingN) FeedParser)Message)warnMiniFieldStorage FieldStorageparseparse_qs parse_qslparse_multipart parse_headerprint_exception print_environ print_formprint_directoryprint_argumentsprint_environ_usageescapec GsXtr5t r5yttdaWntk r4YnXtsDtantat|dS)Na)logfilelogfpopenOSErrornologlogdolog)allargsr!(/opt/alt/python35/lib64/python3.5/cgi.pyinitlog:s   r#cGstj||ddS)N )rwrite)fmtargsr!r!r"r]srcGsdS)Nr!)r r!r!r"rasrcCs&datrtjdatadS)Nr)rrcloser#rr!r!r!r"closeloges  r)c Cs|dkrtj}t|dr0|j}nd}t|trN|j}d|krdd|d<|ddkrlt|d\}}|dkrt||S|dkrt |d }t r|t krt d |j |j |}nd }d |kr+|r|d }||d }n4tjddr_|rN|d }|tjd}||d r r )rFrArBr!r!r"r s cCs&tdtdtjj|||S)Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrG)rrHr>r r )rFrArBr!r!r"r s c Csddl}d}d|kr(|d}t|sGtd|fd|}d|d}i}d}x!||krd}d} |r|jj|} | jd} | ryt| }Wntk rYnX|dkrtr|tkrtd|j|} nd} g} xX|j } | s<|}P| j drj| j }|||fkrjP| j | q#W| dkrqn|dkr| r| d} | ddd kr| dd} n&| ddd kr| dd} | | dgs z)FieldStorage.getvalue..)r6rxrp)rqr\defaultrpr!r!r"getvaluebs    zFieldStorage.getvaluecCsB||kr:||}t|tr0|djS|jSn|SdS)Nr)r6rxrp)rqr\rrpr!r!r"getfirstms     zFieldStorage.getfirstcCsK||krC||}t|tr6dd|DS|jgSngSdS)NcSsg|]}|jqSr!)rp)rrr!r!r"r}s z(FieldStorage.getlist..)r6rxrp)rqr\rpr!r!r"getlistxs    zFieldStorage.getlistcCs;|jdkrtdttdd|jDS)Nz not indexablecss|]}|jVqdS)N)rK)rrr!r!r" sz$FieldStorage.keys..)rxrset)rqr!r!r"rs zFieldStorage.keyscs;|jdkrtdtfdd|jDS)Nz not indexablec3s|]}|jkVqdS)N)rK)rr)r\r!r"rsz,FieldStorage.__contains__..)rxrany)rqr\r!)r\r" __contains__s zFieldStorage.__contains__cCst|jS)N)rbr)rqr!r!r"__len__szFieldStorage.__len__cCs(|jdkrtdt|jS)NzCannot be converted to bool.)rxrbool)rqr!r!r"__bool__s zFieldStorage.__bool__cCs|jj|j}t|tsFtd|jt|jf|j|j |j }|j rx|d|j 7}g|_ t jj||j|jd|j d|j }x-|D]%\}}|j jt||qW|jdS)Nz%s should return bytes, got %sr1r*r)r?r;rr6rWr:ryrtr<r*rrrxr>r r rArBrTr skip_lines)rqrFqueryr\rpr!r!r"rs   zFieldStorage.read_urlencodedc Cs~|j}t|s(td|fg|_|jrtjj|j|j|j d|j d|j }x-|D]%\}}|jj t ||qtW|jp|j}|jj} t| tstd|jt| jf|jt| 7_xG| jd|jkrM| rM|jj} |jt| 7_qWxt} d} x*|jj} | | 7} | jscPqcW| sP|jt| 7_| j| j|j |j | j} d| kr| d=||j| |||||j|j|j |j }|j|j7_|jj ||jsk|j|jkofdknrQPqQW|j dS) Nz&Invalid boundary in multipart form: %rr*rz%s should return bytes, got %ss--rIzcontent-lengthr)!rrNr:rxrr>r r rArBr*rrTr FieldStorageClass __class__r?rQr6rWryrtrrbrcrZfeedr<r(rrrr)rqr@rArBZibrr\rpklassZ first_lineparserZhdr_textrXrYpartr!r!r"rsV          +zFieldStorage.read_multicCsD|jdkr&|j|jn |j|jjddS)Nr)r read_binaryr read_linesrzr)rqr!r!r"rs    zFieldStorage.read_singleicCs|j|_|j}|dkrx|dkr|jjt||j}t|tst d|jt |j f|j t |7_ |sd|_P|jj||t |}q'WdS)Nrz%s should return bytes, got %sr2rL) make_filerzrr?r;minbufsizer6rWr:ryrtrrbrr%)rqZtodorXr!r!r"rs   zFieldStorage.read_binarycCsV|jrt|_|_nt|_|_|jrH|jn |jdS)N)rrrz_FieldStorage__filerrread_lines_to_outerboundaryread_lines_to_eof)rqr!r!r"rs    zFieldStorage.read_linescCs|jdk re|jjt|dkre|j|_|jj}|jj|d|_|jr|jj|n"|jj|j|j |j dS)Ni) rtellrbrrzrr%rr<r*r)rqr[rXr!r!r"Z__writes  zFieldStorage.__writecCsOxH|jjd}|jt|7_|s:d|_P|j|qWdS)Nr2irL)r?rQrrbr_FieldStorage__write)rqr[r!r!r"rs zFieldStorage.read_lines_to_eofc Csd|j}|d}d}d}d}xh||jkr<P|jjd }|jt|7_|t|7}|sd |_P|dkr||}d}|jdr|r|j}||krP||krd|_P|}|j drd}|dd}d}nh|j d rEd }|dd}d}n:|j drsd}|dd}d }n d}d }|j ||q,WdS)Ns--rITrr2rs s rGs FirLrMrLrL) rrr?rQrrbrrRrSendswithr) rq next_boundary last_boundarydelimlast_line_lfend_readr[ strippedlineZodelimr!r!r"r!sP            z(FieldStorage.read_lines_to_outerboundarycCs|j s|jrdSd|j}|d}d}x|jjd}|jt|7_|snd|_P|jdr|r|j}||krP||krd|_P|jd}q7WdS)Ns--Tr2rs irL)rrr?rQrrbrrc)rqrrrr[rr!r!r"rRs&       zFieldStorage.skip_linescCs6|jrtjdStjdd|jddSdS)Nzwb+zw+r*newliner$)rtempfile TemporaryFiler*)rqr!r!r"rhs   zFieldStorage.make_filei ) rtrurvosr@rrrrrrsrrrrrrrrrrrrrrrrrrrrrrr!r!r!r"r js: +               6    1 cCstdttjt_ybt}ttt|t|t dd}|dd}td|Wnt YnXtdda y/t}ttt|t|Wnt YnXdS) NzContent-type: text/htmlcSstddS)Nz,testing print_exception() -- italics?)execr!r!r!r"rfsztest..fcSs |dS)Nr!)rfr!r!r"gsztest..gz9

What follows is a test, not an actual exception:

z*

Second try with a small maxlen...

2) printr3stdoutstderrr rrrrrrr9)r@formrfrr!r!r"tests4            rcCs|dkr!tj\}}}ddl}ttd|j|||j||}tdtjdj|ddtj|df~dS)Nrz+

Traceback (most recent call last):

z
%s%s
rr2rLrL) r3exc_info tracebackr format_tbformat_exception_onlyhtmlrrU)ryrptbrrrxr!r!r"rs   cCs|t|j}ttdtdx7|D]/}tdtj|dtj||q4WtdtdS)Nz

Shell Environment:

z
z
z
z
)sortedrrrr)r@rr\r!r!r"rs   - cCst|j}ttd|s3tdtdx}|D]u}tdtj|ddd||}tdtjtt|d td tjt|qDWtd tdS) Nz

Form Contents:

z

No form fields.z

z
:re zzz
z
)rrrrrreprry)rrr\rpr!r!r"rs    ! '! cCsttdytj}WnAtk rd}z!tdtjt|WYdd}~XnXttj|tdS)Nz#

Current Working Directory:

zOSError:)rrgetcwdrrrstr)pwdmsgr!r!r"rs /cCs0ttdtttjtdS)Nz

Command Line Arguments:

)rr3r=r!r!r!r"rs   cCstddS)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"rs'cCsetdtdd|jdd}|jdd}|jdd }|ra|jd d }|S) Nz1cgi.escape is deprecated, use html.escape instead stacklevelrGr1z&z>r_z")rrHrl)rdquoter!r!r"rs cCs:ddl}t|tr$d}nd}|j||S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rer6rWmatch)rdrZ _vb_patternr!r!r"rN(s   rN__main__)0 __version__iorrr collectionsrr3rZ urllib.parser>Z email.parserrZ email.messagerwarningsrrrr__all__rrr#rrr)rr9r@r r r rrgrr r rrrrrrrrrNrtr!r!r!r"sZ           #   E d "'   /