§
    Ètºf¯B  ã                  óü  — d Z ddlm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	Z	ddl
Z
ddlZddlmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 	 ddl7Z7n# e8$ r dZ7Y nw xY w ee*j9        ¦  «         G d„ d¦  «        ¦   «         Z: G d„ de¦  «        Z; ee¦  «         G d„ d¦  «        ¦   «         Z< ee¦  «         G d„ d¦  «        ¦   «         Z= ee¦  «         G d„ d¦  «        ¦   «         Z> G d„ d¦  «        Z? e4j@        e=e;ej        ¦  «          e4j@        e<e;e!j        ¦  «         dS ) 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                  ó   — e Zd Zdd	„Zd
S )ÚUnixSSHRealmÚusernameúbytes | Tuple[()]ÚmindÚobjectÚ
interfacesúportal._InterfaceItselfÚreturnúATuple[portal._InterfaceItself, UnixConchUser, Callable[[], None]]c                ó¬   — t          |t          ¦  «        st          d¦  «        ‚t          |                     ¦   «         ¦  «        }|d         ||j        fS )Nz5UNIX SSH realm does not authorize anonymous sessions.r   )Ú
isinstanceÚbytesr   ÚUnixConchUserÚdecodeÚlogout)Úselfr!   r#   r%   Úusers        úQ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/unix.pyÚrequestAvatarzUnixSSHRealm.requestAvatar5   sP   € õ ˜(¥EÑ*Ô*ð 	WÝÐUÑVÔVÐVÝ˜XŸ_š_Ñ.Ô.Ñ/Ô/ˆØ˜!Œ}˜d D¤KÐ/Ð/ó    N)r!   r"   r#   r$   r%   r&   r'   r(   )Ú__name__Ú
__module__Ú__qualname__r2   © r3   r1   r    r    3   s(   € € € € € ð	0ð 	0ð 	0ð 	0ð 	0ð 	0r3   r    c                  óH   — e Zd Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Z	dd„Z
d„ ZdS )r,   r!   Ústrr'   ÚNonec                óÆ  — t          j        | ¦  «         || _        t          j        | j        ¦  «        | _        | j        d         g}t          j        ¦   «         D ] \  }}}}||v r|                     |¦  «         Œ!|| _	        i | _
        | j                             t          j        t          j        dœ¦  «         | j                             dt$          j        i¦  «         d S )Né   )s   sessions   direct-tcpips   sftp)r	   Ú__init__r!   ÚpwdÚgetpwnamÚpwdDataÚgrpÚgetgrallÚappendÚotherGroupsÚ	listenersÚchannelLookupÚupdater   Ú
