Sindbad~EG File Manager
3
�Qg!��@sRddlZddlZddlmZddddddgZd Zd
ZdZGdd
�d
e�ZGdd�de�Z Gdd�de�Z
Gdd�de�ZGdd�de�Zee
efZdZdZGdd�d�ZyddlZWnek
r�dZYn0XejZGdd�de�Zejd�ee
eejfZdadd�Zdadd�Zdd�Zdd�Zdd �Z d(d#d$�Z!d%d&�Z"e#d'k�rNe"�dS))�N)�_GLOBAL_DEFAULT_TIMEOUT�FTP�error_reply�
error_temp�
error_perm�error_proto�
all_errors��i c@seZdZdS)�ErrorN)�__name__�
__module__�__qualname__�rr�/usr/lib64/python3.6/ftplib.pyr9src@seZdZdS)rN)rr
rrrrrr:sc@seZdZdS)rN)rr
rrrrrr;sc@seZdZdS)rN)rr
rrrrrr<sc@seZdZdS)rN)rr
rrrrrr=sz
s
c@s�eZdZdZdZeZeZdZ dZ
dZdZdZ
dZddddedfdd�Zd d
�Zdd�Zd\dd�Zdd�Zdd�ZeZdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z d(d)�Z!d*d+�Z"d,d-�Z#d.d/�Z$d0d1�Z%d]d2d3�Z&d^d4d5�Z'd_d6d7�Z(d`d9d:�Z)dad;d<�Z*dbd=d>�Z+dcd?d@�Z,dAdB�Z-dCdD�Z.dEdF�Z/dgfdGdH�Z0dIdJ�Z1dKdL�Z2dMdN�Z3dOdP�Z4dQdR�Z5dSdT�Z6dUdV�Z7dWdX�Z8dYdZ�Z9dS)drr�Nr zlatin-1FcCs0||_||_|r,|j|�|r,|j|||�dS)N)�source_address�timeout�connect�login)�self�host�user�passwd�acctrrrrr�__init__rs
zFTP.__init__cCs|S)Nr)rrrr� __enter__{sz
FTP.__enter__cGsN|jdk rJz*y|j�Wnttfk
r0YnXWd|jdk rH|j�XdS)N)�sock�quit�OSError�EOFError�close)r�argsrrr�__exit__s
zFTP.__exit__i�cCs�|dkr||_|dkr||_|dkr*||_|dk r8||_tj|j|jf|j|jd�|_|jj|_|jj d|j
d�|_|j�|_
|j
S)Nrri�)r�r)�encodingi���)r�portrr�socket�create_connectionrZfamily�af�makefiler%�file�getresp�welcome)rrr&rrrrrr�s
zFTP.connectcCs|jrtd|j|j��|jS)Nz *welcome*)� debugging�print�sanitizer-)rrrr�
getwelcome�szFTP.getwelcomecCs
||_dS)N)r.)r�levelrrr�set_debuglevel�szFTP.set_debuglevelcCs
||_dS)N)�
passiveserver)r�valrrr�set_pasv�szFTP.set_pasvcCsJ|dd�dkrBt|jd��}|dd�d|d||d�}t|�S)N��pass �PASS z
�*>r8r9)�len�rstrip�repr)r�s�irrrr0�s$zFTP.sanitizecCsRd|ksd|krtd��|t}|jdkr:td|j|��|jj|j|j��dS)N�
�
z4an illegal newline character should not be containedr z*put*) �
ValueError�CRLFr.r/r0r�sendall�encoder%)r�linerrr�putline�s
zFTP.putlinecCs$|jrtd|j|��|j|�dS)Nz*cmd*)r.r/r0rG)rrFrrr�putcmd�sz
FTP.putcmdcCs�|jj|jd�}t|�|jkr.td|j��|jdkrHtd|j|��|sPt�|dd�t krn|dd�}n|dd�t kr�|dd�}|S) Nr zgot more than %d bytesz*get*����rJ���rK)
r+�readline�maxliner;rr.r/r0r rC)rrFrrr�getline�s
zFTP.getlinecCsd|j�}|dd�dkr`|dd�}x:|j�}|d|}|dd�|kr&|dd�dkr&Pq&W|S)N���-rA)rN)rrF�codeZnextlinerrr�getmultiline�szFTP.getmultilinecCsp|j�}|jrtd|j|��|dd�|_|dd�}|d krD|S|dkrTt|��|dkrdt|��t|��dS)
Nz*resp*rOr �1�2�3�4�5>rTrVrU)rSr.r/r0Zlastresprrr)r�resp�crrrr,�szFTP.getrespcCs$|j�}|dd�dkr t|��|S)Nr rU)r,r)rrYrrr�voidresp�szFTP.voidrespcCsTdt}|jdkr"td|j|��|jj|t�|j�}|dd�dkrPt|��|S) NsABORr z*put urgent*rO�426�225�226>r\r^r]) �B_CRLFr.r/r0rrD�MSG_OOBrSr)rrFrYrrr�aborts
z FTP.abortcCs|j|�|j�S)N)rHr,)r�cmdrrr�sendcmds
zFTP.sendcmdcCs|j|�|j�S)N)rHr[)rrbrrr�voidcmds
zFTP.voidcmdcCsB|jd�}t|d�t|d�g}||}ddj|�}|j|�S)N�.�zPORT �,)�splitr=�joinrd)rrr&ZhbytesZpbytes�bytesrbrrr�sendports
zFTP.sendportcCsbd}|jtjkrd}|jtjkr$d}|dkr4td��dt|�|t|�dg}ddj|�}|j|�S)Nrr rIzunsupported address familyrzEPRT �|)r)r'�AF_INETZAF_INET6rr=rird)rrr&r)Zfieldsrbrrr�sendeprt$szFTP.sendeprtc
Csd}d}x�tjdd|jtjdtj�D]j}|\}}}}}ytj|||�}|j|�Wn8tk
r�} z| }|rt|j�d}w$WYdd} ~ XnXPq$W|dkr�|dk r�|�ntd��|jd�|j �d}
|j
j �d}|jtjkr�|j||
�}n|j
||
�}|jtk �r|j|j�|S)Nrz!getaddrinfo returns an empty listr )r'Zgetaddrinfor)ZSOCK_STREAMZ
AI_PASSIVEZbindrr!ZlistenZgetsocknamerrmrkrnrr�
settimeout)
r�errr�resr)Zsocktype�protoZ canonnameZsa�_r&rrYrrr�makeport1s6
zFTP.makeportcCs\|jtjkr:t|jd��\}}|jr*|}qT|jj�d}nt|jd�|jj��\}}||fS)N�PASVrZEPSV) r)r'rm�parse227rc�trust_server_pasv_ipv4_addressrZgetpeername�parse229)rZuntrusted_hostr&rrrr�makepasvQszFTP.makepasvc
Cs6d}|jr�|j�\}}tj||f|j|jd�}yL|dk rF|jd|�|j|�}|ddkrd|j�}|ddkrxt|��Wn|j ��YnXn�|j
��r}|dk r�|jd|�|j|�}|ddkr�|j�}|ddkr�t|��|j�\}} |jtk �r
|j
|j�WdQRX|dd�dk�r.t|�}||fS)N)rzREST %srrUrTrO�150)r4ryr'r(rrrcr,rr!rtZacceptrro�parse150)
rrb�rest�sizerr&�connrYrZsockaddrrrr�ntransfercmd]s<
zFTP.ntransfercmdcCs|j||�dS)Nr)r)rrbr|rrr�transfercmd�szFTP.transfercmdcCs�|sd}|sd}|sd}|dkr0|dkr0|d}|jd|�}|ddkrX|jd|�}|ddkrr|jd |�}|dd
kr�t|��|S)NZ anonymousrrQz
anonymous@zUSER rrVzPASS zACCT rU>rrQ)rcr)rrrrrYrrrr�s z FTP.login� c
Csb|jd�|j||��>}x|j|�}|s*P||�qWtdk rPt|t�rP|j�WdQRX|j�S)NzTYPE I)rdr�Zrecv�
_SSLSocket�
isinstance�unwrapr[)rrb�callback� blocksizer|r~�datarrr�
retrbinary�s
zFTP.retrbinarycCs�|dkrt}|jd�}|j|���}|jd|jd���}x�|j|jd�}t|�|jkrbtd|j��|j dkrzt
dt|��|s�P|d d�tkr�|dd
�}n|dd�dkr�|dd�}||�q6Wt
dk r�t|t
�r�|j�WdQRXWdQRX|j�S)
NzTYPE Ar$)r%r zgot more than %d bytesrIz*retr*rArJrJrKrK)�
print_linercr�r*r%rLrMr;rr.r/r=rCr�r�r�r[)rrbr�rYr~�fprFrrr� retrlines�s*
z
FTP.retrlinesc
Csp|jd�|j||��L}x*|j|�}|s*P|j|�|r||�qWtdk r^t|t�r^|j�WdQRX|j�S)NzTYPE I)rdr��readrDr�r�r�r[)rrbr�r�r�r|r~�bufrrr�
storbinary�s
zFTP.storbinaryc
Cs�|jd�|j|���}x||j|jd�}t|�|jkrDtd|j��|sJP|dd�tkrz|dtkrr|dd�}|t}|j|�|r||�qWtdk r�t |t�r�|j
�WdQRX|j�S)NzTYPE Ar zgot more than %d bytesrIrJrKrK)rdr�rLrMr;rr_rDr�r�r�r[)rrbr�r�r~r�rrr� storliness$
z
FTP.storlinescCsd|}|j|�S)NzACCT )rd)rZpasswordrbrrrr+szFTP.acctcGs4d}x|D]}|d|}q
Wg}|j||j�|S)NZNLST� )r��append)rr"rb�arg�filesrrr�nlst0s
zFTP.nlstcGsld}d}|dd�r>t|d�td�kr>|dd�|d}}x|D]}|rD|d|}qDW|j||�dS) NZLISTr rr�rKrKrKrK)�typer�)rr"rb�funcr�rrr�dir9s
zFTP.dirc
cs�|r|jddj|�d�|r*d|}nd}g}|j||j�xh|D]`}|jt�jd�\}}}i} x6|dd�jd�D] }
|
jd�\}}}|| |j�<qxW|| fVqFWdS) Nz
OPTS MLST �;zMLSD %sZMLSDr�r �=rK) rcrir�r�r<rC� partitionrh�lower)
r�pathZfactsrb�linesrFZfacts_foundrs�name�entryZfact�key�valuerrr�mlsdHs
zFTP.mlsdcCs0|jd|�}|ddkr"t|��|jd|�S)NzRNFR rrVzRNTO )rcrrd)rZfromnameZtonamerYrrr�renamedsz
FTP.renamecCs.|jd|�}|dd�dkr"|St|��dS)NzDELE rO�250�200>r�r�)rcr)r�filenamerYrrr�deleteksz
FTP.deletecCsn|dkrPy
|jd�Stk
rL}z|jddd�dkr<�WYdd}~Xq\Xn|dkr\d}d|}|j|�S) Nz..ZCDUPrrO�500rrezCWD )rdrr")r�dirname�msgrbrrr�cwdss
zFTP.cwdcCs:|jd|�}|dd�dkr6|dd�j�}t|�SdS)NzSIZE rOZ213)rc�strip�int)rr�rYr>rrrr}�szFTP.sizecCs$|jd|�}|jd�sdSt|�S)NzMKD �257r)rd�
startswith�parse257)rr�rYrrr�mkd�s
zFTP.mkdcCs|jd|�S)NzRMD )rd)rr�rrr�rmd�szFTP.rmdcCs |jd�}|jd�sdSt|�S)NZPWDr�r)rdr�r�)rrYrrr�pwd�s
zFTP.pwdcCs|jd�}|j�|S)NZQUIT)rdr!)rrYrrrr�s
zFTP.quitcCsDz |j}d|_|dk r|j�Wd|j}d|_|dk r>|j�XdS)N)r+r!r)rr+rrrrr!�sz FTP.close����)rrr�N)N)N)rrr)r�N)N)r�NN)N):rr
rr.r�FTP_PORTr&�MAXLINErMrr+r-r4r%rwrrrr#rr1r3�debugr6r0rGrHrNrSr,r[rarcrdrkrnrtryrr�rr�r�r�r�rr�r�r�r�r�r�r}r�r�r�rr!rrrrrJsj
7
#
c @sjeZdZejZdddddddedf dd�Zddd�Zdd �Z d
d�Z
dd
�Zdd�Zddd�Z
dd�ZdS)�FTP_TLSrNc
Cs�|dk r|dk rtd��|dk r0|dk r0td��|dk s@|dk rVddl}
|
jdtd�||_||_|dkr|tj|j||d�}||_ d|_
tj||||||| �dS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadrI)�certfile�keyfileF)
rB�warnings�warn�DeprecationWarningr�r��sslZ_create_stdlib_context�ssl_version�context�_prot_prr)rrrrrr�r�r�rrr�rrrr�s"zFTP_TLS.__init__TcCs,|rt|jtj�r|j�tj||||�S)N)r�rr�� SSLSocket�authrr)rrrrZsecurerrrr�sz
FTP_TLS.logincCsft|jtj�rtd��|jtjkr.|jd�}n
|jd�}|jj |j|j
d�|_|jjd|jd�|_
|S)NzAlready using TLSzAUTH TLSzAUTH SSL)�server_hostnamer$)�moder%)r�rr�r�rBr��PROTOCOL_SSLv23rdr��wrap_socketrr*r%r+)rrYrrrr��s
zFTP_TLS.authcCs0t|jtj�std��|jd�}|jj�|_|S)Nz
not using TLSZCCC)r�rr�r�rBrdr�)rrYrrr�cccs
zFTP_TLS.ccccCs|jd�|jd�}d|_|S)NzPBSZ 0zPROT PT)rdr�)rrYrrr�prot_ps
zFTP_TLS.prot_pcCs|jd�}d|_|S)NzPROT CF)rdr�)rrYrrr�prot_cs
zFTP_TLS.prot_ccCs2tj|||�\}}|jr*|jj||jd�}||fS)N)r�)rrr�r�r�r)rrbr|r~r}rrrr$s
zFTP_TLS.ntransfercmdcCs8dt}|jj|�|j�}|dd�dkr4t|��|S)NsABORrOr\r]r^>r]r\r^)r_rrDrSr)rrFrYrrrra+sz
FTP_TLS.abort)rrrT)N)rr
rr�r�r�rrrr�r�r�r�rrarrrrr��s!
r�cCs\|dd�dkrt|��tdkr<ddl}|jd|j|jB�atj|�}|sNdSt|jd��S)NrOrzrz150 .* \((\d+) bytes\)r ) r�_150_re�re�compile�
IGNORECASE�ASCII�matchr��group)rYr��mrrrr{:s
r{cCs�|dd�dkrt|��tdkr6ddl}|jd|j�atj|�}|sLt|��|j�}dj|dd��}t |d�d>t |d�}||fS) NrOZ227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rerP�r7)
r�_227_rer�r�r��searchr�groupsrir�)rYr�r�Znumbersrr&rrrrvNs
rvcCs�|dd�dkrt|��|jd�}|dkr2t|��|jd|d�}|dkrRt|��||d||dkrrt|��||d|�j||d�}t|�dkr�t|��|d}t|d�}||fS)NrOZ229�(r�)r r7)r�findrrhr;r�)rYZpeer�left�right�partsrr&rrrrxbs
rxcCs�|dd�dkrt|��|dd�dkr,dSd}d}t|�}xJ||kr�||}|d}|dkr|||ksr||dkrtP|d}||}q>W|S)NrOr�r7z "rr �")rr;)rYr�r?�nrZrrrr�xs
r�cCst|�dS)N)r/)rFrrrr��sr�r�Ic Cs�|s|}d|}|j|�|j|�t|jd��\}}|j||�|jd|�}|dd�dkrdt�|jd|�}|dd�d kr�t�|j�|j�dS)
NzTYPE ruzSTOR rO�125rzzRETR >r�rz>r�rz)rdrvrcrkrr[) �sourceZ
sourcename�targetZ
targetnamer�Z
sourcehostZ
sourceportZtreplyZsreplyrrr�ftpcp�s
r�cCs�ttj�dkr"ttj�tjd�ddl}d}d}x"tjddkrT|d}tjd=q4Wtjddd�dkr�tjddd�}tjd=tjd}t|�}|j |�d}}}y|j|�}Wn(t
k
r�|dk r�tjjd�Yn:Xy|j
|�\}}}Wn"tk
�rtjjd�YnX|j|||�x�tjdd�D]�} | dd�d k�rf|j| dd��nt| dd�dk�r�d
}
| dd��r�|
d| dd�}
|j|
�}n0| dk�r�|j|j�n|jd
| tjjd��q<W|j�dS)NrIrr z-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDr�z-pzRETR i)r;�sys�argvr/�test�__doc__�exit�netrcrr3r�stderr�writeZauthenticators�KeyErrorrr�rcr6r4r��stdoutr)r�r.ZrcfilerZftpZuseridrrZnetrcobjr+rbrYrrrr��sP
r��__main__)rr�)$r�r'r�__all__r`r�r�� Exceptionrrrrrrr rrCr_rr��ImportErrorr�r�r�r�ZSSLErrorr�r{r�rvrxr�r�r�r�rrrrr�<module>'sN
k
|
9
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists