+
    üÐj¯B  ã                  óÐ  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHtH t H!t! ^ RI"H#t#H$t$H%t%H&t&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t. ^ RI/H0t0 ^ RI1H2t2 ^ RI3H4t4 ^ RI5H6t6  ^ RI7t7]! ]*Pr                  4       ! R R4      4       t: ! R R]4      t;]! ]4       ! R R4      4       t<]! ]4       ! R R4      4       t=]! ]4       ! R R4      4       t> ! R R4      t?]4P€                  ! ]=];]P6                  4       ]4P€                  ! ]<];]!P2                  4       R#   ]8 d    Rt7 L¼i ; i)z
A UNIX SSH server.
)ÚannotationsN)ÚCallableÚDictÚTuple)Úimplementer)Úttymodes)Ú	ConchUser)Ú
ConchError)ÚISessionÚ	ISFTPFileÚISFTPServer)ÚlsLine)ÚfiletransferÚ
forwardingÚsession)Ú
FXF_APPENDÚ	FXF_CREATÚFXF_EXCLÚFXF_READÚ	FXF_TRUNCÚ	FXF_WRITE)Úportal)ÚLoginDenied)ÚProcessExitedAlready)ÚIListeningPort)ÚLogger)Ú
components)ÚnativeStringc                  ó"   € ] tR t^3tR R ltRtR# )ÚUnixSSHRealmc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   Úusernamezbytes | Tuple[()]ÚmindÚobjectÚ
interfaceszportal._InterfaceItselfÚreturnzATuple[portal._InterfaceItself, UnixConchUser, Callable[[], None]]© )Úformats   "Ú4/usr/lib/python3/dist-packages/twisted/conch/unix.pyÚ__annotate__ÚUnixSSHRealm.__annotate__5   s3   € ÷ 	0ñ 	0à#ð	0ð ð	0ð -ð		0ð
 
Kñ	0ó    c                	ó    € \        V\        4      '       g   \        R 4      h\        VP	                  4       4      pV^ ,          WDP
                  3# )z5UNIX SSH realm does not authorize anonymous sessions.)Ú
isinstanceÚbytesr   ÚUnixConchUserÚdecodeÚlogout)Úselfr"   r#   r%   Úusers   &&&* r)   ÚrequestAvatarÚUnixSSHRealm.requestAvatar5   sA   € ô ˜(¤E×*Ò*ÜÐUÓVÐVÜ˜XŸ_™_Ó.Ó/ˆØ˜!�}˜d§K¡KÐ/Ð/r,   r'   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r5   Ú__static_attributes__r'   r,   r)   r   r   3   s   † ÷	0ñ 	0r,   r   c                  óX   € ] tR t^AtR R ltR tR tR tR tR t	R t
R	 R
 ltR tRtR# )r0   c               ó    € V ^8„  d   QhRRRR/# )r!   r"   Ústrr&   ÚNoner'   )r(   s   "r)   r*   ÚUnixConchUser.__annotate__B   s   € ÷ Pñ P ð P¨ñ Pr,   c                	ó  € \         P                  ! V 4       Wn        \        P                  ! V P                  4      V n        V P
                  ^,          .p\        P                  ! 4        F  w  r4rVW9   g   K  VP                  V4       K!  	  W n	        / V n
        V P                  P                  R\        P                  R\        P                   /4       V P"                  P                  R\$        P&                  /4       R# )é   s   sessions   direct-tcpips   sftpN)r   Ú__init__r"   ÚpwdÚgetpwnamÚpwdDataÚgrpÚgetgrallÚappendÚotherGroupsÚ	listenersÚchannelLookupÚupdater   Ú
SSHSessionr   ÚopenConnectForwardingClientÚsubsystemLookupr   ÚFileTransferServer)r3   r"   ÚlÚ	groupnameÚpasswordÚgidÚuserlists   &&     r)   rC   ÚUnixConchUser.__init__B   sÆ   € Ü×Ò˜4Ô Ø ŒÜ—|’| D§M¡MÓ2ˆŒØ�\‰\˜!�_ÐˆÜ25·,²,¶.Ñ.ˆI ØÖ#Ø—‘˜–ñ 3Að Ôð ð 	Œð 	×Ñ×!Ñ!àœG×.Ñ.Ø¤×!GÑ!Gðô	
ð 	×Ñ×#Ñ# W¬l×.MÑ.MÐ$NÖOr,   c                	ó(   € V P                   R ,          # ):r!   é   N©rF   ©r3   s   &r)   ÚgetUserGroupIdÚUnixConchUser.getUserGroupIdW   s   € Ø�|‰|˜CÕ Ð r,   c                	ó   € V P                   # ©N)rJ   r[   s   &r)   ÚgetOtherGroupsÚUnixConchUser.getOtherGroupsZ   s   € Ø×ÑÐr,   c                	ó(   € V P                   ^,          # )é   rZ   r[   s   &r)   Ú
getHomeDirÚUnixConchUser.getHomeDir]   ó   € Ø�|‰|˜A�Ðr,   c                	ó(   € V P                   ^,          # )é   rZ   r[   s   &r)   ÚgetShellÚUnixConchUser.getShell`   rf   r,   c           	     	ó�  € \         P                  ! V4      w  r#^ RIHp  V P	                  VP
                  V\         P                  ! V P                  W#3\         P                  4      VR7      pWPP                  W#3&   V^ 8X  d1   VP                  4       ^,          p^\        P                  ! RV4      3# ^#   \         d     ^ # i ; i)é    ©Úreactor)Ú	interfacez>L)r   ÚunpackGlobal_tcpip_forwardÚtwisted.internetrn   Ú
_runAsUserÚ	listenTCPÚSSHListenForwardingFactoryÚconnÚ SSHListenServerForwardingChannelrK   ÚgetHostÚstructÚpackÚBaseException)r3   ÚdataÚ
hostToBindÚ
portToBindrn   Úlisteners   &&    r)   Úglobal_tcpip_forwardÚ"UnixConchUser.global_tcpip_forwardc   s¾   € Ü!+×!FÒ!FÀtÓ!LÑˆ
Ý,ð	Ø—‘Ø×!Ñ!ØÜ×5Ò5Ø—I‘IØÐ,Ü×?Ñ?óð
 %ð 'ó 	ˆHð 8@�N‰N˜JÐ3Ñ4Ø˜QŒØ%×-Ñ-Ó/°Õ2�
