Ë
    ojG  ã                   ó
  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZ d dlmZmZ d d	lmZm Z   G d
„ de«      Z!da"da#d a$da%d a&da'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0 G d„ d«      Z1 G d„ dejd                  «      Z2 G d„ dejf                  «      Z4 G d„ dejj                  «      Z5 G d„ dejl                  «      Z6d„ Z7d „ Z8e9d!k(  r e(«        yy)"é    N)ÚListÚTuple)ÚconnectÚdefault)ÚConchOptions)Ú
ConchError)ÚchannelÚcommonÚ
connectionÚ
forwardingÚsession)ÚreactorÚstdioÚtask)ÚlogÚusage)ÚioTypeÚnetworkStringc            
       óœ  — e Zd ZU dZdZg d¢g d¢g d¢gZg d¢g d¢g d¢g d	¢g d
¢g d¢gZ ej                  dg ej                  d¬«       ej                  d¬«      dœ ej                  «        ej                  d¬«       ej                  dd¬«      g¬«      Zg Zeeeeeef   f      ed<   g Zeeeeeef   f      ed<   d„ Zd„ Zd„ Zd„ Zy)ÚClientOptionsz(Usage:   conch [options] host [command]
zYconch is a SSHv2 client that allows logging into a remote machine and executing commands.)ÚescapeÚeú~)ÚlocalforwardÚLNz<listen-port:host:port   Forward local port to remote address)ÚremoteforwardÚRNz<listen-port:host:port   Forward remote port to local address)ÚnullÚnzRedirect input from /dev/null.)ÚforkÚfz(Fork to background after authentication.)ÚttyÚtz-Tty; allocate a tty even if command is given.)ÚnottyÚTzDo not allocate a tty.)ÚnoshellÚNz"Do not execute a shell or command.)Ú	subsystemÚsz-Invoke command (mandatory) as SSH2 subsystem.)r"   r$   zlisten-port:host:port)Údescr)r   r   ÚcommandÚargumentT)r*   Úrepeat)ÚmutuallyExclusiveÚ
optActionsÚextraActionsÚlocalForwardsÚremoteForwardsc                 óÜ   — |dk(  rd| d<   y|d   dk(  r,t        |«      dk(  rt        t        |d   «      dz
  «      | d<   yt        |«      dk(  r|| d<   yt        j                  d	|› d
�«       y)z:
        Set escape character; ``none'' = disable
        ÚnoneNr   r   ú^é   é   é@   zBad escape character 'z'.)ÚlenÚchrÚordÚsysÚexit)ÚselfÚescs     ú=/usr/lib/python3/dist-packages/twisted/conch/scripts/conch.pyÚ
opt_escapezClientOptions.opt_escapeO   sn   € ð �&Š=Ø!ˆD�ŠNØ�‰V�sŠ]œs 3›x¨1š}Ü ¤ S¨¡V£¨rÑ!1Ó2ˆD�ŠNÜ�‹X˜Š]Ø ˆD�ŠNä�H‰HÐ-¨c¨U°"Ð5Õ6ó    c                 ó˜   — |j                  d«      \  }}}t        |«      }t        |«      }| j                  j                  |||ff«       y)zH
        Forward local port to remote address (lport:host:port)
        ú:N)ÚsplitÚintr1   Úappend)r>   r!   Ú	localPortÚ
remoteHostÚ
remotePorts        r@   Úopt_localforwardzClientOptions.opt_localforward\   sH   € ð -.¯G©G°C«LÑ)ˆ	�:˜zÜ˜	“Nˆ	Ü˜“_ˆ
Ø×Ñ×!Ñ! 9¨z¸:Ð.FÐ"GÕHrB   c                 ó˜   — |j                  d«      \  }}}t        |«      }t        |«      }| j                  j                  |||ff«       y)zH
        Forward remote port to local address (rport:host:port)
        rD   N)rE   rF   r2   rG   )r>   r!   rJ   ÚconnHostÚconnPorts        r@   Úopt_remoteforwardzClientOptions.opt_remoteforwarde   sH   € ð *+¯©°«Ñ&ˆ
�H˜hÜ˜“_ˆ
Ü�x“=ˆØ×Ñ×"Ñ" J°¸8Ð0DÐ#EÕFrB   c                 ó6   — || d<   dj                  |«      | d<   y )NÚhostú r+   )Újoin)r>   rQ   r+   s      r@   Ú	parseArgszClientOptions.parseArgsn   s   € ØˆˆV‰ØŸ(™( 7Ó+ˆˆYŠrB   N)Ú__name__Ú
__module__Ú__qualname__ÚsynopsisÚlongdescÚoptParametersÚoptFlagsr   ÚCompletionsÚ	CompleterÚCompleteUserAtHostÚcompDatar1   r   r   rF   Ú__annotations__r2   rA   rK   rO   rT   © rB   r@   r   r      s  … ð€Hð	*ð ò 	ò	
ò	
ð€Mò" 	8ÚAÚEÚ0Ú>ÚKð€Hð !ˆu× Ñ Ø+Ð,à+˜EŸO™OÐ2IÔJØ,˜UŸ_™_Ð3JÔKñ
ð
 %ˆE×$Ñ$Ó&ØˆE�O‰O )Ô,ØˆE�O‰O *°TÔ:ð
ô€Hð 8:€M�4˜˜c 5¨¨c¨¡?Ð2Ñ3Ñ4Ó9Ø8:€N�D˜˜s E¨#¨s¨(¡OÐ3Ñ4Ñ5Ó:ò7òIòGó,rB   r   c                  óÆ  — t         j                  dd  } d| v r'| j                  d«      }| ||dz    | z   } | |dz   |dz   …= | d d  D ]2  }	 | j                  |«      }|d d dk(  r| |dz      d   dk7  rg | ||dz    Œ4 t	        «       a	 t
        j                  | «       t
        d	   r{t
        d
   r1t
        d
   dk(  rt         j                  }n$t        t
        d
   d«      }nt         j                  }t         j                  }t        j                   |«       |t         _        nt        j"                  «        t%        «        t         j&                  j)                  «       }	 t+        j,                  |«      a	 t3        j2                  t2        j4                  d„ «      }	 t7        j8                  «        t.        r)t+        j:                  |t*        j<                  t.        «       |r$t3        j2                  t2        j4                  |«       t
        d   r	t
        d   s	t
        d   s3t3        j2                  t2        j>                  t2        j@                  «       	 t         j                  jC                  «       r*t
        d   s!t        djE                  t
        d   «      «       t        j                  tF        «       y # t        $ r Y �Œww xY w# t        j                  $ rB}t        d|› �«       t
        j                  «        t        j                  d«       Y d }~�Œvd }~ww xY w# t0        $ r d aY �Œ¶w xY w# t0        $ r d }Y �Œ¢w xY w# t.        r)t+        j:                  |t*        j<                  t.        «       |r$t3        j2                  t2        j4                  |«       t
        d   r	t
        d   s	t
        d   s3t3        j2                  t2        j>                  t2        j@                  «       w w xY w)Nr7   z-lr6   é   z-or   ú-zERROR: r   Úlogfileza+c                  ó6   — t        j                  dt        «      S ©Nr   )r   Ú	callLaterÚ	reConnect)Úas    r@   ú<lambda>zrun.<locals>.<lambda>¦   s   € ¤w×'8Ñ'8¸¼IÓ'F€ rB   r+   r"   r$   zConnection to {} closed.rQ   )$r<   ÚargvÚindexÚ
ValueErrorr   ÚoptionsÚparseOptionsr   Ú
UsageErrorÚprintÚopt_helpr=   ÚstdoutÚopenÚstderrr   ÚstartLoggingÚdiscardLogsÚ	doConnectÚstdinÚfilenor"   Ú	tcgetattrÚoldÚBaseExceptionÚsignalÚSIGUSR1r   ÚrunÚ	tcsetattrÚTCSANOWÚSIGWINCHÚSIG_DFLÚisattyÚformatÚ
exitStatus)ÚargsÚiÚargÚur!   ÚrealoutÚfdÚoldUSR1s           r@   r�   r�   |   sì  € ä�8‰8�A�Bˆ<€DØˆt�|Ø�J‰J�tÓˆØ�A˜˜A™ˆ Ñ%ˆØ��Q‘˜˜Q™�ÐØ‘Aˆwò ˆð	Ø—
‘
˜3“ˆAØ�2�Aˆw˜$Š 4¨¨A©¡;¨q¡>°SÒ#8Ø"$��Q˜˜Q™�øð	ô ‹o€GðÜ×Ñ˜TÔ"ô
 ˆu‚~Ü�9ÒÜ�yÑ! SÒ(Ü—J‘J‘äœ Ñ+¨TÓ2‘ä—
‘
ˆAÜ—*‘*ˆÜ×Ñ˜ÔØŒ�
ä�‰ÔÜ„KÜ	�‰×	Ñ	Ó	€BðÜ�m‰m˜BÓˆðÜ—-‘-Ü�N‰NÑFó
ˆð
;Ü�‰ŒåÜ�M‰M˜"œcŸk™k¬3Ô/ÙÜ�M‰Mœ&Ÿ.™.¨'Ô2Ü�IÒ¤7¨5¢>¼'À'Ò:JÜ�M‰Mœ&Ÿ/™/¬6¯>©>Õ:Ü
‡z�z×ÑÔ¤7¨9Ò#5ÜÐ(×/Ñ/´¸±Ó@ÔAÜ‡H�HŒZÕøô[ ò 	Úð	ûô
 ×Ñò Ü�˜�sˆmÔÜ×ÑÔÜ�‰��Šûðûô* ò Ø‹ðûô ò Ø‹ðûõ
 Ü�M‰M˜"œcŸk™k¬3Ô/ÙÜ�M‰Mœ&Ÿ.™.¨'Ô2Ü�IÒ¤7¨5¢>¼'À'Ò:JÜ�M‰Mœ&Ÿ/™/¬6¯>©>Õ:ð ;Kús[   Á/J/ÂJ? ÅL Å0%L) ÆL; Ê/	J<Ê;J<Ê?LË7LÌLÌL&Ì%L&Ì)L8Ì7L8Ì;B%O c                  óŽ   — ddl m}  dat        j                  dt
        «       t        j                  | j                  «       «       ‚ )Nr   ©Úfailurer6   g{®Gáz„?)	Útwisted.pythonr’   rˆ   r   rh   Ú_stopReactorr   ÚerrÚFailurer‘   s    r@   ÚhandleErrorr—   ¸   s2   € Ý&ð €JÜ×Ñ�dœLÔ)Ü‡G�GˆG�O‰OÓÔØ	rB   c                  óL   — 	 t        j                  «        y # t        $ r Y y w xY w©N)r   Ústopr~   ra   rB   r@   r”   r”   Â   s"   € ðÜ�‰�øÜò Ùðús   ‚ —	#¢#c                  ó¦  — dt         d   v r*t         d   j                  dd«      \  t         d<   t         d<   t         j                  sddgt         _        t         d   } t         d   st        j                  «       t         d<   t         d   s
