a ÕDOgg¼ã@sêdZgd¢ZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlmZdZdZGdd„dejƒZGd d „d ejeƒZGd d „d ejƒZGd d„deƒZdd„Z da!dd„Z"dd„Z#Gdd„deƒZ$dd„Z%eedddfdd„Z&e'dkræddl(Z(ddl)Z)e( *¡Z+e+j,ddd d!e+j,d"d#d$d%d&e+j,d'd(e  -¡d)d*e+j,d+d,de.d-d.d/e+ /¡Z0e0j1r¾e$Z2neZ2Gd0d1„d1eƒZ3e&e2e3e0j4e0j5d2dS)3z0.6)Ú HTTPServerÚThreadingHTTPServerÚBaseHTTPRequestHandlerÚSimpleHTTPRequestHandlerÚCGIHTTPRequestHandleréN)Ú HTTPStatusa¹ Error response

Error response

Error code: %(code)d

Message: %(message)s.

Error code explanation: %(code)s - %(explain)s.

ztext/html;charset=utf-8c@seZdZdZdd„ZdS)récCs4tj |¡|jdd…\}}t |¡|_||_dS)Né)Ú socketserverÚ TCPServerÚ server_bindZserver_addressÚsocketZgetfqdnÚ server_nameÚ server_port)ÚselfÚhostÚport©rú0/opt/alt/python39/lib64/python3.9/http/server.pyr ‡s  zHTTPServer.server_bindN)Ú__name__Ú __module__Ú __qualname__Zallow_reuse_addressr rrrrrƒsrc@seZdZdZdS)rTN)rrrZdaemon_threadsrrrrrsrc @s&eZdZdej ¡dZdeZe Z e Z dZ dd„Zdd„Zd d „Zd d „Zd4dd„Zd5dd„Zd6dd„Zdd„Zdd„Zdd„Zd7dd„Zdd„Ze dd „e ed!ƒed"d#ƒ¡Dƒ¡Zd$ee d%ƒ<d&d'„Z!d(d)„Z"d8d*d+„Z#d,d-„Z$gd.¢Z%gd/¢Z&d0d1„Z'd2Z(e)j*j+Z,d3d „e-j. /¡DƒZ0d S)9rzPython/rz BaseHTTP/úHTTP/0.9c Csêd|_|j|_}d|_t|jdƒ}| d¡}||_| ¡}t |ƒdkrLdSt |ƒdkr |d}zT|  d¡srt ‚| d d ¡d }| d ¡}t |ƒd krœt ‚t |dƒt |d ƒf}Wn*t t fyà| tjd |¡YdS0|dkrú|jdkrúd|_|dkr| tjd|¡dS||_d t |ƒkrÚhasattrÚNOT_IMPLEMENTEDÚgetattrÚwfileÚflushr ZtimeoutÚ log_error)rZmnameÚmethodÚerrrÚhandle_one_requestˆs6   þ  z)BaseHTTPRequestHandler.handle_one_requestcCs"d|_| ¡|js| ¡qdSr?)r$rLrBrrrÚhandle­szBaseHTTPRequestHandler.handleNcCs z|j|\}}Wnty,d\}}Yn0|dur:|}|durF|}| d||¡| ||¡| dd¡d}|dkrà|tjtjtjfvrà|j |t j |ddt j |dddœ}|  d d ¡}| d |j ¡| d tt|ƒƒ¡| ¡|jd kr|r|j |¡dS)N)ú???rNzcode %d, message %srréÈF©Úquote)ÚcodeÚmessageÚexplainzUTF-8Úreplacez Content-TypeúContent-LengthZHEAD)Ú responsesÚKeyErrorrIÚ send_responseÚ send_headerrZ NO_CONTENTZ RESET_CONTENTÚ NOT_MODIFIEDÚerror_message_formatÚhtmlÚescapeÚencodeÚerror_content_typer%r*rAr!rGÚwrite)rrRrSrTZshortmsgZlongmsgÚbodyZcontentrrrr/µs:   þÿ  ý z!BaseHTTPRequestHandler.send_errorcCs:| |¡| ||¡| d| ¡¡| d| ¡¡dS)NZServerZDate)Ú log_requestr@rZÚversion_stringÚdate_time_string©rrRrSrrrrYês  z$BaseHTTPRequestHandler.send_responsecCsd|jdkr`|dur0||jvr,|j|d}nd}t|dƒs@g|_|j d|j||f dd¡¡dS)NrrrÚ_headers_bufferz %s %d %s úlatin-1Ústrict)r#rWrDrgÚappendr0r_rfrrrr@÷s    ÿþz)BaseHTTPRequestHandler.send_response_onlycCsl|jdkr6t|dƒsg|_|j d||f dd¡¡| ¡dkrh| ¡dkrVd|_n| ¡d krhd |_dS) Nrrgz%s: %s rhriZ connectionrTr F)r#rDrgrjr_r9r$)rÚkeywordÚvaluerrrrZs  ÿ   z"BaseHTTPRequestHandler.send_headercCs"|jdkr|j d¡| ¡dS)Nrs )r#rgrjÚ flush_headersrBrrrrAs  z"BaseHTTPRequestHandler.end_headerscCs(t|dƒr$|j d |j¡¡g|_dS)Nrgó)rDrGraÚjoinrgrBrrrrms z$BaseHTTPRequestHandler.flush_headersú-cCs.t|tƒr|j}| d|jt|ƒt|ƒ¡dS)Nz "%s" %s %s)Ú isinstancerrlÚ log_messager(r%)rrRÚsizerrrrcs  ÿz"BaseHTTPRequestHandler.log_requestcGs|j|g|¢RŽdS©N)rr)rÚformatÚargsrrrrI)s z BaseHTTPRequestHandler.log_errorcCsi|]}|d|d›“qS)z\xZ02xr)Ú.0ÚcrrrÚ 9rnz!BaseHTTPRequestHandler.é éé z\\ú\cGs2||}tj d| ¡| ¡| |j¡f¡dS)Nz%s - - [%s] %s )ÚsysÚstderrraÚaddress_stringÚlog_date_time_stringÚ translateÚ_control_char_table)rrurvrSrrrrr<s þÿz"BaseHTTPRequestHandler.log_messagecCs|jd|jS)Nú )Úserver_versionÚ sys_versionrBrrrrdVsz%BaseHTTPRequestHandler.version_stringcCs |durt ¡}tjj|ddS)NT)Zusegmt)ÚtimeÚemailÚutilsZ formatdate)rZ timestamprrrreZsz'BaseHTTPRequestHandler.date_time_stringc CsBt ¡}t |¡\ }}}}}}}} } d||j|||||f} | S)Nz%02d/%3s/%04d %02d:%02d:%02d)r‡Ú localtimeÚ monthname) rZnowZyearZmonthZdayZhhZmmZssÚxÚyÚzÚsrrrr`s ÿz+BaseHTTPRequestHandler.log_date_time_string)ZMonZTueZWedZThuZFriZSatZSun) NZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs |jdS©Nr)Úclient_addressrBrrrr€nsz%BaseHTTPRequestHandler.address_stringúHTTP/1.0cCsi|]}||j|jf“qSr)ÚphraseZ description)rwÚvrrrry}sÿ)NN)N)N)rprp)N)1rrrr~r;r)r†Ú __version__r…ÚDEFAULT_ERROR_MESSAGEr\ÚDEFAULT_ERROR_CONTENT_TYPEr`r"r>r:rLrMr/rYr@rZrArmrcrIr%Ú maketransÚ itertoolsÚchainÚrangerƒÚordrrrdrerZ weekdaynamer‹r€r0r3r4Z HTTPMessager6rÚ __members__ÚvaluesrWrrrrr“sBij% 5  ÿ   þrcsteZdZdeZdddddœZZddœ‡fd d „ Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Z‡ZS)rz SimpleHTTP/zapplication/gzipúapplication/octet-streamzapplication/x-bzip2zapplication/x-xz)z.gzz.Zz.bz2z.xzN©Ú directorycs2|durt ¡}t |¡|_tƒj|i|¤ŽdSrt)ÚosÚgetcwdÚfspathr¡ÚsuperÚ__init__)rr¡rvÚkwargs©Ú __class__rrr¦˜s z!SimpleHTTPRequestHandler.__init__cCs6| ¡}|r2z| ||j¡W| ¡n | ¡0dSrt)Ú send_headÚcopyfilerGr©rÚfrrrÚdo_GETžs zSimpleHTTPRequestHandler.do_GETcCs| ¡}|r| ¡dSrt)rªrr¬rrrÚdo_HEAD§sz SimpleHTTPRequestHandler.do_HEADc Csf| |j¡}d}tj |¡rÎtj |j¡}|j d¡s˜| t j ¡|d|d|dd|d|df}tj  |¡}|  d|¡|  dd ¡|  ¡dSd D]&}tj ||¡}tj |¡rœ|}qÎqœ| |¡S| |¡}| d¡rô| t jd ¡dSzt|d ƒ}Wn$ty&| t jd ¡YdS0z t | ¡¡}d |jvrþd|jvrþztj |jd ¡} Wnttttfy„Ynz0| j dur¢| j!t"j#j$d} | j t"j#j$urþt"j" %|j&t"j#j$¡} | j!dd} | | krþ| t j'¡|  ¡| (¡WdS| t j)¡|  d|¡|  dt*|dƒ¡|  d| +|j&¡¡|  ¡|WS| (¡‚Yn0dS)Nrrrr réZLocationrVÚ0)z index.htmlz index.htmzFile not foundÚrbzIf-Modified-Sincez If-None-Match)Útzinfo)Z microsecondú Content-typeéz Last-Modified),Útranslate_pathr1r¢ÚisdirÚurllibÚparseZurlsplitÚendswithrYrZMOVED_PERMANENTLYZ urlunsplitrZrAroÚexistsÚlist_directoryÚ guess_typer/Ú NOT_FOUNDÚopenÚOSErrorÚfstatÚfilenor7rˆr‰Zparsedate_to_datetimeÚ TypeErrorr.Ú OverflowErrorr,r³rUÚdatetimeÚtimezoneZutcZ fromtimestampÚst_mtimer[rÚOKr%re) rr1r­ÚpartsZ new_partsZnew_urlÚindexZctypeZfsZimsZ last_modifrrrrª­s~     ÿ        ÿÿ  ÿ      ÿz"SimpleHTTPRequestHandler.send_headc CsÔzt |¡}Wn"ty0| tjd¡YdS0|jdd„dg}ztjj |j dd}Wn t y|tj  |j ¡}Yn0t j |dd}t ¡}d |}| d ¡| d ¡| d |¡| d |¡| d|¡| d¡|D]v}tj  ||¡}|} } tj  |¡r |d} |d} tj  |¡r6|d} | dtjj| ddt j | ddf¡qè| d¡d |¡ |d¡} t ¡} |  | ¡|  d¡| tj¡| dd|¡| dtt| ƒƒ¡| ¡| S)NzNo permission to list directorycSs| ¡Srt)r9)ÚarrrÚrnz9SimpleHTTPRequestHandler.list_directory..)ÚkeyÚ surrogatepass©ÚerrorsFrPzDirectory listing for %szZz z@z%s z