Øœ&Ÿ+š+ d¨JÓ7Ð7Ð7áøô ô 	Úð	ús    AB6 Â6CÃCc                	óÖ   € \         P                  ! V4      w  r#V P                  P                  W#3R 4      pV'       g   ^ # V P                  W#3 V P	                  VP
                  4       ^# r_   )r   rp   rK   Úgetrr   ÚstopListening)r3   r{   r|   r}   r~   s   &&   r)   Úglobal_cancel_tcpip_forwardÚ)UnixConchUser.global_cancel_tcpip_forward|   sX   € Ü!+×!FÒ!FÀtÓ!LÑˆ
Ø—>‘>×%Ñ% zÐ&>ÀÓEˆßÙØ�N‰N˜JÐ3Ð4Ø�‰˜×.Ñ.Ô/Ùr,   c               ó   € V ^8„  d   QhRR/# )r!   r&   r?   r'   )r(   s   "r)   r*   r@   …   s   € ÷ 
ñ 
˜ñ 
r,   c                	óô   € V P                   P                  4        F  pV P                  VP                  4       K   	  V P                  P                  R V P                  \        V P                   4      R7       R# )z,avatar {username} logging out ({nlisteners}))r"   Ú
nlistenersN)rK   Úvaluesrr   rƒ   Ú_logÚinfor"   Úlen)r3   r~   s   & r)   r2   ÚUnixConchUser.logout…   sV   € àŸ™×-Ñ-Ö/ˆHØ�O‰O˜H×2Ñ2Ö3ñ 0à�	‰	�‰Ø:Ø—]‘]Ü˜4Ÿ>™>Ó*ð 	ö 	
r,   c                	ó€  € \         P                  ! 4       p\         P                  ! 4       p\         P                  ! 4       pV P	                  4       w  rx\         P
                  ! ^ 4       \         P                  ! ^ 4       \         P                  ! V P                  4       4       \         P
                  ! V4       \         P                  ! V4        \        V4      p V Ff  p	V	^ ,          p
\        V	4      ^8„  ;'       d    V	^,          ;'       g    Rp\        V	4      ^8„  ;'       d    V	^,          ;'       g    / pV
! V/ VB pKh  	  \         P
                  ! ^ 4       \         P                  ! ^ 4       \         P                  ! V4       \         P
                  ! V4       \         P                  ! V4       X#   \         d	    YT3.p Lïi ; i  \         P
                  ! ^ 4       \         P                  ! ^ 4       \         P                  ! T4       \         P
                  ! T4       \         P                  ! T4       i ; i)rl   r'   )ÚosÚgeteuidÚgetegidÚ	getgroupsr\   ÚsetegidÚseteuidÚ	setgroupsr`   ÚiterÚ	TypeErrorrŒ   )r3   ÚfÚargsÚkwÚeuidÚegidÚgroupsÚuidrU   ÚiÚfuncÚrs   &&*,        r)   rr   ÚUnixConchUser._runAsUser�   s…  € Ü�zŠz‹|ˆÜ�zŠz‹|ˆÜ—’“ˆØ×&Ñ&Ó(‰ˆÜ