SSHSessionr   ÚopenConnectForwardingClientÚsubsystemLookupr   ÚFileTransferServer)r/   r!   ÚlÚ	groupnameÚpasswordÚgidÚuserlists          r1   r=   zUnixConchUser.__init__B   sâ   € ÝÔ˜4Ñ Ô Ð Ø ˆŒÝ”| D¤MÑ2Ô2ˆŒØŒ\˜!Œ_ÐˆÝ25´,±.´.ð 	ð 	Ñ.ˆI�x  hØ˜8Ð#Ð#Ø—’˜‘”�øØˆÔð ð 	Œð 	Ô×!Ò!å#Ô.Ý!+Ô!Gðð ñ	
ô 	
ð 	
ð 	Ô×#Ò# W­lÔ.MÐ$NÑOÔOÐOÐOÐOr3   c                ó    — | j         dd…         S )Né   é   ©r@   ©r/   s    r1   ÚgetUserGroupIdzUnixConchUser.getUserGroupIdW   s   € ØŒ|˜A˜a˜CÔ Ð r3   c                ó   — | j         S ©N)rD   rU   s    r1   ÚgetOtherGroupszUnixConchUser.getOtherGroupsZ   s   € ØÔÐr3   c                ó   — | j         d         S )Né   rT   rU   s    r1   Ú
getHomeDirzUnixConchUser.getHomeDir]   ó   € ØŒ|˜AŒÐr3   c                ó   — | j         d         S )Né   rT   rU   s    r1   ÚgetShellzUnixConchUser.getShell`   r]   r3   c           	     óp  — t          j        |¦  «        \  }}ddlm} 	 |                      |j        |t          j        | j        ||ft           j        ¦  «        |¬¦  «        }|| j	        ||f<   |dk    r1| 
                    ¦   «         d         }dt          j        d|¦  «        fS dS # t          $ r Y dS w xY w)Nr   ©Úreactor)Ú	interfacerR   é   z>L)r   ÚunpackGlobal_tcpip_forwardÚtwisted.internetrc   Ú
_runAsUserÚ	listenTCPÚSSHListenForwardingFactoryÚconnÚ SSHListenServerForwardingChannelrE   ÚgetHostÚstructÚpackÚBaseException)r/   ÚdataÚ
hostToBindÚ
portToBindrc   Úlisteners         r1   Úglobal_tcpip_forwardz"UnixConchUser.global_tcpip_forwardc   sê   € Ý!+Ô!FÀtÑ!LÔ!LÑˆ
�JØ,Ð,Ð,Ð,Ð,Ð,ð	Ø—’ØÔ!ØÝÔ5Ø”IØ Ð,ÝÔ?ñô ð
 %ð 'ñ 	ô 	ˆHð 8@ˆDŒN˜J¨
Ð3Ñ4Ø˜QŠˆØ%×-Ò-Ñ/Ô/°Ô2�
Ø�&œ+ d¨JÑ7Ô7Ð7Ð7à�qøõ ð 	ð 	ð 	Ø�1�1ð	øøøs   ŸAB' Â'
B5Â4B5c                ó¾   — t          j        |¦  «        \  }}| j                             ||fd ¦  «        }|sdS | j        ||f= |                      |j        ¦  «         dS )Nr   re   )r   rf   rE   Úgetrh   ÚstopListening)r/   rq   rr   rs   rt   s        r1   Úglobal_cancel_tcpip_forwardz)UnixConchUser.global_cancel_tcpip_forward|   si   € Ý!+Ô!FÀtÑ!LÔ!LÑˆ
�JØ”>×%Ò% z°:Ð&>ÀÑEÔEˆØð 	Ø�1ØŒN˜J¨
Ð3Ð4Ø�Š˜Ô.Ñ/Ô/Ð/Øˆqr3   c                óÚ   — | j                              ¦   «         D ]}|                      |j        ¦  «         Œ| j                             d| j        t          | j         ¦  «        ¬¦  «         d S )Nz,avatar {username} logging out ({nlisteners}))r!   Ú
nlisteners)rE   Úvaluesrh   rx   Ú_logÚinfor!   Úlen)r/   rt   s     r1   r.   zUnixConchUser.logout…   ss   € àœ×-Ò-Ñ/Ô/ð 	4ð 	4ˆHØ�OŠO˜HÔ2Ñ3Ô3Ð3Ð3ØŒ	�ŠØ:Ø”]Ý˜4œ>Ñ*Ô*ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r3   c                ó  — t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }|                      ¦   «         \  }}t          j        d¦  «         t          j        d¦  «         t          j        |                      ¦   «         ¦  «         t          j        |¦  «         t          j        |¦  «         	 t          |¦  «        }n# t          $ r	 |||fg}Y nw xY w	 |D ]L}	|	d         }
t          |	¦  «        dk    r|	d         pd}t          |	¦  «        dk    r|	d         pi } |
|i |¤Ž}ŒM	 t          j        d¦  «         t          j        d¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         ni# t          j        d¦  «         t          j        d¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         w xY w|S )Nr   re   r7   rR   )ÚosÚgeteuidÚgetegidÚ	getgroupsrV   ÚsetegidÚseteuidÚ	setgroupsrY   ÚiterÚ	TypeErrorr   )r/   ÚfÚargsÚkwÚeuidÚegidÚgroupsÚuidrO   ÚiÚfuncÚrs               r1   rh   zUnixConchUser._runAsUser�   sß  € ÝŒz‰|Œ|ˆÝŒz‰|Œ|ˆÝ”‘”ˆØ×&Ò&Ñ(Ô(‰ˆˆSÝ
Œ
�1‰ŒˆÝ
Œ
�1‰ŒˆÝ
Œ�T×(Ò(Ñ*Ô*Ñ+Ô+Ð+Ý
Œ
�3‰ŒˆÝ
Œ
�3‰Œˆð	 Ý�Q‘”ˆAˆAøÝð 	 ð 	 ð 	 Ø�T˜2��ˆAˆAˆAð	 øøøð	Øð &ð &�Ø˜”t�Ý˜1‘v”v ’zÐ* a¨¤dÐ0¨b�Ý˜‘V”V˜a’ZÐ( A a¤DÐ.¨B�Ø�D˜$Ð% "Ð%Ð%��ð	&õ ŒJ�q‰MŒMˆMÝŒJ�q‰MŒMˆMÝŒL˜Ñ Ô Ð ÝŒJ�tÑÔÐÝŒJ�tÑÔÐÐøõ	 ŒJ�q‰MŒMˆMÝŒJ�q‰MŒMˆMÝŒL˜Ñ Ô Ð ÝŒJ�tÑÔÐÝŒJ�tÑÔÐÐøøøØˆs    ÃC ÃC+Ã*C+Ã/AF$ Æ$A&H
N)r!   r9   r'   r:   )r'   r:   )r4   r5   r6   r=   rV   rY   r\   r`   ru   ry   r.   rh   r7   r3   r1   r,   r,   A   s©   € € € € € ðPð Pð Pð Pð*!ð !ð !ð ð  ð  ðð ð ðð ð ðð ð ð2ð ð ð
ð 
ð 
ð 
ðð ð ð ð r3   r,   c                  óh   — e Zd Z e¦   «         Zdd„Zdd„Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚSSHSessionForUnixConchUserNc                ó`   — |€ddl m} || _        || _        ddi| _        d| _        d| _        dS )a  
        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.
        Nr   rb   ÚPATHz/bin:/usr/bin:/usr/local/bin)rg   rc   Ú_reactorÚavatarÚenvironÚptyÚptyTuple)r/   r™   rc   s      r1   r=   z#SSHSessionForUnixConchUser.__init__°   sH   € ð ˆ?Ø0Ð0Ð0Ð0Ð0Ð0ØˆŒØˆŒØÐ >Ð?ˆŒØˆŒØˆŒˆˆr3   re   c                ó¶  — t           sd S | j        j        j        j                             ¦   «         j        }t          j        dt          j	        |¦  «        ¦  «        \  }| j
        d         dd …         }t          j        ¦   «         }t          |¦  «        }t          ||z
  dz  ¦  «        }t          j        ¦   «         }|rt           j        pt           j        |_        | j        j        |_        ||_        |dd …         |_        ||f|_        |r;| j        j        |_        t          j        |¦  «        d         |_        |dddf|_        t          j        t           j        ¦  «        }	|	                     |¦  «         |	                     ¦   «          t          j        t           j         ¦  «        }
|
                     |¦  «         |
                     ¦   «          d S )NÚLrR   r[   g    €„.Aéüÿÿÿr   )!Úutmpr™   rk   Ú	transportÚgetPeerÚhostrn   Ú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)r/   ÚloggedInÚ	ipAddressÚpackedIpÚttyNameÚtÚt1Út2ÚentryÚaÚbs              r1   ÚaddUTMPEntryz'SSHSessionForUnixConchUser.addUTMPEntryÀ   s|  € Ýð 	ØˆFØ”KÔ$Ô.Ô8×@Ò@ÑBÔBÔGˆ	Ý”m C­Ô)9¸)Ñ)DÔ)DÑEÔE‰ˆØ”- Ô" 1 2 2Ô&ˆÝŒI‰KŒKˆÝ�‰VŒVˆÝ�!�b‘&˜C‘Ñ Ô ˆÝ”Ñ Ô ˆØ Ð6¥TÔ%6ÐK½$Ô:KˆŒØ”x”|ˆŒØˆŒØ˜b˜c˜c”lˆŒØ˜2�hˆŒØð 	3Ø œKÔ0ˆEŒMÝ"Ô0°Ñ;Ô;¸AÔ>ˆEŒMØ (¨!¨Q°Ð2ˆEÔÝŒO�DœNÑ+Ô+ˆØ	�Š�EÑÔÐØ	�
Š
‰ŒˆÝŒO�DœNÑ+Ô+ˆØ	�Š�EÑÔÐØ	�
Š
‰Œˆˆˆr3   c                ó²   — || j         d<   || _        || _        t          j        ¦   «         \  }}t          j        |¦  «        }|| j         d<   |||f| _        d S )NÚTERMÚSSH_TTY)rš   ÚwinSizeÚmodesr›   Úopenptyr�   Úttynamerœ   )r/   ÚtermÚ
windowSizerÊ   ÚmasterÚslaverÌ   s          r1   ÚgetPtyz!SSHSessionForUnixConchUser.getPtyÚ   sX   € Ø#ˆŒ�VÑØ!ˆŒØˆŒ
Ýœ™œ‰ˆ�Ý”*˜UÑ#Ô#ˆØ")ˆŒ�YÑØ ¨Ð0ˆŒˆˆr3   c           
     ó�  — | j         s)| j                             d¦  «         t          d¦  «        ‚| j                             ¦   «         \  }}| j                             ¦   «         }| j                             ¦   «         }| j        j        | j	        d<   || j	        d<   || j	        d<   t          j                             |¦  «        }| j        j        j        j                             ¦   «         }| j        j        j        j                             ¦   «         }|j        › d|j        › d|j        › �| j	        d<   |                      ¦   «          | j                             ||d|› �g| j	        |||| j         ¬	¦  «        | _        |                      ¦   «          t1          j        | j                             ¦   «         t6          j        t;          j        d
g| j        ¢R Ž ¦  «         | j         r|  !                    ¦   «          |j        j"        | _#        | j$        |j        _"        | j        j        j        j         %                    d¦  «         d S )Nz'tried to get shell without pty, failingzno ptyÚUSERÚHOMEÚSHELLú Ú
SSH_CLIENTú-©ÚusePTYÚ4Hre   )&rœ   r}   Úerrorr
   r™   rV   r\   r`   r!   rš   r�   ÚpathÚbasenamerk   r¡   r¢   rm   r£   ÚportÚgetPtyOwnershipr˜   ÚspawnProcessr›   rÅ   ÚfcntlÚioctlÚfilenoÚttyÚ