dt         d<   nt        t         d   «      t         d<   t         d   } t         d   }t        j                  }t         d	   s!t        j                  | t         «      t         d	<   t        j                  t         d   t         t        «       «      }t        j                  | |t         ||«      j                  t        «       y )
Nú@rQ   r7   Úuserz~/.ssh/id_rsaz~/.ssh/id_dsaÚporté   zhost-key-algorithms)ro   rE   Ú	identitysÚgetpassÚgetuserrF   r   ÚverifyHostKeyÚgetHostKeyAlgorithmsÚSSHUserAuthClientÚSSHConnectionr   Ú
addErrbackÚ_ebExit)rQ   rž   ÚvhkÚuaos       r@   ry   ry   É   s   € Ø
Œg�f‰oÑÜ+2°6©?×+@Ñ+@ÀÀaÓ+HÑ(Œ�‰œ ™Ü×ÒØ,¨oÐ>ŒÔÜ�6‰?€DÜ�6Š?Ü!Ÿ/™/Ó+Œ�‰Ü�6Š?ØŒ�Šäœg f™oÓ.Œ�‰Ü�6‰?€DÜ�6‰?€DÜ
×
Ñ
€CÜÐ(Ò)Ü)0×)EÑ)EÀdÌGÓ)TŒÐ%Ñ&Ü
×
#Ñ
#¤G¨F¡O´W¼m»oÓ
N€CÜ‡O�O�D˜$¤¨¨cÓ2×=Ñ=¼gÕFrB   c                 óB   — d| › �a t        j                  dt        «       y )Nzconch: exiting with error çš™™™™™¹?)rˆ   r   rh   r”   )r!   s    r@   r¨   r¨   Þ   s   € à-¨a¨SÐ1€JÜ×Ñ�cœ<Õ(rB   c            	      óÒ  — t        t        j                  d«      rt        t        «       t        j
                  rjt        j
                  D ]W  \  } }t        j                  | t        j                  t        |t        «      «      }t        j
                  j                  |«       ŒY t        j                  rdt        j                  D ]6  \  }}t        j                  d|› d|› �«       t        j                  ||«       Œ8 t        j                   ddt"        «       t        d   r	t        d   rt        j%                  t'        «       «       t        d   rdt)        j*                  «       rt)        j,                  d	«       t)        j.                  «        t1        d