�
Š
�1ŒÜ
�
Š
�1ŒÜ
�Š�T×(Ñ(Ó*Ô+Ü
�
Š
�3ŒÜ
�
Š
�3Œð	 Ü�Q“ˆAð	Û�Ø˜•t�Ü˜1“v ‘z×*Ð* a¨¥d×0Ð0¨b�Ü˜“V˜a‘Z×(Ð( A a¥D×.Ð.¨B�Ù˜$Ð% "Ñ%’ñ	 ô �JŠJ�qŒMÜ�JŠJ�qŒMÜ�LŠL˜Ô Ü�JŠJ�tÔÜ�JŠJ�tÔØˆøô ô 	 Ø˜2��ŠAð	 ûô �JŠJ�qŒMÜ�JŠJ�qŒMÜ�LŠL˜Ô Ü�JŠJ�tÔÜ�JŠJ�tÕús7   ÃF7 Ã"G Ã>G ÄG Ä'G Ä8G Æ7G
Ç	G
ÇA0H=)rK   rJ   rF   r"   N)r7   r8   r9   r:   rC   r\   r`   rd   ri   r   r„   r2   rr   r;   r'   r,   r)   r0   r0   A   s0   † õPò*!ò òòòò2õ
ör,   r0   c                  ón   € ] tR t^¬t]! 4       tRR ltRR ltR tR t	R t
R tR tR	 tR
 tR tR tRtR# )ÚSSHSessionForUnixConchUserNc                ó`   € Vf   ^ RI Hp W n        Wn        RR/V n        RV n        ^ V n        R# )zç
Construct an C{SSHSessionForUnixConchUser}.

@param avatar: The L{UnixConchUser} for whom this is an SSH session.
@param reactor: An L{IReactorProcess} used to handle shell and exec
    requests. Uses the default reactor if None.
Nrm   ÚPATHz/bin:/usr/bin:/usr/local/bin)rq   rn   Ú_reactorÚavatarÚenvironÚptyÚptyTuple)r3   r¨   rn   s   &&&r)   rC   Ú#SSHSessionForUnixConchUser.__init__°   s1   € ð Š?Ý0ØŒØŒØÐ >Ð?ˆŒØˆŒØˆŽr,   c                	óV  € \         '       g   R # V P                  P                  P                  P                  P	                  4       P
                  p\        P                  ! R\        P                  ! V4      4      w  pV P                  ^,          R,          p\        P                  ! 4       p\        V4      p\        WV,
          R,          4      p\         P                  ! 4       pT;'       d    \         P                  ;'       g    \         P                  Vn        V P"                  P$                  Vn        WHn        VRR  Vn        Wg3Vn        V'       dI   V P                  P.                  Vn        \        P2                  ! V4      ^ ,          Vn        V^ ^ ^ 3Vn        \         P8                  ! \         P:                  4      p	V	P=                  V4       V	P?                  4        \         P8                  ! \         P@                  4      p