TIOCSWINSZrn   ro   rÉ   rÊ   ÚsetModesÚwriteÚoldWriteÚ
_writeHackÚsetTcpNoDelay)	r/   Úprotor�   rO   ÚhomeDirÚshellÚ	shellExecÚpeerr£   s	            r1   Ú	openShellz$SSHSessionForUnixConchUser.openShellã   sý  € ØŒ}ð 	'ØŒI�OŠOÐEÑFÔFÐFÝ˜XÑ&Ô&Ð&Ø”;×-Ò-Ñ/Ô/‰ˆˆSØ”+×(Ò(Ñ*Ô*ˆØ”×$Ò$Ñ&Ô&ˆØ#œ{Ô3ˆŒ�VÑØ&ˆŒ�VÑØ %ˆŒ�WÑÝ”G×$Ò$ UÑ+Ô+ˆ	ØŒ{ÔÔ)Ô3×;Ò;Ñ=Ô=ˆØŒ{ÔÔ)Ô3×;Ò;Ñ=Ô=ˆØ(,¬	Ð%KÐ%K°D´IÐ%KÐ%KÀÄ	Ð%KÐ%KˆŒ�\Ñ"Ø×ÒÑÔÐØ”=×-Ò-ØØØ�ˆ_ˆ_ÐØŒLØØØØ”=ð .ñ 	
ô 	
ˆŒð 	×ÒÑÔÐÝŒ�D”H—O’OÑ%Ô%¥s¤~µv´{À4Ð7WÈ$Ì,Ð7WÐ7WÐ7WÑXÔXÐXØŒ:ð 	Ø�MŠM‰OŒOˆOØœÔ-ˆŒØ $¤ˆŒÔØŒÔÔ"Ô,×:Ò:¸1Ñ=Ô=Ð=Ð=Ð=r3   c           
     ó   — | j                              ¦   «         \  }}| j                              ¦   «         }| j                              ¦   «         pd}|| j        d<   |d|f}| j         j        j        j                             ¦   «         }| j         j        j        j                             ¦   «         }	|j	        › d|j
        › d|	j
        › �| j        d<   | j        r|                      ¦   «          | j                             |||| j        |||| j        pd¬¦  «        | _        | j        r/|                      ¦   «          | j        r|                      ¦   «          | j         j        j        j                             d¦  «         d S )	Nz/bin/shrÔ   z-crÖ   r×   r   rÙ   re   )r™   rV   r\   r`   rš   rk   r¡   r¢   rm   r£   rß   rœ   rà   r˜   rá   r›   rÅ   rÊ   rç   rë   )
r/   rì   Úcmdr�   rO   rí   rî   Úcommandrð   r£   s
             r1   ÚexecCommandz&SSHSessionForUnixConchUser.execCommand  sq  € Ø”;×-Ò-Ñ/Ô/‰ˆˆSØ”+×(Ò(Ñ*Ô*ˆØ”×$Ò$Ñ&Ô&Ð3¨)ˆØ&ˆŒ�VÑØ˜$ Ð$ˆØŒ{ÔÔ)Ô3×;Ò;Ñ=Ô=ˆØŒ{ÔÔ)Ô3×;Ò;Ñ=Ô=ˆØ(,¬	Ð%KÐ%K°D´IÐ%KÐ%KÀÄ	Ð%KÐ%KˆŒ�\Ñ"ØŒ=ð 	#Ø× Ò Ñ"Ô"Ð"Ø”=×-Ò-ØØØØŒLØØØØ”=Ð% Að .ñ 	
ô 	
ˆŒð Œ=ð 	 Ø×ÒÑÔÐØŒzð  Ø—’‘”�ØŒÔÔ"Ô,×:Ò:¸1Ñ=Ô=Ð=Ð=Ð=r3   c                ó  — t          j        | j        d         ¦  «        d         }| j                             ¦   «         \  }}t          j        ¦   «         t          j        ¦   «         }}t          j        d¦  «         t          j        d¦  «         	 t          j	        | j        d         ||¦  «         t          j        |¦  «         t          j        |¦  «         d S # t          j        |¦  «         t          j        |¦  «         w xY w)NrR   r[   r   )
r�   Ústatrœ   r™   rV   r‚   rƒ   r…   r†   Úchown)r/   ÚttyGidr�   rO   r�   rŽ   s         r1   rà   z*SSHSessionForUnixConchUser.getPtyOwnership  sÒ   € Ý”˜œ qÔ)Ñ*Ô*¨1Ô-ˆØ”;×-Ò-Ñ/Ô/‰ˆˆSÝ”Z‘\”\¥2¤:¡<¤<ˆdˆÝ
Œ
�1‰ŒˆÝ
Œ
�1‰Œˆð	ÝŒH�T”] 1Ô% s¨FÑ3Ô3Ð3åŒJ�tÑÔÐÝŒJ�tÑÔÐÐÐøõ ŒJ�tÑÔÐÝŒJ�tÑÔÐÐøøøs   Â!C Ã*Dc                ó$  — | j         }t          j         |j        ¦   «         ¦  «        }| j        D �]1\  }}|t
          j        vrŒt
          j        |         }t          |¦  «        dk    rQ|\  }}t          t          |¦  «        sŒUt          t          |¦  «        }|r||         |z  ||<   Œ{||         | z  ||<   Œ‹|dk    r&t          t          d|› �¦  «        |t          j
        <   Œ·|dk    r&t          t          d|› �¦  «        |t          j        <   Œãt          t          |¦  «        sŒùt          t          |¦  «        }t          |f¦  «        |t          j                 |<   �Œ3t          j         |j        ¦   «         t          j        |¦  «         d S )NrR   ÚOSPEEDÚBÚISPEED)r›   rå   Ú	tcgetattrrä   rÊ   r   ÚTTYMODESr   ÚhasattrÚgetattrrû   rý   r+   ÚCCÚ	tcsetattrÚTCSANOW)	r/   r›   ÚattrÚmodeÚ	modeValueÚttyModeÚflagÚttyAttrÚttyvals	            r1   rç   z#SSHSessionForUnixConchUser.setModes+  s|  € ØŒhˆÝŒ}˜Z˜SœZ™\œ\Ñ*Ô*ˆØ#œzð 	;ñ 	;‰OˆD�)Ø�8Ô,Ð,Ð,ØÝÔ'¨Ô-ˆGÝ�7‰|Œ|˜qÒ Ð Ø '‘��gÝ�s GÑ,Ô,ð ØÝ ¥ gÑ.Ô.�Øð 6Ø!% d¤¨fÑ!4�D˜‘J�Jà!% d¤¨v¨gÑ!5�D˜‘J�JØ˜HÒ$Ð$Ý#*­3°°I°°Ñ#@Ô#@�•S”ZÑ Ð Ø˜HÒ$Ð$Ý#*­3°°I°°Ñ#@Ô#@�•S”ZÑ Ð å�s GÑ,Ô,ð ØÝ ¥ gÑ.Ô.�Ý',¨i¨\Ñ':Ô':�•S”V”˜VÑ$Ñ$ÝŒ�j�c”j‘l”l¥C¤K°Ñ6Ô6Ð6Ð6Ð6r3   c                óJ   — | j         r| j                              ¦   «          d S d S rX   )r›   Ú
closeStdinrU   s    r1   ÚeofReceivedz&SSHSessionForUnixConchUser.eofReceivedF  s0   € ØŒ8ð 	"ØŒH×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"r3   c                óø  — | j         rpt          j                             | j         d         ¦  «        rFt          j        | j         d         ¦  «        d         }t          j        | j         d         d|¦  «         | j        ra	 | j                             d¦  «         n# t          t          f$ r Y nw xY w| j         
                    ¦   «          |                      d¦  «         | j                             d¦  «         d S )NrR   r[   r   ÚHUPzshell closed)rœ   r�   rÝ   Úexistsr÷   rø   r›   ÚsignalProcessÚOSErrorr   ÚloseConnectionrÅ   r}   r~   )r/   ÚttyGIDs     r1   Úclosedz!SSHSessionForUnixConchUser.closedJ  sî   € ØŒ=ð 	2�RœWŸ^š^¨D¬M¸!Ô,<Ñ=Ô=ð 	2Ý”W˜Tœ]¨1Ô-Ñ.Ô.¨qÔ1ˆFÝŒH�T”] 1Ô% q¨&Ñ1Ô1Ð1ØŒ8ð 	!ðØ”×&Ò& uÑ-Ô-Ð-Ð-øÝÕ1Ð2ð ð ð Ø�ðøøøàŒH×#Ò#Ñ%Ô%Ð%Ø×Ò˜aÑ Ô Ð ØŒ	�Š�~Ñ&Ô&Ð&Ð&Ð&s   Â B ÂB/Â.B/c                ó¬   — || _         t          j        | j                             ¦   «         t
          j        t          j        dg| j         ¢R Ž ¦  «         d S )NrÛ   )	rÉ   râ   rã   r›   rä   rå   ræ   rn   ro   )r/   rÉ   s     r1   ÚwindowChangedz(SSHSessionForUnixConchUser.windowChangedW  sE   € ØˆŒÝŒ�D”H—O’OÑ%Ô%¥s¤~µv´{À4Ð7WÈ$Ì,Ð7WÐ7WÐ7WÑXÔXÐXÐXÐXr3   c                óJ  — | j         �†t          j        | j                              ¦   «         ¦  «        d         }|t          j        z  sF|t          j        z  r7| j        j        j         	                    ddt          |¦  «        z   z  ¦  «         |                      |¦  «         dS )zF
        Hack to send ignore messages when we aren't echoing.
        Nr<   ú é   )r›   rå   rþ   rä   ÚECHOÚICANONr™   rk   r¡   Ú
sendIgnorer   ré   )r/   rq   r  s      r1   rê   z%SSHSessionForUnixConchUser._writeHack[  s�   € ð Œ8ÐÝ”= ¤§¢Ñ!2Ô!2Ñ3Ô3°AÔ6ˆDØ�#œ(‘?ð P t­c¬jÑ'8ð PØ”Ô Ô*×5Ò5°fÀÅCÈÁIÄIÁÑ6NÑOÔOÐOØ�Š�dÑÔÐÐÐr3   rX   )re   )r4   r5   r6   r   r}   r=   rÅ   rÑ   rñ   rõ   rà   rç   r  r  r  rê   r7   r3   r1   r•   r•   ¬   sÒ   € € € € € àˆ6‰8Œ8€Dðð ð ð ð ð ð ð ð41ð 1ð 1ð>ð >ð >ðB>ð >ð >ð6
ð 
ð 
ð7ð 7ð 7ð6"ð "ð "ð'ð 'ð 'ðYð Yð Yðð ð ð ð r3   r•   c                  ót   — 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d„ Zd„ Zd„ Zd„ ZdS )ÚSFTPServerForUnixConchUserc                ó   — || _         d S rX   )r™   )r/   r™   s     r1   r=   z#SFTPServerForUnixConchUser.__init__h  s   € ØˆŒˆˆr3   c                óö   — d|v r&d|v r"t          j        ||d         |d         ¦  «         d|v rt          j        ||d         ¦  «         d|v r)d|v r't          j        ||d         |d         f¦  «         dS dS dS )zl
        NOTE: this function assumes it runs as the logged-in user:
        i.e. under _runAsUser()
        r�   rO   ÚpermissionsÚatimeÚmtimeN)r�   rø   ÚchmodÚutime©r/   rÝ   Úattrss      r1   Ú	_setAttrsz$SFTPServerForUnixConchUser._setAttrsk  s›   € ð
 �Eˆ>ˆ>˜e u˜n˜nÝŒH�T˜5 œ<¨¨u¬Ñ6Ô6Ð6Ø˜EÐ!Ð!ÝŒH�T˜5 Ô/Ñ0Ô0Ð0Ø�eÐÐ ¨5Ð 0Ð 0ÝŒH�T˜E 'œN¨E°'¬NÐ;Ñ<Ô<Ð<Ð<Ð<ð ÐÐ 0Ð 0r3   c                ó„   — |j         |j        |j        |j        t	          |j        ¦  «        t	          |j        ¦  «        dœS )N)Úsizer�   rO   r#  r$  r%  )Úst_sizeÚst_uidÚst_gidÚst_moder¨   Úst_atimeÚst_mtime©r/   Úss     r1   Ú	_getAttrsz$SFTPServerForUnixConchUser._getAttrsw  s;   € à”IØ”8Ø”8Øœ9Ý˜œ‘_”_Ý˜œ‘_”_ð
ð 
ð 	
r3   c                ó²   — | j                              ¦   «         }t          j                             t          |j        ¦  «        t          |¦  «        ¦  «        S rX   )r™   r\   r�   rÝ   Újoinr   )r/   rÝ   Úhomes      r1   Ú_absPathz#SFTPServerForUnixConchUser._absPath�  s=   € ØŒ{×%Ò%Ñ'Ô'ˆÝŒw�|Š|�L¨¬Ñ3Ô3µ\À$Ñ5GÔ5GÑHÔHÐHr3   c                ó   — i S rX   r7   )r/   ÚotherVersionÚextDatas      r1   Ú
gotVersionz%SFTPServerForUnixConchUser.gotVersion…  s   € Øˆ	r3   c                óL   — t          | |                      |¦  «        ||¦  «        S rX   )ÚUnixSFTPFiler9  )r/   ÚfilenameÚflagsr)  s       r1   ÚopenFilez#SFTPServerForUnixConchUser.openFileˆ  s"   € Ý˜D $§-¢-°Ñ"9Ô"9¸5À%ÑHÔHÐHr3   c                óv   — |                       |¦  «        }| j                             t          j        |¦  «        S rX   )r9  r™   rh   r�   Úremove)r/   r@  s     r1   Ú
removeFilez%SFTPServerForUnixConchUser.removeFile‹  s-   € Ø—=’= Ñ*Ô*ˆØŒ{×%Ò%¥b¤i°Ñ:Ô:Ð:r3   c                ó¢   — |                       |¦  «        }|                       |¦  «        }| j                             t          j        ||¦  «        S rX   )r9  r™   rh   r�   Úrename)r/   ÚoldpathÚnewpaths      r1   Ú
renameFilez%SFTPServerForUnixConchUser.renameFile�  s@   € Ø—-’- Ñ(Ô(ˆØ—-’- Ñ(Ô(ˆØŒ{×%Ò%¥b¤i°¸'ÑBÔBÐBr3   c                ó�   — |                       |¦  «        }| j                             t          j        |ff| j        ||ffg¦  «        S rX   )r9  r™   rh   r�   Úmkdirr*  r(  s      r1   ÚmakeDirectoryz(SFTPServerForUnixConchUser.makeDirectory”  sI   € Ø�}Š}˜TÑ"Ô"ˆØŒ{×%Ò%ÝŒh˜˜Ð  4¤>°D¸%°=Ð"AÐBñ
ô 
ð 	
r3   c                óz   — |                       |¦  «        }| j                             t          j        |¦  «         d S rX   )r9  r™   rh   r�   Úrmdir©r/   rÝ   s     r1   ÚremoveDirectoryz*SFTPServerForUnixConchUser.removeDirectoryš  s3   € Ø�}Š}˜TÑ"Ô"ˆØŒ×Ò�rœx¨Ñ.Ô.Ð.Ð.Ð.r3   c                óH   — t          | |                      |¦  «        ¦  «        S rX   )ÚUnixSFTPDirectoryr9  rP  s     r1   ÚopenDirectoryz(SFTPServerForUnixConchUser.openDirectoryž  s   € Ý   t§}¢}°TÑ':Ô':Ñ;Ô;Ð;r3   c                óð   — |                       |¦  «        }|r&| j                             t          j        |¦  «        }n%| j                             t          j        |¦  «        }|                      |¦  «        S rX   )r9  r™   rh   r�   r÷   Úlstatr5  )r/   rÝ   ÚfollowLinksr4  s       r1   ÚgetAttrsz#SFTPServerForUnixConchUser.getAttrs¡  sa   € Ø�}Š}˜TÑ"Ô"ˆØð 	7Ø”×&Ò&¥r¤w°Ñ5Ô5ˆAˆAà”×&Ò&¥r¤x°Ñ6Ô6ˆAØ�~Š~˜aÑ Ô Ð r3   c                ór   — |                       |¦  «        }| j                             | j        ||¦  «         d S rX   )r9  r™   rh   r*  r(  s      r1   ÚsetAttrsz#SFTPServerForUnixConchUser.setAttrs©  s5   € Ø�}Š}˜TÑ"Ô"ˆØŒ×Ò˜tœ~¨t°UÑ;Ô;Ð;Ð;Ð;r3   c                óv   — |                       |¦  «        }| j                             t          j        |¦  «        S rX   )r9  r™   rh   r�   ÚreadlinkrP  s     r1   ÚreadLinkz#SFTPServerForUnixConchUser.readLink­  s-   € Ø�}Š}˜TÑ"Ô"ˆØŒ{×%Ò%¥b¤k°4Ñ8Ô8Ð8r3   c                ó¢   — |                       |¦  «        }|                       |¦  «        }| j                             t          j        ||¦  «        S rX   )r9  r™   rh   r�   Úsymlink)r/   ÚlinkPathÚ
targetPaths      r1   ÚmakeLinkz#SFTPServerForUnixConchUser.makeLink±  s@   € Ø—=’= Ñ*Ô*ˆØ—]’] :Ñ.Ô.ˆ
ØŒ{×%Ò%¥b¤j°*¸hÑGÔGÐGr3   c                óf   — t           j                             |                      |¦  «        ¦  «        S rX   )r�   rÝ   Úrealpathr9  rP  s     r1   ÚrealPathz#SFTPServerForUnixConchUser.realPath¶  s$   € ÝŒw×Ò §¢¨dÑ 3Ô 3Ñ4Ô4Ð4r3   c                ó   — t           ‚rX   ©ÚNotImplementedError)r/   ÚextNamer<  s      r1   ÚextendedRequestz*SFTPServerForUnixConchUser.extendedRequest¹  ó   € Ý!Ð!r3   N)r4   r5   r6   r=   r*  r5  r9  r=  rB  rE  rJ  rM  rQ  rT  rX  rZ  r]  rb  re  rj  r7   r3   r1   r   r   f  s  € € € € € ðð ð ð
=ð 
=ð 
=ð
ð 
ð 
ðIð Ið Iðð ð ðIð Ið Ið;ð ;ð ;ðCð Cð Cð

ð 
ð 
ð/ð /ð /ð<ð <ð <ð!ð !ð !ð<ð <ð <ð9ð 9ð 9ðHð Hð Hð
5ð 5ð 5ð"ð "ð "ð "ð "r3   r   c                  ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r?  c                ó  — || _         d}|t          z  t          k    r|t          z  dk    rt          j        }|t          z  t          k    r|t          z  dk    rt          j        }|t          z  t          k    r|t          z  t          k    rt          j        }|t          z  t          k    r|t          j        z  }|t          z  t          k    r|t          j
        z  }|t          z  t          k    r|t          j        z  }|t          z  t          k    r|t          j        z  }d|v r|d         }|d= nd}|j                             t          j        |||¦  «        }|r!|j                             |j        ||¦  «         || _        d S )Nr   r#  iÿ  )Úserverr   r   r�   ÚO_RDONLYÚO_WRONLYÚO_RDWRr   ÚO_APPENDr   ÚO_CREATr   ÚO_TRUNCr   ÚO_EXCLr™   rh   Úopenr*  Úfd)r/   rn  r@  rA  r)  Ú	openFlagsr  rw  s           r1   r=   zUnixSFTPFile.__init__¿  sc  € ØˆŒØˆ	Ø•8Ñ�xÒ'Ð'¨EµIÑ,=ÀÒ,BÐ,BÝœˆIØ•9Ñ¥	Ò)Ð)¨eµhÑ.>À!Ò.CÐ.CÝœˆIØ•9Ñ¥	Ò)Ð)¨eµhÑ.>Å(Ò.JÐ.JÝœ	ˆIØ•:Ñ¥Ò+Ð+Ø�œÑ$ˆIØ•9Ñ¥	Ò)Ð)Ø�œÑ#ˆIØ•9Ñ¥	Ò)Ð)Ø�œÑ#ˆIØ•8Ñ�xÒ'Ð'Ø�œÑ"ˆIØ˜EÐ!Ð!Ø˜Ô'ˆDØ�mÐ$Ð$àˆDØŒ]×%Ò%¥b¤g¨x¸ÀDÑIÔIˆØð 	HØŒM×$Ò$ VÔ%5°xÀÑGÔGÐGØˆŒˆˆr3   c                ó`   — | j         j                             t          j        | j        ¦  «        S rX   )rn  r™   rh   r�   Úcloserw  rU   s    r1   rz  zUnixSFTPFile.closeÚ  s!   € ØŒ{Ô!×,Ò,­R¬X°t´wÑ?Ô?Ð?r3   c                ó’   — | j         j                             t          j        | j        |dfft          j        | j        |ffg¦  «        S ©Nr   )rn  r™   rh   r�   Úlseekrw  Úread)r/   ÚoffsetÚlengths      r1   Ú	readChunkzUnixSFTPFile.readChunkÝ  sE   € ØŒ{Ô!×,Ò,ÝŒh˜œ &¨!Ð,Ð-µ´¸$¼'À6Ð9JÐ/KÐLñ
ô 
ð 	
r3   c                ó’   — | j         j                             t          j        | j        |dfft          j        | j        |ffg¦  «        S r|  )rn  r™   rh   r�   r}  rw  rè   )r/   r  rq   s      r1   Ú
writeChunkzUnixSFTPFile.writeChunkâ  sD   € ØŒ{Ô!×,Ò,ÝŒh˜œ &¨!Ð,Ð-µ´¸4¼7ÀD¸/Ð/JÐKñ
ô 
ð 	
r3   c                ó”   — | j         j                             t          j        | j        ¦  «        }| j                              |¦  «        S rX   )rn  r™   rh   r�   Úfstatrw  r5  r3  s     r1   rX  zUnixSFTPFile.getAttrsç  s6   € ØŒKÔ×)Ò)­"¬(°D´GÑ<Ô<ˆØŒ{×$Ò$ QÑ'Ô'Ð'r3   c                ó   — t           ‚rX   rg  )r/   r)  s     r1   rZ  zUnixSFTPFile.setAttrsë  rk  r3   N)	r4   r5   r6   r=   rz  r�  rƒ  rX  rZ  r7   r3   r1   r?  r?  ½  sq   € € € € € ðð ð ð6@ð @ð @ð
ð 
ð 
ð