«      D ]  }	 t)        j2                  |«       Œ y y # t4        $ r(}d	d l}|j6                  |j8                  k7  r‚ Y d }~ŒId }~ww xY w)NÚ
sendIgnorez!asking for remote forwarding for rD   ÚbeforeÚshutdownr&   Úagentr    r   é   )ÚhasattrÚconnÚ	transportÚ
_KeepAlivero   r1   r   Ú	listenTCPr   ÚSSHListenForwardingFactoryÚ SSHListenClientForwardingChannelrG   r2   r   ÚmsgÚrequestRemoteForwardingÚaddSystemEventTriggerÚbeforeShutdownÚopenChannelÚ
SSHSessionÚosr    Ú_exitÚsetsidÚrangeÚcloseÚOSErrorÚerrnoÚEBADF)rH   Úhostportr)   rJ   rŠ   r   rÆ   s          r@   Ú	onConnectrÉ   ä   sw  € ô Œt�~‰~˜|Ô,Ü”4ÔÜ×ÒÜ#*×#8Ñ#8ò 	)ÑˆI�xÜ×!Ñ!ØÜ×5Ñ5Ü˜(Ô$DóóˆAô ×Ñ×%Ñ% aÕ(ð	)ô ×ÒÜ$+×$:Ñ$:ò 	?Ñ ˆJ˜Ü�G‰GÐ7¸
°|À1ÀXÀJÐOÔPÜ×(Ñ(¨°XÕ>ð	?ô 	×%Ñ% h°
¼NÔKÜ�9Ò¤¨Ò!1Ü×Ñœ›Ô&Üˆv‚Ü�7‰7Œ9Ü�H‰H�QŒKÜ
�	‰	ŒÜ�q“ò 	ˆAðÜ—‘˜•ñ	ð	 øô ò Ûà—7‘7˜eŸk™kÒ)Øô *ûðús   ÆF5Æ5	G&Æ>G!Ç!G&c                  óh   — t        «        t        j                  j                  j                  «        y r™   )r½   r´   rµ   ÚloseConnectionra   rB   r@   ri   ri     s   € ÜÔÜ‡N�N×Ñ×+Ñ+Õ-rB   c                  ó˜   — t         j                  } | D ]5  \  }}t        j                  d|› d|› �«       t        j                  |«       Œ7 y )Nzcancelling rD   )ro   r2   r   rº   r´   ÚcancelRemoteForwarding)r2   rJ   rÈ   s      r@   r½   r½     sH   € Ü×+Ñ+€NØ .ò 0Ñˆ
�HÜ�‰�+˜j˜\¨¨8¨*Ð5Ô6Ü×#Ñ# JÕ/ñ0rB   c                  óL   — t         d   st        j                  dt        «       y y )NÚ	reconnectr¬   )ro   r   rh   r”   ra   rB   r@   ÚstopConnectionrÐ     s   € Ü�;ÒÜ×Ñ˜#œ|Õ,ð  rB   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)r¶   c                 óž   — || _         d | _        t        j                  | j                  «      | _        | j
                  j                  d«       y )Ni,  )r´   ÚglobalTimeoutr   ÚLoopingCallÚ
sendGlobalÚlcÚstart)r>   r´   s     r@   Ú__init__z_KeepAlive.__init__  s7   € ØˆŒ	Ø!ˆÔÜ×"Ñ" 4§?¡?Ó3ˆŒØ�‰�‰�cÕrB   c                 óÀ   — | j                   j                  ddd¬«      }|j                  | j                  «       t	        j
                  d| j                  «      | _        y )Ns"   conch-keep-alive@twistedmatrix.comrB   r7   ©Ú	wantReplyé   )r´   ÚsendGlobalRequestÚaddBothÚ	_cbGlobalr   rh   Ú	_ebGlobalrÓ   )r>   Úds     r@   rÕ   z_KeepAlive.sendGlobal   sM   € Ø�I‰I×'Ñ'Ø1°3À!ð (ó 
