^c3EddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z ddlmZmZe jZe jZe jZdZdZd Zd Ze jZd Ze je jGd d ZdZdZdZdZ dZ!dZ"dZ#e je jGddZ$dZ%GddZ&dS)N)_)encodingerrorpycompatutilwireprototypeswireprotov1server)r) compression stringutilsapplication/mercurial-0.1sapplication/mercurial-0.2sapplication/hg-errorcg}d} |jd||fz}|n-|tj||dz }Od|S)zjDecode a long value from multiple HTTP request headers. Returns the value as a bytes, not a str. rTs%s-%dN)headersgetappendrbytesurljoin)req headerprefixchunksivs ;/usr/lib/python3/dist-packages/mercurial/wireprotoserver.pydecodevaluefromheadersr)sw F A KOOH a'88 9 9 9  h'**+++ Q  88F  rcteZdZdZedZdZdZdZdZ e j dZ dZ d Zd Zd S) httpv1protocolhandlerc>||_||_||_d|_dSN)_req_ui _checkperm _protocaps)selfrui checkperms r__init__zhttpv1protocolhandler.__init__<s" #rcdS)Nshttp-v1r$s rnamezhttpv1protocolhandler.nameBszrc |}i|}|D]S}|dkr:i}|D]}|dkr||vr||d||<|d<B||d|<Tfd|DS)N*cmdrc g|] }| Sr)r).0kdatas r z1httpv1protocolhandler.getargs..S&&&AQ&&&r)_argssplitkeys)r$args knownargsr8r2starkeyr3s @rgetargszhttpv1protocolhandler.getargsFsJJLL zz|| * *ADyy$>>++66Cf}}D$-cN1$5S !T #A,q/Q&&&&&&&&rc|jj}t|jjdd}|rN|t|jj |d|St|jd}|t|d|S)N X-HgArgs-PostrT)keep_blank_valuessX-HgArg) r qsparams asdictoflistsintrrupdateurlreqparseqsbodyfhreadr)r$r9postlenargvalues rr6zhttpv1protocolhandler._argsUsy!//11di'++, ? "*49lCCE!%++d"3"344DOrct|jjd}|t|jjddz}t j|jj|S)NsContent-Lengthr?r)limit)rCr rrr filechunkiterrG)r$lengths r getpayloadz httpv1protocolhandler.getpayloadjs_TY&'89:: #di'++,z8httpv1protocolhandler.addcapabilities..sN""<= Q//11677""""""rscompression=%s) rr% configint configboolr supportedcompenginesr SERVERROLEr)r$repocaps compengines comptypess raddcapabilitiesz%httpv1protocolhandler.addcapabilitiess H tw00z#handlewsgirequest..s99T3#=#=rN)hgwebrrorAr dispatchpath statusmessagestatusHGTYPEr setbodybytesrr% _callhttp ErrorResponsecoder forcebytestr) rrresr& hgwebcommonrorprotorir2rs `` ` rhandlewsgirequestrs-,,,,, 9D S\!!u ,v C ::u   ..s33 '- O$ l2333t ! TW======  E B$S%----  $BBBI  DAqCKNN .. FJ+A..   j&=a&@&@@AAAAAAAAB 4s B44 D;>A3D66D;cd|vr|rttjifSt j|}t j|tjD]]}| j |vr@i}| dd| z}|||d<t||fcS^d| ddi}ttjd|fS)zDetermine the appropriate response type and compression settings. Returns a tuple of (mediatype, compengine, engineopts). s0.2res%slevelNslevels zliblevelszlib)rOHGTYPE2r _noopenginer clientcompressionsupportr rmrnrhr+rkrrrq)r%rprefer_uncompressed compformatsengineoptslevels r_httpresponsetypers##%%%%  :K355r9 9(@GG $9  &  - -F&&((-<< Y V[[]]0JKK$%*DN,,,, = bll9l;; .genversion2s&&((-3t99""""s""""""k$D *****   EKKKK  rc|tkrd_n|_|jd<||||dSdS)Ns200 Script output followsr)HTTP_OKrrrr setbodygen)r contenttype bodybytesbodygenrrs r setresponsez_callhttp..setresponse&sv 7??5CJJ$22488CJ'2 O$    Y ' ' '   NN7 # # # # #  rs:requested wire protocol command is not available over HTTP)r)rs%d %srTshgweb.protocol internal failure)NN)"rrr r~commandavailabler HGERRTYPErr& permissiondispatch isinstancebytesrr bytesresponser3streamreslegacyr streamresrr%rcompressstreamrpushresroutputpusherrdrainooberrormessagerProgrammingError) rorrrrrrrspr mediatyperrrs ` @rrrs,,,,,,    $ $ $ $ $ $ $  % 6 6sE B B           OO%.s3>???  $T5# 6 6C#uN GVs333333 C5 6 6N GVsx888888 C7 8 8N GVSW555555 C1 2 2Ng): GUC3) ) % 6:##C44   +c6:66C GY444444 C/ 0 0 N37CJ// GVs333333 C/ 0 0N37"  GVs333333 C0 1 1N GY#+>>>>>>$%GMMMrc|dt|z|||dS)z-Send a bytes response for protocol version 1.s%d N)writerflush)rVrNs r_sshv1respondbytesrcsBJJwU#$$$JJuJJLLLLLrcf|j}|jD] }|||dSr)rrr)rVsourcerrs r_sshv1respondstreamrjs: JE e JJLLLLLrc|d|z||d|dS)Ns%s -  )rr)rVrWrs r_sshv1respondooberrorrqsIJJzC   JJLLLJJuJJLLLLLrcreZdZdZdZedZdZdZdZ e j dZ dZ d Zd Zd S) sshv1protocolhandlerz.r5r) r7rangerrreadlinerAbortrrCrH) r$r9r8narglinearglr;r2valr3s @rr=zsshv1protocolhandler.getargssIzz||s4yy!!  Ai((**3B3/G]]__FC$k!$>"?"?#"EFFFd{{s1vv$$A"i00223B37G$]]__FC)..Q00C #DII!T innSVV,,S &&&&&&&&rc|jSr)r#r*s rrOz!sshv1protocolhandler.getprotocapss rc#Kt|jdt|j}|rF|j|Vt|j}|DdSdS)Nr)rrrCrrrH)r$counts rrTzsshv1protocolhandler.getpayloads 4:s+++DI&&(()) .)..'' ' ' ' **,,--E . . . . .rc#KdVdSrr)r*s rr\z'sshv1protocolhandler.mayberedirectstdios rctjddddd}d|zS)Ns SSH_CLIENTrrLrrs remote:ssh:)renvironrr7)r$rbs rrbzsshv1protocolhandler.clients:!%%mS99??aHHK&&rc|jtjkr|d|d|S)Ns protocapsrd)r+r rr)r$rorps rrsz$sshv1protocolhandler.addcapabilitiess; 9, , , KK % % % H rcdSrr)rus rr&zsshv1protocolhandler.checkperms rN)rwrxry__doc__r'rzr+r=rOrTr{r|r\rbrsr&r)rrrrxsFF   $$X$'''*... '''      rrcd}t|||}|sR|dkr|dd}|sd}=tj||}|st |dptj|||} |jj |jj t| trt || ngt| tjrt || jn6t| tjrt%|| n t| tjrt%|| nt| tjr)t |dt |d| jznt| tjrt || jnlt| tjrt1||j | jn6t5jd| z|dkrdSt5jd|z|PdSdS)Nsprotov1-servingrsshutdownrs%ds6unhandled response type from wire protocol command: %ssunhandled ssh server state: %s)ris_setrr r~rrrr%rVrrWrrr rr3rrrrrrrrrrr) r%rorrVevstaterrequest availablers r _runsshserverrs$ E S$ / /Eiikk3 & & &llnnSbS)G #)2CCI  "4---#,T5'BBC GL   GL   #u%% "4----C!=>> "42222C!9:: #D#....C!?@@ #D#....C!788 "4---"49999C!788 "41111C!899 %dBGS[AAAA,1367 k ! ! E(1E9 ciikk33333rc"eZdZddZdZdZdS) sshserverNc||_||_|\|_|_|rFt j||jdd|_t j||jdd|_dSdS)NoT)logdatae)r!_repo protectfinoutrrrmakeloggingfileobjectrW)r$r%rologfhs rr'zsshserver.__init__ s " 0 0 2 2 4:  3tz4DJ0rwdBGGG   rc|tj|j|j|jdSr) serveuntil threadingEventr! restorefinoutrrr*s r serve_foreverzsshserver.serve_forevers>  ))*** ty$*55555rcTt|j|j|j|j|dS)z%Serve until a threading.Event is set.N)rr!rrr)r$rs rrzsshserver.serveuntils&dh DItz2FFFFFrr)rwrxryr'rrr)rrrr sK    666GGGGGrr)'r{rri18nrrrrrr r interfaces interfaceutilutilsr r rXurlerrrErrrrrr implementerbaseprotocolhandlerrrrrrrrrrrrr)rrr sh .----- =    % & # ">=>>g%g%g%g%g%g%g%?>g%\---CCCL!3!3!3HINININX>=>>D D D D D D D ?>D NHHHVGGGGGGGGGGr