ð 
ð 
ð
(ð (ð (ð"ð "ð "ð "ð "r3   r?  c                  ó*   — e Zd Zd„ Zd„ Zd„ ZeZd„ ZdS )rS  c                óv   — || _         |j                             t          j        |¦  «        | _        || _        d S rX   )rn  r™   rh   r�   ÚlistdirÚfilesÚdir)r/   rn  Ú	directorys      r1   r=   zUnixSFTPDirectory.__init__ð  s/   € ØˆŒØ”]×-Ò-­b¬j¸)ÑDÔDˆŒ
ØˆŒˆˆr3   c                ó   — | S rX   r7   rU   s    r1   Ú__iter__zUnixSFTPDirectory.__iter__õ  s   € Øˆr3   c                óZ  — 	 | j                              d¦  «        }| j        j                             t
          j        t
          j                             | j	        |¦  «        ¦  «        }t          ||¦  «        }| j                             |¦  «        }|||fS # t          $ r t          ‚w xY wr|  )rŠ  Úpoprn  r™   rh   r�   rV  rÝ   r7  r‹  r   r5  Ú
IndexErrorÚStopIteration)r/   rŠ   r4  Úlongnamer)  s        r1   Ú__next__zUnixSFTPDirectory.__next__ø  sœ   € ð	(Ø”
—’˜qÑ!Ô!ˆAð ”Ô"×-Ò-­b¬h½¼¿ºÀTÄXÈqÑ8QÔ8QÑRÔRˆAÝ˜a ‘|”|ˆHØ”K×)Ò)¨!Ñ,Ô,ˆEØ�x Ð'Ð'øõ ð 	 ð 	 ð 	 ÝÐð	 øøøs   ‚B ÂB*c                ó   — g | _         d S rX   )rŠ  rU   s    r1   rz  zUnixSFTPDirectory.close  s   € ØˆŒ
ˆ
ˆ
r3   N)r4   r5   r6   r=   rŽ  r”  Únextrz  r7   r3   r1   rS  rS  ï  sW   € € € € € ðð ð ð
ð ð ð	(ð 	(ð 	(ð €Dðð ð ð ð r3   rS  )AÚ__doc__Ú
__future__r   râ   rA   r�   r›   r>   r¥   rn   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    r,   r•   r   r?  rS  ÚregisterAdapterr7   r3   r1   ú<module>r¬     sÞ  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø 	€	€	€	Ø 
€
€
€
Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à &Ð &Ð &Ð &Ð &Ð &à "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ #Ð #Ð #Ð #Ð #Ð #Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø !Ð !Ð !Ð !Ð !Ð !Ø %Ð %Ð %Ð %Ð %Ð %Ø .Ð .Ð .Ð .Ð .Ð .ðØ€K€K€K€KøØð ð ð Ø€D€D€Dðøøøð €ˆVŒ]ÑÔð
0ð 
0ð 
0ð 
0ð 
0ñ 
0ô 
0ñ Ôð
0ðhð hð hð hð h�Iñ hô hð hðV €ˆXÑÔðvð vð vð vð vñ vô vñ Ôðvðr €ˆ[ÑÔðS"ð S"ð S"ð S"ð S"ñ S"ô S"ñ ÔðS"ðl €ˆYÑÔð."ð ."ð ."ð ."ð ."ñ ."ô ."ñ Ôð."ðbð ð ð ð ñ ô ð ð4 €
Ô Ø ¨|Ô/Gñô ð ð €
Ô Ð5°}ÀgÔFVÑ WÔ WÐ WÐ WÐ Ws   Â$B) Â)B3Â2B3