V
P=                  V4       V
P?                  4        R # )NÚL:rc   NNg    €„.Aéüÿÿÿ)!Úutmpr¨   ru   Ú	transportÚgetPeerÚhostrx   ÚunpackÚsocketÚ	inet_atonr«   ÚtimeÚintÚ	UtmpEntryÚUSER_PROCESSÚDEAD_PROCESSÚut_typerª   ÚpidÚut_pidÚut_lineÚut_idÚut_tvr"   Úut_userÚgethostbyaddrÚut_hostÚ
ut_addr_v6Ú
UtmpRecordÚ	UTMP_FILEÚ	pututlineÚendutentÚ	WTMP_FILE)r3   ÚloggedInÚ	ipAddressÚpackedIpÚttyNameÚtÚt1Út2ÚentryÚaÚbs   &&         r)   ÚaddUTMPEntryÚ'SSHSessionForUnixConchUser.addUTMPEntryÀ   sk  € ß‹tÙØ—K‘K×$Ñ$×.Ñ.×8Ñ8×@Ñ@ÓB×GÑGˆ	Ü—m’m C¬×)9Ò)9¸)Ó)DÓE‰ˆØ—-‘- Õ" 2Õ&ˆÜ�IŠI‹KˆÜ�‹VˆÜ�!•&˜C•Ó ˆÜ—’Ó ˆØ ×6Ð6¤T×%6Ñ%6×KÐK¼$×:KÑ:KˆŒØ—x‘x—|‘|ˆŒØŒØ˜b˜c�lˆŒØ�hˆŒßØ ŸK™K×0Ñ0ˆEŒMÜ"×0Ò0°Ó;¸AÕ>ˆEŒMØ (¨!¨Q°Ð2ˆEÔÜ�OŠOœDŸN™NÓ+ˆØ	�‰�EÔØ	�
‰
ŒÜ�OŠOœDŸN™NÓ+ˆØ	�‰�EÔØ	�
‰
Žr,   c                	óÂ   € WP                   R &   W n        W0n        \        P                  ! 4       w  rE\
        P                  ! V4      pW`P                   R&   WEV3V n        R# )ÚTERMÚSSH_TTYN)r©   ÚwinSizeÚmodesrª   Úopenptyr�   Úttynamer«   )r3   ÚtermÚ
windowSizerÛ   ÚmasterÚslaverÝ   s   &&&&   r)   ÚgetPtyÚ!SSHSessionForUnixConchUser.getPtyÚ   sK   € Ø#�‰�VÑØ!ŒØŒ
ÜŸš›‰ˆÜ—*’*˜UÓ#ˆØ")�‰�YÑØ¨Ð0ˆŽr,   c                	óº  € V P                   '       g'   V P                  P                  R 4       \        R4      hV P                  P                  4       w  r#V P                  P                  4       pV P                  P                  4       pV P                  P                  V P                  R&   W@P                  R&   WPP                  R&   \        P                  P                  V4      pV P                  P                  P                  P                  P                  4       pV P                  P                  P                  P                  P!                  4       pVP"                   RVP$                   RVP$                   2V P                  R&   V P'                  4        V P(                  P+                  VVRV 2.V P                  VVVV P                   R7      V n        V P/                  4        \0        P2                  ! V P,                  P5                  4       \6        P8                  \:        P<                  ! R	.V P>                  O5!  4       V P@                  '       d   V PC                  4        VP                  PD                  V n#        V PH                  VP                  n"        V P                  P                  P                  P                  PK                  ^4       R
# )z'tried to get shell without pty, failingzno ptyÚUSERÚHOMEÚSHELLÚ Ú
SSH_CLIENTÚ-©ÚusePTYÚ4HN)&r«   rŠ   Úerrorr	   r¨   r\   rd   ri   r"   r©   r�   ÚpathÚbasenameru   r±   r²   rw   r³   ÚportÚgetPtyOwnershipr§   ÚspawnProcessrª   rÕ   ÚfcntlÚioctlÚfilenoÚttyÚ
TIOCSWINSZrx   ry   rÚ   rÛ   ÚsetModesÚwriteÚoldWriteÚ
_writeHackÚsetTcpNoDelay)	r3   Úprotorž   rU   ÚhomeDirÚshellÚ	shellExecÚpeerr³   s	   &&       r)   Ú	openShellÚ$SSHSessionForUnixConchUser.openShellã   sü  € Ø�}�}ˆ}Ø�I‰I�O‰OÐEÔFÜ˜XÓ&Ð&Ø—;‘;×-Ñ-Ó/‰ˆØ—+‘+×(Ñ(Ó*ˆØ—‘×$Ñ$Ó&ˆØ#Ÿ{™{×3Ñ3ˆ�‰�VÑØ&�‰�VÑØ %�‰�WÑÜ—G‘G×$Ñ$ UÓ+ˆ	Ø�{‰{×Ñ×)Ñ)×3Ñ3×;Ñ;Ó=ˆØ�{‰{×Ñ×)Ñ)×3Ñ3×;Ñ;Ó=ˆØ(,¯	©	 {°!°D·I±I°;¸aÀÇ	Á	¸{Ð%Kˆ�‰�\Ñ"Ø×ÑÔØ—=‘=×-Ñ-ØØØ��ˆ_ÐØ�L‰LØØØØ—=‘=ð .ó 	
ˆŒð 	×ÑÔÜ�Š�D—H‘H—O‘OÓ%¤s§~¡~´v·{²{À4Ð7WÈ$Ï,É,Ó7WÔXØ�:�:ˆ:Ø�M‰MŒOØŸ™×-Ñ-ˆŒØ $§¡ˆ�‰ÔØ�‰×Ñ×"Ñ"×,Ñ,×:Ñ:¸1Ö=r,   c                	óô  € V P                   P                  4       w  r4V P                   P                  4       pV P                   P                  4       ;'       g    R pWPP                  R&   VRV3pV P                   P
                  P                  P                  P                  4       pV P                   P
                  P                  P                  P                  4       p	VP                   RVP                   RV	P                   2V P                  R&   V P                  '       d   V P                  4        V P                  P                  TTTV P                  TTTV P                  ;'       g    ^ R7      V n        V P                  '       d3   V P!                  4        V P"                  '       d   V P%                  4        V P                   P
                  P                  P                  P'                  ^4       R# )z/bin/shræ   z-crè   ré   rë   N)r¨   r\   rd   ri   r©   ru   r±   r²   rw   r³   rñ   r«   rò   r§   ró   rª   rÕ   rÛ   rù   rý   )
r3   rþ   Úcmdrž   rU   rÿ   r   Úcommandr  r³   s
   &&&       r)   ÚexecCommandÚ&SSHSessionForUnixConchUser.execCommand  sr  € Ø—;‘;×-Ñ-Ó/‰ˆØ—+‘+×(Ñ(Ó*ˆØ—‘×$Ñ$Ó&×3Ð3¨)ˆØ&�‰�VÑØ˜$ Ð$ˆØ�{‰{×Ñ×)Ñ)×3Ñ3×;Ñ;Ó=ˆØ�{‰{×Ñ×)Ñ)×3Ñ3×;Ñ;Ó=ˆØ(,¯	©	 {°!°D·I±I°;¸aÀÇ	Á	¸{Ð%Kˆ�‰�\Ñ"Ø�=�=ˆ=Ø× Ñ Ô"Ø—=‘=×-Ñ-ØØØØ�L‰LØØØØ—=‘=×%Ð% Að .ó 	
ˆŒð �=�=ˆ=Ø×ÑÔØ�z�zˆzØ—‘”Ø�‰×Ñ×"Ñ"×,Ñ,×:Ñ:¸1Ö=r,   c                	óP  € \         P                  ! V P                  ^,          4      ^,          pV P                  P	                  4       w  r#\         P
                  ! 4       \         P                  ! 4       rT\         P                  ! ^ 4       \         P                  ! ^ 4        \         P                  ! V P                  ^,          W!4       \         P                  ! V4       \         P                  ! V4       R#   \         P                  ! T4       \         P                  ! T4       i ; i)r!   N)
r�   Ústatr«   r¨   r\   r�   r‘   r“   r”   Úchown)r3   ÚttyGidrž   rU   r›   rœ   s   &     r)   rò   Ú*SSHSessionForUnixConchUser.getPtyOwnership  s«   € Ü—’˜Ÿ™ qÕ)Ó*¨1Õ-ˆØ—;‘;×-Ñ-Ó/‰ˆÜ—Z’Z“\¤2§:¢:£<ˆdÜ
�
Š
�1ŒÜ
�
Š
�1Œð	Ü�HŠH�T—]‘] 1Õ% sÔ3ä�JŠJ�tÔÜ�JŠJ�tÖøô �JŠJ�tÔÜ�JŠJ�tÕús   Â!(C7 Ã7.D%c                	ó€  € V P                   p\        P                  ! VP                  ! 4       4      pV P                   EFF  w  r4V\
        P                  9  d   K  \
        P                  V,          p\        V4      ^8X  d\   Vw  rg\        \        V4      '       g   K`  \        \        V4      pV'       d   W&,          V,          W&&   K‹  W&,          V( ,          W&&   KŸ  VR8X  d'   \        \        RV 24      V\        P                  &   KÌ  VR8X  d'   \        \        RV 24      V\        P                  &   Kù  \        \        V4      '       g   EK  \        \        V4      p\        V34      V\        P                  ,          V&   EKI  	  \        P                  ! VP                  ! 4       \        P                  V4       R# )r!   ÚOSPEEDÚBÚISPEEDN)rª   r÷   Ú	tcgetattrrö   rÛ   r   ÚTTYMODESrŒ   ÚhasattrÚgetattrr  r  r/   ÚCCÚ	tcsetattrÚTCSANOW)	r3   rª   ÚattrÚmodeÚ	modeValueÚttyModeÚflagÚttyAttrÚttyvals	   &        r)   rù   Ú#SSHSessionForUnixConchUser.setModes+  s7  € Ø�h‰hˆÜ�}Š}˜SŸZšZ›\Ó*ˆØ#Ÿz�z‰OˆDØœ8×,Ñ,Ô,ÙÜ×'Ñ'¨Õ-ˆGÜ�7‹|˜qÔ Ø '‘�Üœs G×,Ò,ÙÜ ¤ gÓ.�ßØ!%¥¨fÕ!4�D“Jà!%¥¨v¨gÕ!5�D“JØ˜HÔ$Ü#*¬3°!°I°;°Ó#@�”S—Z‘ZÓ Ø˜HÔ$Ü#*¬3°!°I°;°Ó#@�”S—Z‘ZÓ äœs G×,Ò,ÚÜ ¤ gÓ.�Ü',¨i¨\Ó':�”S—V‘V•˜VÔ$ñ+  *ô, 	�Š�c—j’j“l¤C§K¡K°Ö6r,   c                	ób   € V P                   '       d   V P                   P                  4        R # R # r_   )rª   Ú