%s

z
    rú@z
  • %s
  • z

Ú Úsurrogateescaperr´ztext/html; charset=%srV) r¢ÚlistdirrÀr/rr¾Úsortr¸r¹Úunquoter1ÚUnicodeDecodeErrorr]r^r~Úgetfilesystemencodingrjror·ÚislinkrQr_ÚioÚBytesIOraÚseekrYrÈrZr%r*rA) rr1ÚlistÚrZ displaypathÚencÚtitleÚnameÚfullnameZ displaynameZlinknameZencodedr­rrrr¼sh þ ÿ    ÿ ÿ þÿ    z'SimpleHTTPRequestHandler.list_directorycCsÌ| dd¡d}| dd¡d}| ¡ d¡}ztjj|dd}Wnty`tj |¡}Yn0t |¡}| d¡}t d|ƒ}|j }|D]0}t j   |¡sŠ|t jt jfvr¬qŠt j  ||¡}qŠ|rÈ|d7}|S)Nú?rrú#rrÎrÏ)r)r'rºr¸r¹rÖr×Ú posixpathÚnormpathÚfilterr¡r¢r1ÚdirnameÚcurdirÚpardirro)rr1Ztrailing_slashr<Zwordrrrr¶?s$     z'SimpleHTTPRequestHandler.translate_pathcCst ||¡dSrt)ÚshutilZ copyfileobj)rÚsourceZ outputfilerrrr«]sz!SimpleHTTPRequestHandler.copyfilecCsXt |¡\}}||jvr"|j|S| ¡}||jvr>|j|St |¡\}}|rT|SdS)NrŸ)råÚsplitextÚextensions_mapr9Ú mimetypesr½)rr1ÚbaseZextZguessÚ_rrrr½ms    z#SimpleHTTPRequestHandler.guess_type)rrrr•r…rîZ_encodings_map_defaultr¦r®r¯rªr¼r¶r«r½Ú __classcell__rrr¨rrƒs ü  X:rc CsÎ| d¡\}}}tj |¡}| d¡}g}|dd…D],}|dkrL| ¡q6|r6|dkr6| |¡q6|r˜| ¡}|rœ|dkrŠ| ¡d}qœ|dkrœd}nd}|r®d ||f¡}dd |¡|f}d |¡}|S)Nrãrrz..rr)Ú partitionr¸r¹rÖr)Úpoprjro) r1rñÚqueryÚ path_partsZ head_partsÚpartZ tail_partZ splitpathÚcollapsed_pathrrrÚ_url_collapse_path‰s.      rùcCsntrtSz ddl}Wnty(YdS0z| d¡daWn,tyhdtdd„| ¡DƒƒaYn0tS)NrrÚnobodyr rcss|]}|dVqdS)r Nr)rwrŒrrrÚ Çrnznobody_uid..)rúÚpwdÚ ImportErrorÚgetpwnamrXÚmaxZgetpwall)rürrrÚ nobody_uid»s    rcCst |tj¡Srt)r¢ÚaccessÚX_OK)r1rrrÚ executableËsrc@sReZdZeedƒZdZdd„Zdd„Zdd„Z d d gZ d d „Z d d„Z dd„Z dS)rÚforkrcCs$| ¡r| ¡n| tjd¡dS)NzCan only POST to CGI scripts)Úis_cgiÚrun_cgir/rrErBrrrÚdo_POSTás  þzCGIHTTPRequestHandler.do_POSTcCs| ¡r| ¡St |¡SdSrt)rrrrªrBrrrrªïszCGIHTTPRequestHandler.send_headcCszt|jƒ}| dd¡}|dkrB|d|…|jvrB| d|d¡}q|dkrv|d|…||dd…}}||f|_dSdS)NrrrTF)rùr1ÚfindÚcgi_directoriesÚcgi_info)rrøZdir_sepÚheadÚtailrrrrös   zCGIHTTPRequestHandler.is_cgiz/cgi-binz/htbincCst|ƒSrt)r)rr1rrrÚ is_executablesz#CGIHTTPRequestHandler.is_executablecCstj |¡\}}| ¡dvS)N)z.pyz.pyw)r¢r1rír9)rr1r r rrrÚ is_pythonszCGIHTTPRequestHandler.is_pythonc) Csl|j\}}|d|}| dt|ƒd¡}|dkrˆ|d|…}||dd…}| |¡}tj |¡rˆ||}}| dt|ƒd¡}q*qˆq*| d¡\}}} | d¡}|dkrÆ|d|…||d…} }n |d} }|d| } | | ¡} tj | ¡s |  t j d| ¡dStj  | ¡s.|  t j d| ¡dS| | ¡} |jsF| sh| | ¡sh|  t j d| ¡dSt tj¡}| ¡|d <|jj|d <d |d <|j|d <t|jjƒ|d<|j|d<tj |¡}||d<| |¡|d<| |d<| rð| |d<|jd|d<|j  d¡}|r¶| !¡}t|ƒdkr¶ddl"}ddl#}|d|d<|d $¡dkr¶z"|d %d¡}| &|¡ 'd¡}Wn|j(t)fyYn&0| !d¡}t|ƒdkr¶|d|d<|j  d¡durØ|j *¡|d<n|jd|d<|j  d¡}|r||d<|j  d ¡}|r||d!<|j +d"d#¡}d$ ,|¡|d%<|j  d&¡}|rP||d'<t-d|j +d(g¡ƒ}d) ,|¡}|r|||d*<d+D]}| .|d¡q€| /t j0d,¡| 1¡|  2d-d.¡}|jræ| g}d/|vrØ| 3|¡t4ƒ}|j5 6¡t 7¡}|dkr^t 8|d¡\}}t9 9|j:gggd¡dr:|j: ;d¡s q:q t <|¡}|rZ| =d0|›¡dSzZzt >|¡Wnt?y‚Yn0t @|j: A¡d¡t @|j5 A¡d¡t B| ||¡Wn(|j C|jD|j¡t Ed1¡Yn0n‚ddlF} | g}!| | ¡r:tGjH}"|" $¡ Id2¡r.|"dd3…|"d4d…}"|"d5g|!}!d/| vrN|! 3| ¡| Jd6|  K|!¡¡z tL|ƒ}#WntMtNfyˆd}#Yn0| jO|!| jP| jP| jP|d7}$|j $¡d8krÌ|#dkrÌ|j: ;|#¡}%nd}%t9 9|j:jQgggd¡dr|j:jQ Rd¡sÐqqÐ|$ S|%¡\}&}'|j5 T|&¡|'r0| =d9|'¡|$jU V¡|$jW V¡|$jX}(|(r^| =d:|(¡n | Jd;¡dS)SsŒ  s0  þ  ÿ ÿÿ þ ü