!A?h3: ddlmZmZddlZddlZddlmZddlm Z dZ gdZ de zZ e dzej dzZe d zezZGd d eZGd d eZGddeZdZeefdZedkredde5ZejZededdeddddlZejdeddddS#1swxYwYdSdS))BaseHTTPRequestHandler HTTPServerN) SimpleHandler)python_implementationz0.2) WSGIServerWSGIRequestHandlerdemo_app make_server WSGIServer// ceZdZeZdZdS) ServerHandlerc |j|jddd|jt j|dS#t j|wxYw)Nr r)request_handler log_requeststatussplit bytes_sentrcloseselfs B/opt/alt/python-internal/lib64/python3.11/wsgiref/simple_server.pyrzServerHandler.close sp &  , , !!#a((+T_      % % % % %M  % % % %s ?AA-N)__name__ __module__ __qualname__software_versionserver_softwarerrrrs(&O&&&&&r!rc,eZdZ dZdZdZdZdZdS)rNcX tj||dSN)r server_bind setup_environrs rr%zWSGIServer.server_bind0s.<t$$$ r!cix}|_|j|d<d|d<t|j|d<d|d<d|d<d|d<dS) N SERVER_NAMEzCGI/1.1GATEWAY_INTERFACE SERVER_PORT REMOTE_HOSTCONTENT_LENGTH SCRIPT_NAME) base_environ server_namestr server_port)renvs rr&zWSGIServer.setup_environ5sa"$$d!-M#,   !122MM  Mr!c|jSr$ applicationrs rget_appzWSGIServer.get_app?s r!c||_dSr$r5)rr6s rset_appzWSGIServer.set_appBs&r!)rrrr6r%r&r7r9r r!rrr*sXAK       '''''r!rc*eZdZdezZdZdZdZdS)rr c|jj}|j|d<|j|d<|j|d<d|jvr|jdd\}}n |jd}}tj |d|d<||d <| }||j d kr||d <|j d |d <|j d |j |d<n|j d |d<|j d}|r||d<|j D]l\}}|dd}|}||vrFd|z|vr|d|zxxd|zz cc<d||d|z<m|S)NSERVER_PROTOCOLSERVER_SOFTWAREREQUEST_METHOD?rr+z iso-8859-1 PATH_INFO QUERY_STRINGrr, REMOTE_ADDRz content-type CONTENT_TYPEzcontent-lengthr--_HTTP_,)serverr/copyrequest_versionserver_versioncommandpathrurllibparseunquoteaddress_stringclient_addressheadersgetget_content_typeitemsreplaceupperstrip)rr3rMqueryhostlengthkvs r get_environzWSGIRequestHandler.get_environKsk&++--!%!5 !%!4  $   $)  Q//JD2D!<//lCCK#N""$$ 4&q) ) )!%C !03M <  N + + 3"&,"?"?"A"AC  "&,~">C !!"233  +$*C !L&&(( # #DAqiiC  &&((AAGGII!CxxqyCGAI#a%'!"GAI r!ctjSr$)sysstderrrs r get_stderrzWSGIRequestHandler.get_stderrps zr!c |jd|_t|jdkr,d|_d|_d|_|ddS|sdSt|j|j | | d}||_ ||jdS)Niir+iF) multithread)rfilereadlineraw_requestlinelen requestlinerJrL send_error parse_requestrwfilercr_rrunrHr7)rhandlers rhandlezWSGIRequestHandler.handless*#z22599 t# $ $u , ,!D #%D DL OOC F!!##  F J DOO$5$5t7G7G7I7I   #' DK''))*****r!N)rrr __version__rKr_rcrpr r!rrrGsL"[0N###J+++++r!rc`ddlm}|}td|t|t|}|D]%\}}t|dt ||&|ddg|dgS) Nr)StringIOz Hello world!)file=z200 OK)z Content-Typeztext/plain; charset=utf-8zutf-8)iorsprintsortedrVreprgetvalueencode)environstart_responsersstdouthr]r^s rr r s XZZF .v&&&& vw}}A**! aDGG&)))))N8JKLLL OO   $ $W - - ..r!cN |||f|}|||Sr$)r9)r[portapp server_class handler_classrHs rr r s4L \4, 6 6F NN3 Mr!__main__r+i@zServing HTTP onrrz...zhttp://localhost:8000/xyz?abc) http.serverrrra urllib.parserNwsgiref.handlersrplatformrrq__all__rKversionr sys_versionrrrrr r rhttpdsocket getsocknamesarw webbrowseropenhandle_requestr r!rrsN ;::::::: ************ I I I,##%%+ck.?.?.A.A!.DD !C'+5 & & & & &M & & &'''''''':?+?+?+?+?+/?+?+?+F / / /#-