closeStdinr[   s   &r)   ÚeofReceivedÚ&SSHSessionForUnixConchUser.eofReceivedF  s    € Ø�8�8ˆ8Ø�H‰H×ÑÖ!ñ r,   c                	óZ  € V P                   '       dŽ   \        P                  P                  V P                   ^,          4      '       dX   \        P                  ! V P                   ^,          4      ^,          p\        P
                  ! V P                   ^,          ^ V4       V P                  '       dH    V P                  P                  R4       V P                  P                  4        V P                  ^ 4       V P                  P                  R4       R#   \        \        3 d     L[i ; i)r!   ÚHUPzshell closedN)r«   r�   rï   Úexistsr  r  rª   ÚsignalProcessÚOSErrorr   ÚloseConnectionrÕ   rŠ   r‹   )r3   ÚttyGIDs   & r)   ÚclosedÚ!SSHSessionForUnixConchUser.closedJ  sÅ   € Ø�=�=ˆ=œRŸW™WŸ^™^¨D¯M©M¸!Õ,<×=Ò=Ü—W’W˜TŸ]™]¨1Õ-Ó.¨qÕ1ˆFÜ�HŠH�T—]‘] 1Õ% q¨&Ô1Ø�8�8ˆ8ðØ—‘×&Ñ& uÔ-ð �H‰H×#Ñ#Ô%Ø×Ñ˜aÔ Ø�	‰	�‰�~Ö&øô	 Ô1Ð2ô Ùðús   Â3D ÄD*Ä)D*c                	óÎ   € Wn         \        P                  ! V P                  P	                  4       \
        P                  \        P                  ! R .V P                   O5!  4       R# )rí   N)	rÚ   rô   rõ   rª   rö   r÷   rø   rx   ry   )r3   rÚ   s   &&r)   ÚwindowChangedÚ(SSHSessionForUnixConchUser.windowChangedW  s8   € ØŒÜ�Š�D—H‘H—O‘OÓ%¤s§~¡~´v·{²{À4Ð7WÈ$Ï,É,Ó7WÖXr,   c                ó®  € V P                   e¶   \        P                  ! V P                   P                  4       4      ^,          pV\        P                  ,          '       gd   V\        P
                  ,          '       dG   V P                  P                  P                  P                  R^\        V4      ,           ,          4       V P                  V4       R# )z6