ˆð 	
�	‰	�$—.‘.Ô!Ü$×.Ñ.¨r°4·>±>ÓBˆÕrB   c                 ó`   — | j                   r"| j                   j                  «        d | _         y y r™   )rÓ   Úcancel)r>   Úress     r@   rß   z_KeepAlive._cbGlobal'  s*   € Ø×ÒØ×Ñ×%Ñ%Ô'Ø!%ˆDÕð rB   c                 ót   — | j                   r,d | _         | j                  j                  j                  «        y y r™   )rÓ   r´   rµ   rË   ©r>   s    r@   rà   z_KeepAlive._ebGlobal,  s.   € Ø×ÒØ!%ˆDÔØ�I‰I×Ñ×.Ñ.Õ0ð rB   N)rU   rV   rW   rØ   rÕ   rß   rà   ra   rB   r@   r¶   r¶     s   „ òòCò&ó
1rB   r¶   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
r¦   c                 ó8   — | a g | _        i | _        t        «        y r™   )r´   r1   r2   rÉ   ræ   s    r@   ÚserviceStartedzSSHConnection.serviceStarted3  s   € àˆØˆÔØ ˆÔÜ�rB   c                 ól   — | j                   }g | _         |D ]  }|j                  «        Œ t        «        y r™   )r1   rË   rÐ   )r>   Úlfr)   s      r@   ÚserviceStoppedzSSHConnection.serviceStopped:  s6   € Ø×ÑˆØˆÔØò 	ˆAØ×ÑÕð	äÕrB   c                 ó  — t        j                  d|f«      }| j                  d|d¬«      }t        j                  d|› d|› �«       |j                  | j                  ||«       |j                  | j                  ||«       y )Nú0.0.0.0s   tcpip-forwardr7   rÚ   zrequesting remote forwarding rD   )	r   ÚpackGlobal_tcpip_forwardrÝ   r   rº   ÚaddCallbackÚ_cbRemoteForwardingr§   Ú_ebRemoteForwarding)r>   rJ   rÈ   Údatará   s        r@   r»   z%SSHConnection.requestRemoteForwardingA  su   € Ü×2Ñ2°I¸zÐ3JÓKˆØ×"Ñ"Ð#3°TÀQÐ"ÓGˆÜ�‰Ð/°
¨|¸1¸X¸JÐGÔHØ	�‰�d×.Ñ.°
¸HÔEØ	�‰�T×-Ñ-¨z¸8ÕDrB   c                 ó¨   — t        j                  d|› d|› �«       || j                  |<   t        j                  t        | j                  «      «       y )Nzaccepted remote forwarding rD   )r   rº   r2   Úrepr)r>   ÚresultrJ   rÈ   s       r@   rñ   z!SSHConnection._cbRemoteForwardingH  sC   € Ü�‰Ð-¨j¨\¸¸8¸*ÐEÔFØ*2ˆ×Ñ˜JÑ'Ü�‰”�T×(Ñ(Ó)Õ*rB   c                 óf   — t        j                  d|› d|› d�«       t        j                  |«       y )Nzremote forwarding rD   z failed©r   rº   )r>   r!   rJ   rÈ   s       r@   rò   z!SSHConnection._ebRemoteForwardingM  s)   € Ü�‰Ð$ Z L°°(°¸7ÐCÔDÜ�‰��
rB   c                 ó  — t        j                  d|f«      }| j                  d|«       t        j                  d|› �«       	 | j
                  |= t        j                  t        | j
                  «      «       y # t        $ r Y Œ4w xY w)Nrî   s   cancel-tcpip-forwardzcancelling remote forwarding )r   rï   rÝ   r   rº   r2   Ú	Exceptionrõ   )r>   rJ   ró   s      r@   rÍ   z$SSHConnection.cancelRemoteForwardingQ  s|   € Ü×2Ñ2°I¸zÐ3JÓKˆØ×ÑÐ6¸Ô=Ü�‰Ð/°
¨|Ð<Ô=ð	Ø×#Ñ# JÐ/ô 	�‰”�T×(Ñ(Ó)Õ*øô ò 	Ùð	ús   ÁA9 Á9	BÂBc                 ó’  — t        j                  d|›�«       t        j                  |«      \  }}t        j                  | j                  «       t        j                  |«       |d   | j                  v r9| j                  |d      }t        j                  d|› �«       t        |||| ¬«      S t        t        j                  d«      ‚)NzFTCP r7   zconnect forwarding )ÚremoteWindowÚremoteMaxPacketr´   zdon't know about that port)	r   rº   r   ÚunpackOpen_forwarded_tcpipr2   ÚSSHConnectForwardingChannelr   r   ÚOPEN_CONNECT_FAILED)r>   Ú
windowSizeÚ	maxPacketró   ÚremoteHPÚorigHPÚ	connectHPs          r@   Úchannel_forwarded_tcpipz%SSHConnection.channel_forwarded_tcpip[  s´   € Ü�‰�%˜�xÐ Ô!Ü%×@Ñ@ÀÓFÑˆ�&Ü�‰�×#Ñ#Ô$Ü�‰�ÔØ�A‰;˜$×-Ñ-Ñ-Ø×+Ñ+¨H°Q©KÑ8ˆIÜ�G‰GÐ)¨)¨Ð5Ô6Ü.Ø¨
ÀIÐTXôð ô Ü×.Ñ.Ð0Lóð rB   c                 ó4  — t        j                  d|› �«       t        j                  | j                  «       t        | j                  «      dk(  r t        j                  d«       t	        «        y | j
                  j                  d   j                  | |«       y )Nzconnection closing r7   zstopping connectionr   )r   rº   Úchannelsr9   rÐ   Ú	__class__Ú	__bases__ÚchannelClosed)r>   r	   s     r@   r  zSSHConnection.channelClosedk  sk   € Ü�‰Ð% g YÐ/Ô0Ü�‰�—‘ÔÜˆt�}‰}Ó Ò"Ü�G‰GÐ)Ô*ÜÕð �N‰N×$Ñ$ QÑ'×5Ñ5°d¸GÕDrB   N)rU   rV   rW   ré   rì   r»   rñ   rò   rÍ   r  r  ra   rB   r@   r¦   r¦   2  s,   „ òòòEò+ò
ò+òó ErB   r¦   c                   óX   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)r¿   s   sessionc                 ó,  ‡ — t        j                  d‰ j                  › d�«       t        d   r1‰ j                  j                  ‰ ddd¬«      }|j                  d„ «       t        d	   ry t        d
   r	t        d   s	t        d   s
t        «        t        j                  «       }t        d   r"t        d   sd‰ _
        ‰ j                  |_        n‰ j                  |_        ˆ fd„|_        t        j                   |«      ‰ _        d}t        d   r8‰ j                  j                  ‰ dt#        j$                  t        d
   «      «       y t        d
   rñt        d   r°t&        j(                  d   }t+        j,                  |t.        j0                  d«      }t3        j4                  d|«      }t        j6                  ||d«      }‰ j                  j                  ‰ d|«       t9        j8                  t8        j:                  ‰ j<                  «       ‰ j                  j                  ‰ dt#        j$                  t        d
   «      «       y t        d   s°t&        j(                  d   }t+        j,                  |t.        j0                  d«      }t3        j4                  d|«      }t        j6                  ||d«      }‰ j                  j                  ‰ d|«       t9        j8                  t8        j:                  ‰ j<                  «       ‰ j                  j                  ‰ dd«       y )Nzsession z openr±   s   auth-agent-req@openssh.comrB   r7   rÚ   c                 ó,   — t        j                  | «      S r™   rø   )Úxs    r@   rk   z(SSHSession.channelOpen.<locals>.<lambda>  s   € ¤§¡¨£
€ rB   r&   r+   r"   r$   r   c                 ó$   •— ‰j                  «       S r™   )ÚsendEOF)r  r>   s    €r@   rk   z(SSHSession.channelOpen.<locals>.<lambda>Š  s   ø€  T§\¡\£^€ rB   r   r(   s	   subsystemÚTERMÚ12345678Ú4HÚ s   pty-reqs   execs   shell)r   rº   Úidro   r´   ÚsendRequestrÞ   Ú_enterRawModer   ÚSSHSessionClientÚ
escapeModeÚhandleInputÚdataReceivedÚwriteÚconnectionLostr   Ú
StandardIOr
   ÚNSrÀ   ÚenvironÚfcntlÚioctlr"   Ú
TIOCGWINSZÚstructÚunpackÚpackRequest_pty_reqr   r„   Ú_windowResized)	r>   Úfoorá   ÚcrŽ   ÚtermÚwinszÚwinSizeÚ
ptyReqDatas	   `        r@   ÚchannelOpenzSSHSession.channelOpeny  s?  ø€ Ü�‰�(˜4Ÿ7™7˜) 5Ð)Ô*Ü�7ÒØ—	‘	×%Ñ%ØÐ3°SÀAð &ó ˆAð �I‰IÑ*Ô+Ü�9ÒØÜ�IÒ¤7¨5¢>¼'À'Ò:JÜŒOÜ×$Ñ$Ó&ˆÜ�8Ò¤W¨WÒ%5ØˆDŒOØ!×-Ñ-ˆA�Nà!ŸZ™ZˆAŒNÛ3ˆÔÜ×%Ñ% aÓ(ˆŒ
ØˆÜ�;ÒØ�I‰I×!Ñ! $¨´f·i±iÄÈ	Ñ@RÓ6SÕTÜ�YÒÜ�uŠ~Ü—z‘z &Ñ)�ÜŸ™ B¬¯©¸
ÓC�Ü Ÿ-™-¨¨eÓ4�Ü$×8Ñ8¸¸wÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCÜ—‘œfŸo™o¨t×/BÑ/BÔCØ�I‰I×!Ñ! $¨´·±¼7À9Ñ;MÓ1NÕOä˜7Ò#Ü—z‘z &Ñ)�ÜŸ™ B¬¯©¸
ÓC�Ü Ÿ-™-¨¨eÓ4�Ü$×8Ñ8¸¸wÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCÜ—‘œfŸo™o¨t×/BÑ/BÔCØ�I‰I×!Ñ! $¨°#Õ6rB   c           
      ó`  — |dv rd| _         | j                  |«       y | j                   dk(  r|t        d   k(  rd| _         y | j                   dk(  �rFd| _         |dk(  r t        j                  d«       t        «        y |dk(  rd„ }t        j                  d	|«       y |d
k(  r:t        j                  d«       | j                  j                  j                  «        y |dk(  r¢| j                  j                  d«       | j                  j                  j                  «       }|j                  «        |D ]M  }| j                  j                  t        dj!                  || j                  j                  |   «      «      «       ŒO y | j                  d|z   «       y d	| _         | j                  |«       y )N)ó   
ó   r7   r   r6   ó   .zdisconnecting from escapeó   c                  ó  — t        «        t        j                  j                  «        t        j                  j                  «        t        j                  t        j                  «       t        j                  «       t        «        y r™   )Ú_leaveRawModer<   rt   Úflushrz   rÀ   ÚkillÚgetpidr   ÚSIGTSTPr  ra   rB   r@   Ú_z!SSHSession.handleInput.<locals>._²  sB   € Ü!”OÜ—J‘J×$Ñ$Ô&Ü—I‘I—O‘OÔ%Ü—G‘GœBŸI™I›K¬¯©Ô8Ü!•OrB   r   ó   Rzrekeying connectionó   #s'   
The following connections are open:
z
  #{} {}
ó   ~)r  r  ro   r   rº   rÐ   r   rh   r´   rµ   ÚsendKexInitr   r  ÚkeysÚsortr   r‡   )r>   Úcharr;  r  Ú	channelIds        r@   r  zSSHSession.handleInput¤  sh  € Ø�>Ñ!ØˆDŒOØ�J‰J�tÕØ�_‰_ Ò! d¬g°hÑ.?Ò&?ØˆD�OØ�_‰_ Ó!ØˆDŒOØ�tŠ|Ü—‘Ð3Ô4ÜÔ ØØ˜’ò$ô ×!Ñ! ! QÔ'ØØ˜’Ü—‘Ð-Ô.Ø—	‘	×#Ñ#×/Ñ/Ô1ØØ˜’Ø—
‘
× Ñ Ð!OÔPØŸ9™9×-Ñ-×2Ñ2Ó4�Ø—‘”Ø!)ò �IØ—J‘J×$Ñ$Ü%Ø*×1Ñ1Ø )¨4¯9©9×+=Ñ+=¸iÑ+Hóóõðð Ø�J‰J�t˜d‘{Õ#àˆDŒOØ�J‰J�tÕrB   c                 ó:   — | j                   j                  |«       y r™   )r   r  ©r>   ró   s     r@   r  zSSHSession.dataReceivedÑ  s   € Ø�
‰
×Ñ˜ÕrB   c                 óB  — |t         j                  k(  rŒt        j                  dt	        |«      › d�«       t        t        j                  «      t        k(  r*t        j                  j                  j                  |«       y t        j                  j                  |«       y y )Nzgot z stderr data)r   ÚEXTENDED_DATA_STDERRr   rº   r9   r   r<   rv   ÚstrÚbufferr  )r>   r#   ró   s      r@   ÚextReceivedzSSHSession.extReceivedÔ  si   € Ø”
×/Ñ/Ò/Ü�G‰G�dœ3˜t›9˜+ \Ð2Ô3Ü”c—j‘jÓ!¤SÒ(Ü—
‘
×!Ñ!×'Ñ'¨Õ-ä—
‘
× Ñ  Õ&ð 0rB   c                 ób   — t        j                  d«       | j                  j                  «        y )Nzgot eof)r   rº   r   ÚloseWriteConnectionræ   s    r@   ÚeofReceivedzSSHSession.eofReceivedÜ  s   € Ü�‰�	ÔØ�
‰
×&Ñ&Õ(rB   c                 ój   — t        j                  d| › �«       | j                  j                  | «       y )Nzremote side closed )r   rº   r´   Ú	sendCloseræ   s    r@   ÚcloseReceivedzSSHSession.closeReceivedà  s(   € Ü�‰Ð% d VÐ,Ô-Ø�	‰	×Ñ˜DÕ!rB   c                 ó˜   — t        j                  d| › �«       t        j                  t        | j                  j                  «      «       y )Nzclosed )r   rº   rõ   r´   r  ræ   s    r@   ÚclosedzSSHSession.closedä  s0   € ä�‰�'˜$˜Ð Ô!Ü�‰”�T—Y‘Y×'Ñ'Ó(Õ)rB   c                 ó€   — t        t        j                  d|«      d   «      at	        j
                  dt        › �«       y )Nz>Lr   zexit status: )rF   r%  r&  rˆ   r   rº   rE  s     r@   Úrequest_exit_statuszSSHSession.request_exit_statusé  s/   € äœŸ™ t¨TÓ2°1Ñ5Ó6ˆ
Ü�‰�-¤
˜|Ð,Õ-rB   c                 ó:   — | j                   j                  | «       y r™   )r´   r  ræ   s    r@   r  zSSHSession.sendEOFî  s   € Ø�	‰	×Ñ˜$ÕrB   c                 ó8   — | j                   j                  «        y r™   )r   ÚpauseProducingræ   s    r@   ÚstopWritingzSSHSession.stopWritingñ  s   € Ø�
‰
×!Ñ!Õ#rB   c                 ó8   — | j                   j                  «        y r™   )r   ÚresumeProducingræ   s    r@   ÚstartWritingzSSHSession.startWritingô  s   € Ø�
‰
×"Ñ"Õ$rB   c                 ó   — t        j                  dt        j                  d«      }t	        j
                  d|«      }|d   |d   |d   |d   f}| j                  j                  | dt	        j                  dg|¢­Ž «       y )	Nr   r  r  r7   r6   r²   s   window-changez!4L)	r"  r#  r"   r$  r%  r&  r´   r  Úpack)r>   r‰   r,  r-  ÚnewSizes        r@   r(  zSSHSession._windowResized÷  sk   € Ü—‘˜AœsŸ~™~¨zÓ:ˆÜ—-‘-  eÓ,ˆØ˜!‘*˜g a™j¨'°!©*°g¸a±jÐ@ˆØ�	‰	×Ñ˜dÐ$4´f·k±kÀ%Ð6RÈ'Ò6RÕSrB   N)rU   rV   rW   Únamer/  r  r  rJ  rM  rP  rR  rT  r  rX  r[  r(  ra   rB   r@   r¿   r¿   v  sF   „ Ø€Dò'7òV+òZò'ò)ò"ò*ò
.ò
 ò$ò%óTrB   r¿   c                   ó   — e Zd Zy)r¹   N©rU   rV   rW   ra   rB   r@   r¹   r¹   þ  ó   „ ØrB   r¹   c                   ó   — e Zd Zy)rÿ   Nra  ra   rB   r@   rÿ   rÿ     rb  rB   rÿ   c                  ó¤   — t         sy t        j                  j                  «       } t	        j
                  | t        j                  t        «       da y rg   )Ú
_inRawModer<   rz   r{   r"   r‚   rƒ   Ú_savedRawMode)rŽ   s    r@   r6  r6    s3   € åØÜ	�‰×	Ñ	Ó	€BÜ‡M�M�"”c—k‘k¤=Ô1Ø�JrB   c                  ó„  — t         ry t        j                  j                  «       } 	 t	        j
                  | «      }|d d  }|d   t        j                  z  |d<   |d   t        j                  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z   z  |d<   t        t        d«      r|d   t        j                   z  |d<   |d   t        j                   t        j"                  z  t        j$                  z  t        j$                  z  t        j&                  z  t        j(                  z  t        j*                  z   z  |d<   t        t        d«      r|d   t        j,                   z  |d<   |d   t        j.                   z  |d<   d|d   t        j0                  <   d|d   t        j2                  <   |at	        j6                  | t        j8                  |«       da y # t:        $ r t=        j>                  d«       Y y w xY w)Nr   ÚIUCLCr²   ÚIEXTENr7   é   znot a typewriter!) re  r<   rz   r{   r"   r|   ÚIGNPARÚISTRIPÚINLCRÚIGNCRÚICRNLÚIXONÚIXANYÚIXOFFr³   rh  ÚISIGÚICANONÚECHOÚECHOEÚECHOKÚECHONLri  ÚOPOSTÚVMINÚVTIMErf  r‚   rƒ   r~   r   rº   )rŽ   r}   Únews      r@   r  r    sï  € åØÜ	�‰×	Ñ	Ó	€Bð*Ü�m‰m˜BÓˆØ‘!ˆfˆð
 �Q‘œ#Ÿ*™*Ñ$ˆˆA‰Ø�Q‘Ü�J‰JÜ�i‰iñä�i‰iñô �i‰iñô �h‰hñ	ô
 �i‰iñô �i‰iñð
ñ 
ˆˆA‰ô ”3˜Ô Ø˜‘VœsŸy™y˜jÑ(ˆC�‰Fð �Q‘Ü�H‰HÜ�j‰jñä�h‰hñô �h‰hñô �i‰iñ	ô
 �i‰iñô �j‰jñð
ñ 
ˆˆA‰ô ”3˜Ô!Ø˜‘VœsŸz™z˜kÑ)ˆC�‰Fð �Q‘œ3Ÿ9™9˜*Ñ$ˆˆA‰àˆˆA‰Œs�x‰xÑØˆˆA‰Œs�y‰yÑàˆÜ�‰�bœ#Ÿ+™+ sÔ+à‰
øôO ò %Ü�‰Ð#Ö$ð%ús   §H ÈH?È>H?Ú__main__):r"  r¡   rÀ   r   r%  r<   r"   Útypingr   r   Útwisted.conch.clientr   r   Útwisted.conch.client.optionsr   Útwisted.conch.errorr   Útwisted.conch.sshr	   r
   r   r   r   Útwisted.internetr   r   r   r“   r   r   Útwisted.python.compatr   r   r   ro   r´   rˆ   r}   re  rf  r�   r—   r”   ry   r¨   rÉ   ri   r½   rÐ   r¶   r¦   Ú
SSHChannelr¿   r¹   rÿ   r6  r  rU   ra   rB   r@   ú<module>r†     s  ðó Û Û 	Û Û Û 
Û 
ß ç 1Ý 5Ý *ß NÕ Nß 1Ñ 1ß %ß 7ôR,�Lô R,ðl €Ø€Ø€
Ø
€Ø€
Ø€ò9òx
òòGò*)ò!òH.ò
0ò-÷
1ñ 1ô2AE�J×,Ñ,ô AEôHET�×#Ñ#ô ETôP	 z×'RÑ'Rô 	ô	 *×"HÑ"Hô 	òò/ðd ˆzÒÙ…Eð rB   