Hack to send ignore messages when we aren't echoing.
NÚ )rª   r÷   r  rö   ÚECHOÚICANONr¨   ru   r±   Ú
sendIgnorerŒ   rû   )r3   r{   r  s   && r)   rü   Ú%SSHSessionForUnixConchUser._writeHack[  s~   € ð �8‰8ÒÜ—=’= §¡§¡Ó!2Ó3°AÕ6ˆDØœ#Ÿ(™(—?”? t¬c¯j©j×'8Ô'8Ø—‘× Ñ ×*Ñ*×5Ñ5°fÀÄCÈÃIÅÕ6NÔOØ�‰�dÖr,   )r§   r¨   r©   rÛ   rû   rª   r«   rÚ   r_   )é   )r7   r8   r9   r:   r   rŠ   rC   rÕ   râ   r  r  rò   rù   r$  r-  r0  rü   r;   r'   r,   r)   r¤   r¤   ¬   sB   † á‹8€Dôô ò41ò>òB>ò6
ò7ò6"ò'òYör,   r¤   c                  ó|   € ] tR tRtR tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tRtR# )ÚSFTPServerForUnixConchUserif  c                	ó   € Wn         R # r_   ©r¨   )r3   r¨   s   &&r)   rC   Ú#SFTPServerForUnixConchUser.__init__h  s   € ØŽr,   c                ó$  € RV9   d-   RV9   d&   \         P                  ! WR,          VR,          4       RV9   d   \         P                  ! WR,          4       RV9   d2   RV9   d)   \         P                  ! WR,          VR,          34       R# R# R# )zT
NOTE: this function assumes it runs as the logged-in user:
i.e. under _runAsUser()
rž   rU   ÚpermissionsÚatimeÚmtimeN)r�   r  ÚchmodÚutime©r3   rï   Úattrss   &&&r)   Ú	_setAttrsÚ$SFTPServerForUnixConchUser._setAttrsk  sp   € ð
 �EŒ>˜e uœnÜ�HŠH�T �<¨¨u­Ô6Ø˜EÔ!Ü�HŠH�T Õ/Ô0Ø�eÔ ¨5Ô 0Ü�HŠH�T '�N¨E°'­NÐ;Ö<ñ !1Ñr,   c                	óº   € R VP                   RVP                  RVP                  RVP                  R\	        VP
                  4      R\	        VP                  4      /# )Úsizerž   rU   r?  r@  rA  )Úst_sizeÚst_uidÚst_gidÚst_moder¸   Úst_atimeÚst_mtime©r3   Úss   &&r)   Ú	_getAttrsÚ$SFTPServerForUnixConchUser._getAttrsw  sJ   € à�A—I‘IØ�1—8‘8Ø�1—8‘8Ø˜1Ÿ9™9Ø”S˜Ÿ™“_Ø”S˜Ÿ™“_ð
ð 	
r,   c                	ó®   € V P                   P                  4       p\        P                  P	                  \        VP                  4      \        V4      4      # r_   )r¨   rd   r�   rï   Újoinr   )r3   rï   Úhomes   && r)   Ú_absPathÚ#SFTPServerForUnixConchUser._absPath�  s7   € Ø�{‰{×%Ñ%Ó'ˆÜ�w‰w�|‰|œL¨¯©Ó3´\À$Ó5GÓHÐHr,   c                	ó   € / # r_   r'   )r3   ÚotherVersionÚextDatas   &&&r)   Ú
gotVersionÚ%SFTPServerForUnixConchUser.gotVersion…  s   € Øˆ	r,   c                	ó8   € \        W P                  V4      W#4      # r_   )ÚUnixSFTPFilerW  )r3   ÚfilenameÚflagsrE  s   &&&&r)   ÚopenFileÚ#SFTPServerForUnixConchUser.openFileˆ  s   € Ü˜D§-¡-°Ó"9¸5ÓHÐHr,   c                	óx   € V P                  V4      pV P                  P                  \        P                  V4      # r_   )rW  r¨   rr   r�   Úremove)r3   r`  s   &&r)   Ú
removeFileÚ%SFTPServerForUnixConchUser.removeFile‹  s+   € Ø—=‘= Ó*ˆØ�{‰{×%Ñ%¤b§i¡i°Ó:Ð:r,   c                	óš   € V P                  V4      pV P                  V4      pV P                  P                  \        P                  W4      # r_   )rW  r¨   rr   r�   Úrename)r3   ÚoldpathÚnewpaths   &&&r)   Ú
renameFileÚ%SFTPServerForUnixConchUser.renameFile�  s9   € Ø—-‘- Ó(ˆØ—-‘- Ó(ˆØ�{‰{×%Ñ%¤b§i¡i°ÓBÐBr,   c                	óš   € V P                  V4      pV P                  P                  \        P                  V33V P
                  W33.4      # r_   )rW  r¨   rr   r�   ÚmkdirrF  rD  s   &&&r)   ÚmakeDirectoryÚ(SFTPServerForUnixConchUser.makeDirectory”  sE   € Ø�}‰}˜TÓ"ˆØ�{‰{×%Ñ%Ü�h‰h˜˜Ð  4§>¡>°D°=Ð"AÐBó
ð 	
r,   c                	ó|   € V P                  V4      pV P                  P                  \        P                  V4       R # r_   )rW  r¨   rr   r�   Úrmdir©r3   rï   s   &&r)   ÚremoveDirectoryÚ*SFTPServerForUnixConchUser.removeDirectoryš  s(   € Ø�}‰}˜TÓ"ˆØ�‰×ÑœrŸx™x¨Ö.r,   c                	ó6   € \        W P                  V4      4      # r_   )ÚUnixSFTPDirectoryrW  rt  s   &&r)   ÚopenDirectoryÚ(SFTPServerForUnixConchUser.openDirectoryž  s   € Ü  §}¡}°TÓ':Ó;Ð;r,   c                	ó   € V P                  V4      pV'       d,   V P                  P                  \        P                  V4      pM*V P                  P                  \        P
                  V4      pV P                  V4      # r_   )rW  r¨   rr   r�   r  ÚlstatrR  )r3   rï   ÚfollowLinksrQ  s   &&& r)   ÚgetAttrsÚ#SFTPServerForUnixConchUser.getAttrs¡  sV   € Ø�}‰}˜TÓ"ˆßØ—‘×&Ñ&¤r§w¡w°Ó5‰Aà—‘×&Ñ&¤r§x¡x°Ó6ˆAØ�~‰~˜aÓ Ð r,   c                	ót   € V P                  V4      pV P                  P                  V P                  W4       R # r_   )rW  r¨   rr   rF  rD  s   &&&r)   ÚsetAttrsÚ#SFTPServerForUnixConchUser.setAttrs©  s(   € Ø�}‰}˜TÓ"ˆØ�‰×Ñ˜tŸ~™~¨tÖ;r,   c                	óx   € V P                  V4      pV P                  P                  \        P                  V4      # r_   )rW  r¨   rr   r�   Úreadlinkrt  s   &&r)   ÚreadLinkÚ#SFTPServerForUnixConchUser.readLink­  s+   € Ø�}‰}˜TÓ"ˆØ�{‰{×%Ñ%¤b§k¡k°4Ó8Ð8r,   c                	óš   € V P                  V4      pV P                  V4      pV P                  P                  \        P                  W!4      # r_   )rW  r¨   rr   r�   Úsymlink)r3   ÚlinkPathÚ
targetPaths   &&&r)   ÚmakeLinkÚ#SFTPServerForUnixConchUser.makeLink±  s9   € Ø—=‘= Ó*ˆØ—]‘] :Ó.ˆ
Ø�{‰{×%Ñ%¤b§j¡j°*ÓGÐGr,   c                	ó^   € \         P                  P                  V P                  V4      4      # r_   )r�   rï   ÚrealpathrW  rt  s   &&r)   ÚrealPathÚ#SFTPServerForUnixConchUser.realPath¶  s    € Ü�w‰w×Ñ §¡¨dÓ 3Ó4Ð4r,   c                	ó   € \         hr_   ©ÚNotImplementedError)r3   ÚextNamer[  s   &&&r)   ÚextendedRequestÚ*SFTPServerForUnixConchUser.extendedRequest¹  ó   € Ü!Ð!r,   r<  N)r7   r8   r9   r:   rC   rF  rR  rW  r\  rb  rf  rl  rp  ru  ry  r~  r�  r…  r‹  r�  r•  r;   r'   r,   r)   r:  r:  f  s[   † òò
=ò
òIòòIò;òCò

ò/ò<ò!ò<ò9òHò
5ö"r,   r:  c                  ó:   € ] tR tRtR tR tR tR tR tR t	Rt
R	# )
r_  i½  c                	óÀ  € Wn         ^ pV\        ,          \        8X  d#   V\        ,          ^ 8X  d   \        P                  pV\        ,          \        8X  d#   V\        ,          ^ 8X  d   \        P
                  pV\        ,          \        8X  d'   V\        ,          \        8X  d   \        P                  pV\        ,          \        8X  d   V\        P                  ,          pV\        ,          \        8X  d   V\        P                  ,          pV\        ,          \        8X  d   V\        P                  ,          pV\        ,          \        8X  d   V\        P                  ,          pRV9   d   VR,          pVR MRpVP                  P!                  \        P"                  W%V4      pV'       d'   VP                  P!                  VP$                  W$4       Wpn        R# )rl   r?  iÿ  N)Úserverr   r   r�   ÚO_RDONLYÚO_WRONLYÚO_RDWRr   ÚO_APPENDr   ÚO_CREATr   ÚO_TRUNCr   ÚO_EXCLr¨   rr   ÚopenrF  Úfd)r3   rš  r`  ra  rE  Ú	openFlagsr  r£  s   &&&&&   r)   rC   ÚUnixSFTPFile.__init__¿  s;  € ØŒØˆ	Ø”8ÕœxÔ'¨E´IÕ,=ÀÔ,BÜŸ™ˆIØ”9Õ¤	Ô)¨e´hÕ.>À!Ô.CÜŸ™ˆIØ”9Õ¤	Ô)¨e´hÕ.>Ä(Ô.JÜŸ	™	ˆIØ”:Õ¤Ô+ØœŸ™Õ$ˆIØ”9Õ¤	Ô)ØœŸ™Õ#ˆIØ”9Õ¤	Ô)ØœŸ™Õ#ˆIØ”8ÕœxÔ'ØœŸ™Õ"ˆIØ˜EÔ!Ø˜Õ'ˆDØ�mÑ$àˆDØ�]‰]×%Ñ%¤b§g¡g¨xÀDÓIˆßØ�M‰M×$Ñ$ V×%5Ñ%5°xÔGØŽr,   c                	ó~   € V P                   P                  P                  \        P                  V P
                  4      # r_   )rš  r¨   rr   r�   Úcloser£  r[   s   &r)   r§  ÚUnixSFTPFile.closeÚ  s'   € Ø�{‰{×!Ñ!×,Ñ,¬R¯X©X°t·w±wÓ?Ð?r,   c                	óÂ   € V P                   P                  P                  \        P                  V P
                  V^ 33\        P                  V P
                  V33.4      # ©rl   )rš  r¨   rr   r�   Úlseekr£  Úread)r3   ÚoffsetÚlengths   &&&r)   Ú	readChunkÚUnixSFTPFile.readChunkÝ  sM   € Ø�{‰{×!Ñ!×,Ñ,Ü�h‰h˜Ÿ™ &¨!Ð,Ð-´·±¸$¿'¹'À6Ð9JÐ/KÐLó
ð 	
r,   c                	óÂ   € V P                   P                  P                  \        P                  V P
                  V^ 33\        P                  V P
                  V33.4      # rª  )rš  r¨   rr   r�   r«  r£  rú   )r3   r­  r{   s   &&&r)   Ú
writeChunkÚUnixSFTPFile.writeChunkâ  sL   € Ø�{‰{×!Ñ!×,Ñ,Ü�h‰h˜Ÿ™ &¨!Ð,Ð-´·±¸4¿7¹7ÀD¸/Ð/JÐKó
ð 	
r,   c                	ó´   € V P                   P                  P                  \        P                  V P
                  4      pV P                   P                  V4      # r_   )rš  r¨   rr   r�   Úfstatr£  rR  rP  s   & r)   r~  ÚUnixSFTPFile.getAttrsç  s;   € Ø�K‰K×Ñ×)Ñ)¬"¯(©(°D·G±GÓ<ˆØ�{‰{×$Ñ$ QÓ'Ð'r,   c                	ó   € \         hr_   r’  )r3   rE  s   &&r)   r�  ÚUnixSFTPFile.setAttrsë  r—  r,   )r£  rš  N)r7   r8   r9   r:   rC   r§  r¯  r²  r~  r�  r;   r'   r,   r)   r_  r_  ½  s!   † òò6@ò
ò

ò
(ö"r,   r_  c                  ó2   € ] tR tRtR tR tR t]tR tRt	R# )rx  iï  c                	ó|   € Wn         VP                  P                  \        P                  V4      V n        W n        R # r_   )rš  r¨   rr   r�   ÚlistdirÚfilesÚdir)r3   rš  Ú	directorys   &&&r)   rC   ÚUnixSFTPDirectory.__init__ð  s(   € ØŒØ—]‘]×-Ñ-¬b¯j©j¸)ÓDˆŒ
ØŽr,   c                	ó   € V # r_   r'   r[   s   &r)   Ú__iter__ÚUnixSFTPDirectory.__iter__õ  s   € Øˆr,   c                	óp  €  V P                   P                  ^ 4      pV P                  P                  P	                  \
        P                  \
        P                  P                  V P                  V4      4      p\        W4      pV P                  P                  V4      pWV3#   \         d    \        hi ; irª  )r¼  Úpoprš  r¨   rr   r�   r|  rï   rU  r½  r   rR  Ú
IndexErrorÚStopIteration)r3   r˜   rQ  ÚlongnamerE  s   &    r)   Ú__next__ÚUnixSFTPDirectory.__next__ø  s�   € ð	(Ø—
‘
—‘˜qÓ!ˆAð —‘×"Ñ"×-Ñ-¬b¯h©h¼¿¹¿¹ÀTÇXÁXÈqÓ8QÓRˆAÜ˜a“|ˆHØ—K‘K×)Ñ)¨!Ó,ˆEØ Ð'Ð'øô ô 	 ÜÐð	 ús   ‚B# Â#B5c                	ó   € . V n         R # r_   )r¼  r[   s   &r)   r§  ÚUnixSFTPDirectory.close  s	   € ØˆŽ
r,   )r½  r¼  rš  N)
r7   r8   r9   r:   rC   rÁ  rÈ  Únextr§  r;   r'   r,   r)   rx  rx  ï  s   † òò
ò	(ð €Dör,   rx  )AÚ__doc__Ú
__future__r   rô   rG   r�   rª   rD   rµ   rx   r·   r÷   Útypingr   r   r   Úzope.interfacer   Útwisted.conchr   Útwisted.conch.avatarr   Útwisted.conch.errorr	   Útwisted.conch.interfacesr
   r   r   Útwisted.conch.lsr   Útwisted.conch.sshr   r   r   Útwisted.conch.ssh.filetransferr   r   r   r   r   r   Útwisted.credr   Útwisted.cred.errorr   Útwisted.internet.errorr   Útwisted.internet.interfacesr   Útwisted.loggerr   Útwisted.pythonr   Útwisted.python.compatr   r°   ÚImportErrorÚIRealmr   r0   r¤   r:  r_  rx  ÚregisterAdapterr'   r,   r)   Ú<module>râ     sa  ðñõ #ã Û 
Û 	Û 
Û 
Û Û Û Û 
ß (Ñ (å &å "Ý *Ý *ß EÑ EÝ #ß ?Ñ ?÷÷ õ  Ý *Ý 7Ý 6Ý !Ý %Ý .ðÛñ
 ˆV�]‰]Ó÷
0ð 
0ó ð
0ôh�Iô hñV ˆXÓ÷vð vó ðvñr ˆ[Ó÷S"ð S"ó ðS"ñl ˆYÓ÷."ð ."ó ð."÷bñ ð4 × Ò Ø ¨|×/GÑ/Gôð × Ò Ð5°}Àg×FVÑFVÖ Wøð{ ô Ø‚Dðús   Â$E Å	E%Å$E%