Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_ftplib.cpython-39.opt-1.pyc

a

��g���@s.dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
zddlZWneyvdZYn0ddl
m
Z
mZddlmZddlmZddlmZmZejZdZdd	d
ZdZdZdZd
d�ZGdd�dej�ZGdd�dej�Z Gdd�dej!ej"�Z#edu�r�ej$�%ej$�&e'�d�Z(ej$�%ej$�&e'�d�Z)Gdd�dej!�Z*Gdd�de*e�Z+Gdd�de*e �Z,Gdd�de#�Z-Gdd �d e
�Z.eej/d!�Gd"d#�d#e
��Z0eed$�Gd%d&�d&e.��Z1eed$�Gd'd(�d(e
��Z2Gd)d*�d*e
�Z3Gd+d,�d,e
�Z4d-d.�Z5e6d/k�r*e
�7�dS)0zTest script for ftplib module.�N)�TestCase�
skipUnless)�support)�
socket_helper)�HOST�HOSTv6�utf-8zabcde12345
i�unon-ascii char ®
ufoo
bar
 non-ascii char ®
u>type=cdir;perm=el;unique==keVO1+ZF4; test
type=pdir;perm=e;unique==keVO1+d?3; ..
type=OS.unix=slink:/foobar;perm=;unique==keVO1+4G4; foobar
type=OS.unix=chr-13/29;perm=;unique==keVO1+5G4; device
type=OS.unix=blk-11/108;perm=;unique==keVO1+6G4; block
type=file;perm=awr;unique==keVO1+8G4; writable
type=dir;perm=cpmel;unique==keVO1+7G4; promiscuous
type=dir;perm=;unique==keVO1+1t2; no-exec
type=file;perm=r;unique==keVO1+EG4; two words
type=file;perm=r;unique==keVO1+IH4;  leading space
type=file;perm=r;unique==keVO1+1G4; file1
type=dir;perm=cpmel;unique==keVO1+7G4; incoming
type=file;perm=r;unique==keVO1+1G4; file2
type=file;perm=r;unique==keVO1+1G4; file3
type=file;perm=r;unique==keVO1+1G4; file4
type=dir;perm=cpmel;unique==SGP1; dir ® non-ascii char
type=file;perm=r;unique==SGP2; file ® non-ascii char
cCsdS�N�r
r
r
�,/usr/local/lib/python3.9/test/test_ftplib.py�default_error_handler4srcs@eZdZdZdd�Zdd�Zdd�Z�fdd	�Zd
d�Z�Z	S)�DummyDTPHandlerFcCs(tj�||�||_d|j_|j|_dS)N�)�asynchat�
async_chat�__init__�	baseclass�last_received_data�encoding��self�connrr
r
rr>szDummyDTPHandler.__init__cCs(|�d��|jd�}|jj|7_dS)N��replace)�recv�decoderrr)rZnew_datar
r
r�handle_readDszDummyDTPHandler.handle_readcCs$|js |j�d�|��d|_dS)N�226 transfer completeT)�dtp_conn_closedr�push�close�rr
r
r�handle_closeHszDummyDTPHandler.handle_closecsD|jjdur|jj}d|j_|s(|��Stt|��|�|j��dSr	)r�	next_data�close_when_done�superr
r�encoder)rZwhat��	__class__r
rrQszDummyDTPHandler.pushcCs
t�dSr	�rr!r
r
r�handle_errorYszDummyDTPHandler.handle_error)
�__name__�
__module__�__qualname__rrrr"rr*�
__classcell__r
r
r'rr
;s	r
c@seZdZeZefdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#d=d>�Z$d?d@�Z%dAdB�Z&dCS)D�DummyFTPHandlercCsvtj�||�|j�tjtjd�|�d�g|_d|_	d|_
d|_d|_d|_
d|_t|_|�d�||_d|_dS)N��
r�220 welcomez252.253.254.255)rrr�socket�
setsockopt�
SOL_SOCKET�SO_OOBINLINEZset_terminator�	in_buffer�dtp�last_received_cmdr�
next_responser#�rest�	RETR_DATA�next_retr_datarr�fake_pasv_server_ip�rrrr
r
rras

zDummyFTPHandler.__init__cCs|j�|�dSr	)r7�append�r�datar
r
r�collect_incoming_datausz%DummyFTPHandler.collect_incoming_datacCs�d�|j��|j�}g|_|jr2|�|j�d|_|�d�d��}||_|�	d�}|dkrn||dd�}nd}t
|d|�r�t|d|�}||�n|�d|�dS)	N�r� r���r0Zcmd_z 550 command "%s" not understood.)�joinr7rrr:r�split�lowerr9�find�hasattr�getattr)r�line�cmd�space�arg�methodr
r
r�found_terminatorxs

z DummyFTPHandler.found_terminatorcCs
t�dSr	r)r!r
r
rr*�szDummyFTPHandler.handle_errorcCstj�||�|j�d�dS)Nr1)rrrr&rrAr
r
rr�szDummyFTPHandler.pushcCslttt|�d���}dt|dd��}|dd|d}tj||ftd�}|j||d�|_	|�
d�dS)	N�,z%d.%d.%d.%d�����timeout�r�&200 active data connection established)�list�map�intrH�tupler3�create_connection�TIMEOUT�dtp_handlerr8r)rrP�addr�ip�port�sr
r
r�cmd_port�szDummyFTPHandler.cmd_portc	Cs�t�|j��ddf��x}|�t�|��d}|j}|�dd�}|d}|d}|�d|||f�|��\}}|j	||d�|_
Wd�n1s�0YdS)Nrr0�.rSrUz$227 entering passive mode (%s,%d,%d)rY)r3�
create_server�getsockname�
settimeoutr`r>rr�acceptrar8)	rrP�sockrdrcZp1Zp2rrbr
r
r�cmd_pasv�s
zDummyFTPHandler.cmd_pasvcCsT|�|d�dd�\}}}t|�}tj||ftd�}|j||d�|_|�d�dS)Nrr0rFrWrYrZ)rHr]r3r_r`rar8r)rrP�afrcrdrer
r
r�cmd_eprt�s
zDummyFTPHandler.cmd_eprtcCs�tj|j��ddftjd��P}|�t�|��d}|�d|�|��\}}|j||d�|_	Wd�n1st0YdS)Nr)�familyr0z+229 entering extended passive mode (|||%d|)rY)
r3rhri�AF_INET6rjr`rrkrar8)rrPrlrdrrbr
r
r�cmd_epsv�s�
zDummyFTPHandler.cmd_epsvcCs|�|�dSr	�r�rrPr
r
r�cmd_echo�szDummyFTPHandler.cmd_echocCs|�d�dS)Nz200 noop okrsrtr
r
r�cmd_noop�szDummyFTPHandler.cmd_noopcCs|�d�dS)Nz331 username okrsrtr
r
r�cmd_user�szDummyFTPHandler.cmd_usercCs|�d�dS)Nz230 password okrsrtr
r
r�cmd_pass�szDummyFTPHandler.cmd_passcCs|�d�dS)Nz230 acct okrsrtr
r
r�cmd_acct�szDummyFTPHandler.cmd_acctcCs|�d�dS)Nz350 rnfr okrsrtr
r
r�cmd_rnfr�szDummyFTPHandler.cmd_rnfrcCs|�d�dS)Nz250 rnto okrsrtr
r
r�cmd_rnto�szDummyFTPHandler.cmd_rntocCs|�d�dS)Nz250 dele okrsrtr
r
r�cmd_dele�szDummyFTPHandler.cmd_delecCs|�d�dS)N�
250 cwd okrsrtr
r
r�cmd_cwd�szDummyFTPHandler.cmd_cwdcCs|�d�dS)Nz250 1000rsrtr
r
r�cmd_size�szDummyFTPHandler.cmd_sizecCs|�d|�dS)Nz257 "%s"rsrtr
r
r�cmd_mkd�szDummyFTPHandler.cmd_mkdcCs|�d�dS)Nz
250 rmd okrsrtr
r
r�cmd_rmd�szDummyFTPHandler.cmd_rmdcCs|�d�dS)Nz257 "pwd ok"rsrtr
r
r�cmd_pwd�szDummyFTPHandler.cmd_pwdcCs|�d�dS)Nz200 type okrsrtr
r
r�cmd_type�szDummyFTPHandler.cmd_typecCs|�d�|��dS�Nz221 quit ok)rr rtr
r
r�cmd_quit�s
zDummyFTPHandler.cmd_quitcCs|�d�dS)Nz226 abor okrsrtr
r
r�cmd_abor�szDummyFTPHandler.cmd_aborcCs|�d�dS)Nz125 stor okrsrtr
r
r�cmd_stor�szDummyFTPHandler.cmd_storcCs||_|�d�dS)Nz350 rest ok)r;rrtr
r
r�cmd_rest�szDummyFTPHandler.cmd_restcCsN|�d�|jdur t|j�}nd}|j�|j|d��|j��d|_dS)Nz125 retr okr)rr;r]r8r=r$)rrP�offsetr
r
r�cmd_retr�s


zDummyFTPHandler.cmd_retrcCs$|�d�|j�t�|j��dS)Nz125 list ok)rr8�	LIST_DATAr$rtr
r
r�cmd_list�s
zDummyFTPHandler.cmd_listcCs$|�d�|j�t�|j��dS)Nz125 nlst ok)rr8�	NLST_DATAr$rtr
r
r�cmd_nlst�s
zDummyFTPHandler.cmd_nlstcCs|�d�dS)Nz200 opts okrsrtr
r
r�cmd_optsszDummyFTPHandler.cmd_optscCs$|�d�|j�t�|j��dS)Nz125 mlsd ok)rr8�	MLSD_DATAr$rtr
r
r�cmd_mlsds
zDummyFTPHandler.cmd_mlsdcCsdt|�|_|�d�dS)N�xz125 setlongretr ok)r]r=rrtr
r
r�cmd_setlongretrszDummyFTPHandler.cmd_setlongretrN)'r+r,r-r
ra�DEFAULT_ENCODINGrrCrRr*rrfrmrorrrurvrwrxryrzr{r|r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr/]sD
	
r/c@s\eZdZeZejefdd�Zdd�Z	dd�Z
dd�Zd	d
�Zdd�Z
e
Zd
d�Zdd�ZdS)�DummyFTPServercCsztj�|�tj�|�d|_|�|tj�|�	|�|�
d�d|_t��|_
|j��dd�\|_|_d|_||_dS)NTrVF�)�	threading�Threadr�asyncore�
dispatcher�daemonZ
create_socketr3�SOCK_STREAM�bind�listen�active�Lock�active_lockri�hostrd�handler_instancer)r�addressrnrr
r
rrs


zDummyFTPServer.__init__cCs$t��|_tj�|�|j��dSr	)r��Event�_DummyFTPServer__flagr��start�waitr!r
r
rr�s
zDummyFTPServer.startcCsPd|_|j��|jr@tjr@|j��tjddd�|j��qtj	dd�dS)NT皙�����?r0)rX�count�Z
ignore_all)
r�r��setr�Z
socket_mapr��acquireZloop�release�	close_allr!r
r
r�run%s

zDummyFTPServer.runcCsd|_|��dS)NF)r�rGr!r
r
r�stop.szDummyFTPServer.stopcCs|j||jd�|_dS)N�r)�handlerrr��rrrbr
r
r�handle_accepted3szDummyFTPServer.handle_acceptedcCs|��dSr	)r r!r
r
r�handle_connect6szDummyFTPServer.handle_connectcCsdS�Nrr
r!r
r
r�writable:szDummyFTPServer.writablecCs
t�dSr	r)r!r
r
rr*=szDummyFTPServer.handle_errorN)r+r,r-r/r�r3�AF_INETr�rr�r�r�r�r�rr�r*r
r
r
rr�s
	r�zkeycert3.pemzpycacert.pemcs|eZdZdZdZdZdd�Zdd�Z�fdd�Z�fd	d
�Z	�fdd�Z
�fd
d�Z�fdd�Zdd�Z
�fdd�Z�ZS)�
SSLConnectionz3An asyncore.dispatcher subclass supporting TLS/SSL.FcCsBt��}|�t�|j|jdddd�}|��|�|�d|_dS)NFT)Zsuppress_ragged_eofsZserver_sideZdo_handshake_on_connect)	�ssl�
SSLContextZload_cert_chain�CERTFILEZwrap_socketr3Zdel_channelZ
set_socket�_ssl_accepting)r�contextr3r
r
r�secure_connectionLs
�
zSSLConnection.secure_connectionc
Cs�z|j��Wn�tjy�}zx|jdtjtjfvrDWYd}~dS|jdtjkrh|��WYd}~Sd|jdvr�|��WYd}~S�WYd}~nVd}~0t	y�}z0|jdt
jkr�|��WYd}~SWYd}~nd}~00d|_dS)NrZSSLV3_ALERT_BAD_CERTIFICATEr0F)
r3Zdo_handshaker��SSLError�args�SSL_ERROR_WANT_READ�SSL_ERROR_WANT_WRITE�
SSL_ERROR_EOFr"�OSError�errnoZECONNABORTEDr��r�errr
r
r�_do_ssl_handshakeWs �*zSSLConnection._do_ssl_handshakec
s�d|_z|j��|_WnZtjy`}z0|jdtjtjfvrLWYd}~dSWYd}~nd}~0typYn0d|_t	|dd�dur�t
t|���ndS)NTrF�_ccc)
�_ssl_closingr3�unwrapr�r�r�r�r�r�rLr%r�r r�r'r
r�_do_ssl_shutdownjs�"zSSLConnection._do_ssl_shutdowncs2|jr|��n|jr |��ntt|���dSr	)r�r�r�r�r%r��handle_read_eventr!r'r
rr�~s


zSSLConnection.handle_read_eventcs2|jr|��n|jr |��ntt|���dSr	)r�r�r�r�r%r��handle_write_eventr!r'r
rr��s


z SSLConnection.handle_write_eventc
slztt|��|�WStjyf}z:|jdtjtjtjtj	fvrPWYd}~dS�WYd}~n
d}~00dSr�)
r%r��sendr�r�r�r��SSL_ERROR_ZERO_RETURNr�r�)rrBr�r'r
rr��s�zSSLConnection.sendc
s�ztt|��|�WStjy�}z^|jdtjtjfvrHWYd}~dS|jdtjtj	fvrt|�
�WYd}~dS�WYd}~n
d}~00dS)NrrD)r%r�rr�r�r�r�r�r�r�r")rZbuffer_sizer�r'r
rr�s�zSSLConnection.recvcCs
t�dSr	r)r!r
r
rr*�szSSLConnection.handle_errorcs6t|jtj�r$|jjdur$|��ntt|���dSr	)	�
isinstancer3r��	SSLSocketZ_sslobjr�r%r�r r!r'r
rr �s

�
zSSLConnection.close)r+r,r-�__doc__r�r�r�r�r�r�r�r�rr*r r.r
r
r'rr�Fs
r�c@seZdZdZdd�ZdS)�DummyTLS_DTPHandlerz.A DummyDTPHandler subclass supporting TLS/SSL.cCs"t�|||�|jjr|��dSr	)r
rr�secure_data_channelr�rr
r
rr�szDummyTLS_DTPHandler.__init__N)r+r,r-r�rr
r
r
rr��sr�c@s@eZdZdZeZefdd�Zdd�Zdd�Z	dd	�Z
d
d�ZdS)
�DummyTLS_FTPHandlerz.A DummyFTPHandler subclass supporting TLS/SSL.cCs tj|||d�d|_d|_dS)Nr�F)r/rr�r�r?r
r
rr�szDummyTLS_FTPHandler.__init__cCs|�d�|��dS)zSet up secure control channel.z234 AUTH TLS successfulN)rr��rrMr
r
r�cmd_auth�s
zDummyTLS_FTPHandler.cmd_authcCs|�d�d|_|��dS)Nz 220 Reverting back to clear-textT)rr�r�r�r
r
r�cmd_ccc�s
zDummyTLS_FTPHandler.cmd_ccccCs|�d�dS)z�Negotiate size of buffer for secure data transfer.
            For TLS/SSL the only valid value for the parameter is '0'.
            Any other value is accepted but ignored.
            z200 PBSZ=0 successful.Nrsr�r
r
r�cmd_pbsz�szDummyTLS_FTPHandler.cmd_pbszcCsJ|��}|dkr"|�d�d|_n$|dkr<|�d�d|_n
|�d�dS)	zSetup un/secure data channel.�Cz200 Protection set to ClearF�Pz200 Protection set to PrivateTz(502 Unrecognized PROT type (use C or P).N)�upperrr�)rrMrPr
r
r�cmd_prot�s

zDummyTLS_FTPHandler.cmd_protN)r+r,r-r�r�rar�rr�r�r�r�r
r
r
rr��sr�c@seZdZeZdS)�DummyTLS_FTPServerN)r+r,r-r�r�r
r
r
rr��sr�c@sXeZdZefdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSS)T�TestFTPClasscCsFttdf|d�|_|j��tjt|d�|_|j�|jj	|jj
�dS�Nrr��rXr)r�r�serverr��ftplib�FTPr`�client�connectr�rd�rrr
r
r�setUp�s
zTestFTPClass.setUpcCs*|j��|j��d|_tjdd�dS�NTr��r�r r�r�r�r�r!r
r
r�tearDown�s

zTestFTPClass.tearDowncCs$|�t|�t|��|�||�dSr	)�assertEqual�len)r�receivedZexpectedr
r
r�
check_data�szTestFTPClass.check_datacCs|�|j��d�dS)Nr2)r�r�Z
getwelcomer!r
r
r�test_getwelcome�szTestFTPClass.test_getwelcomecCsL|�|j�d�td��|�|j�d�td��|�|j�d�td��dS)N�fooz
pass 12345z
pass *****z
PASS 12345z
PASS *****)r�r�Zsanitize�reprr!r
r
r�
test_sanitize�szTestFTPClass.test_sanitizecCs�|�t|jjd�|�t|jjd�|�t|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�dS)	Nz
echo 40
0z	echo 40
0z	echo 40
0zecho 400zecho 499zecho 500zecho 599zecho 999)�assertRaises�
ValueErrorr��sendcmdr��
error_temp�
error_perm�error_protor!r
r
r�test_exceptions�szTestFTPClass.test_exceptionsc	CsLtjtjtjtjtjttf}|D]&}z|d��Wq tjyDYq 0q dS)Nz(exception not included in all_errors set)	r��error_replyr�r�r��Errorr��EOFErrorZ
all_errors)r�
exceptionsr�r
r
r�test_all_errors	s
�zTestFTPClass.test_all_errorscCsF|�|jj�|j�d�|�|jj�|j�d�|�|jj�dS)NTF)�
assertTruer�Z
passiveserver�set_pasv�assertFalser!r
r
r�
test_set_pasvs
zTestFTPClass.test_set_pasvcCsD|j�d�|j�d�|�tj|jjd�|�tj|jjd�dS)Nzecho 200zecho 299zecho 199zecho 300)r�Zvoidcmdr�r�r�r!r
r
r�test_voidcmdszTestFTPClass.test_voidcmdcCs|j��dSr	)r��loginr!r
r
r�
test_login!szTestFTPClass.test_logincCs|j�d�dS)N�passwd)r�Zacctr!r
r
r�	test_acct$szTestFTPClass.test_acctcCs2|j�dd�d|jj_|�tj|jjdd�dS)N�a�bZ200)r��renamer�r�r:r�r�r�r!r
r
r�test_rename's
zTestFTPClass.test_renamecCs.|j�d�d|jj_|�tj|jjd�dS)Nr�Z199)r��deleter�r�r:r�r�r�r!r
r
r�test_delete,s
zTestFTPClass.test_deletecCs|j�d�dS�Nr�)r��sizer!r
r
r�	test_size1szTestFTPClass.test_sizecCs|j�d�}|�|d�dS)N�/foo)r��mkdr��r�dirr
r
r�test_mkd4szTestFTPClass.test_mkdcCs|j�d�dSr)r�Zrmdr!r
r
r�test_rmd8szTestFTPClass.test_rmdcCs|j�d�}|�|d�dS)Nrr})r��cwdr�rr
r
r�test_cwd;szTestFTPClass.test_cwdcCs|j��}|�|d�dS)Nzpwd ok)r��pwdr�rr
r
r�test_pwd?s
zTestFTPClass.test_pwdcCs&|�|j��d�|�|jjd�dSr�)r�r��quitrlr!r
r
r�	test_quitCszTestFTPClass.test_quitcCs|j��dSr	)r��abortr!r
r
r�
test_abortHszTestFTPClass.test_abortcs6��fdd�}g��j�d|���d���t�dS)Ncs��|��jj��dSr	�r@rr�r�rB�r�rr
r�callbackLsz.TestFTPClass.test_retrbinary.<locals>.callback�retrr�r��
retrbinaryr�rGr<)rr&r
r%r�test_retrbinaryKszTestFTPClass.test_retrbinarycsL��fdd�}dD]4}g��jjd||d���d���t|d��qdS)Ncs��|��jj��dSr	r#r$r%r
rr&Ssz3TestFTPClass.test_retrbinary_rest.<locals>.callback)r�
�r'�r;rr()rr&r;r
r%r�test_retrbinary_restRs
z!TestFTPClass.test_retrbinary_restcCs2g}|j�d|j�|�d�|�t�dd��dS)Nr'r�
)r��	retrlinesr@r�rGr<r�rr�r
r
r�test_retrlinesZszTestFTPClass.test_retrlinescsjt�t�|jj��}|j�d|�|�|jj	j
t�g�|�d�|jjd|�fdd�d�|���dS)N�storrcs
��d�Sr	�r@�r���flagr
r�<lambda>frDz.TestFTPClass.test_storbinary.<locals>.<lambda>�r&)
�io�BytesIOr<r&r�r�
storbinaryr�r�r�r�seekr�r�fr
r6r�test_storbinary_s
zTestFTPClass.test_storbinarycCs`t�dd��|jj�}t�|�}dD]6}|�d�|jjd||d�|�	|j
jjt
|��q$dS)Nr/�
)�Z30rr3r-)r<rr&r�rr:r;r=r<r�r�r�r;�str)rrBr?�rr
r
r�test_storbinary_restis

z!TestFTPClass.test_storbinary_restcs�t�dd��|jj�}t�|�}|j�d|�|�|j	j
jt�g�|�d�|jjd|�fdd�d�|�
��t�t�dd��}tjd	tfd
d��$|�t|jjd|�Wd�n1s�0YdS)Nr/rAr3rzstor foocs
��d�Sr	r4r5r6r
rr8yrDz-TestFTPClass.test_storlines.<locals>.<lambda>r9rT)�quiet)r<rr&r�rr:r;�	storlinesr�r�r�rr=r�StringIOrZcheck_warnings�BytesWarningr��	TypeError)rrBr?r
r6r�test_storlinesqs


zTestFTPClass.test_storlinescCs.|j��|�|j��t�d�dd��dS)Nr/rF)r�Znlstr�r�rHr!r
r
r�	test_nlst�s
zTestFTPClass.test_nlstcs6g�|j��fdd��|�d���t�dd��dS)Ncs
��|�Sr	r4r5��lr
rr8�rDz'TestFTPClass.test_dir.<locals>.<lambda>rr/)r�rr�rGr�rr!r
rMr�test_dir�szTestFTPClass.test_dircs�t�j���t�jjdd��t�jjdddgd��t�j���}|D]N\}}��|t���|t���|���d|���d|���d|�qJ�fdd	��d*��fd
d�	}|d�|d
dd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|dd d�|d!d"d�|d#d$d�|d%d&d��d'�t�j���\}}|D]}��|�	���ql�d(���
tt�j����d(��j��D]}��d)|��q�dS)+N�/)�pathr�type)rQ�facts�perm�uniquecs|�jj_dSr	)r�r�r#r$r!r
r�set_data�sz(TestFTPClass.test_mlsd.<locals>.set_datacs�|durdn|}|durdn|}|dur,dn|}|dur<dn|}�|�t�j���\}}��||���|d|���|d|���|d|�dS)NrRrTrU�name)�nextr��mlsdr�)rMrRrTrUrW�_namerS�rrVr
r�
test_entry�sz*TestFTPClass.test_mlsd.<locals>.test_entryz)type=type;perm=perm;unique=unique; name
z*type=ty=pe;perm=perm;unique=unique; name
zty=pe)rRz*type==type;perm=perm;unique=unique; name
z=typez+type=t=y=pe;perm=perm;unique=unique; name
zt=y=pez)type=====;perm=perm;unique=unique; name
z====z*type=type;perm=perm;unique=unique; na me
zna me)rWz*type=type;perm=perm;unique=unique; name 
zname z*type=type;perm=perm;unique=unique;  name
z namez,type=type;perm=perm;unique=unique; n am  e
zn am  ez*type=type;perm=perm;unique=unique; na;me
zna;mez*type=type;perm=perm;unique=unique; ;name
z;namez+type=type;perm=perm;unique=unique; ;name;
z;name;z)type=type;perm=perm;unique=unique; ;;;;
z;;;;z)Type=type;TyPe=perm;UNIQUE=unique; name
rzunexpected data %s)NNNN)
r[r�rY�assertIsInstancerC�dictrZassertInrX�islowerr��
StopIteration�fail)rZlsrWrSr\rZr�r
r[r�	test_mlsd�sF

zTestFTPClass.test_mlsdcCs@|j���"|�|jjjd�Wd�n1s20YdS)Nrd�r�Zmakeportr�r�r�r9r!r
r
r�
test_makeport�s�zTestFTPClass.test_makeportcCs>|j��\}}tj||ftd�}|��|�|jjj	d�dS)NrWZpasv�
r��makepasvr3r_r`r r�r�r�r9�rr�rdrr
r
r�
test_makepasv�szTestFTPClass.test_makepasvcCsNd|j_|j��\}}|�||jjj�tj|jj	�
�d|ftd���dS)z/Test the opt-in to the old vulnerable behavior.TrrWN)
r��trust_server_pasv_ipv4_addressrfr�r�r�r>r3r_rl�getpeernamer`r )rZbad_hostrdr
r
r�*test_makepasv_issue43285_security_disabled�s
��z7TestFTPClass.test_makepasv_issue43285_security_disabledcCsH|�|jj�|j��\}}|�||jjj�tj	||ft
d���dS)NrW)rr�rirfZassertNotEqualr�r�r>r3r_r`r )rZtrusted_hostrdr
r
r�1test_makepasv_issue43285_security_enabled_default�s
�z>TestFTPClass.test_makepasv_issue43285_security_enabled_defaultc
s��j���fdd�}tjtd��@�_�j��jj�jj��j�	d���
|��Wd�n1sh0Y���jjj
d���|��tjtd��>�_�j��jj�jj��j�	d��j��Wd�n1s�0Y���jjj
d���|��z`tjtd��>�_�j��jj�jj��j�	d�d�jj_Wd�n1�s\0YWn8tj�y�}z��t|�d�WYd}~nd}~00��d�t�d����jjj
d���|��dS)	Nc	s>�jjdurdSz�j�d�Wnttfy8YdS0dS)NF�noopT)r�rlr�r�rr
r!r
r�is_client_connected�sz=TestFTPClass.test_with_statement.<locals>.is_client_connectedrWrmrz550 error on quitzException not raisedr�)r�rr�r�r`r�r�r�rdr�rr�r�r9rr:r�rCra�time�sleep)rrnr�r
r!r�test_with_statement�s2

*(.&

z TestFTPClass.test_with_statementc
Cs�|j��t��}zD|jj|jj|jjt|fd�|�	|jj
��d|�|j��Wn@ty�}z(|j
t
jkr�|�d|��WYd}~n
d}~00dS)N)�source_addressr0�couldn't bind to port %d)r�rr�find_unused_portr�r�r�rdrr�rlrir�r��
EADDRINUSE�skipTest)rrd�er
r
r�test_source_addresss
�z TestFTPClass.test_source_addressc
Cs�t��}t|f|j_zD|j�d��$}|�|��d|�Wd�n1sL0YWn@ty�}z(|j	t	j
kr�|�d|��WYd}~n
d}~00dS)Nr[r0rs)rrtrr�rr�transfercmdr�rir�r�rurv)rrdrlrwr
r
r�&test_source_address_passive_connections6z3TestFTPClass.test_source_address_passive_connectioncCs�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�tjtjd�|�t�d�d	�|�t�d
�d	�dS)Nz257 "/foo/bar"z/foo/barz257 "/foo/bar" createdz257 ""rz257 "" createdz250 "/foo/bar"z257 "/foo/b""ar"z	/foo/b"arz257 "/foo/b""ar" created)r�r��parse257r�r�r!r
r
r�
test_parse257*szTestFTPClass.test_parse257cCs$|�tj|jjd|jjd�dS)Nr�r�)r�r�r�r�r��maxliner!r
r
r�test_line_too_long6s�zTestFTPClass.test_line_too_longcCs8|j�d|jjd�g}|�tj|jjd|j�dS)NzSETLONGRETR %dr�r')r�r�r}r�r�r�r0r@r1r
r
r�test_retrlines_too_long:s
�z$TestFTPClass.test_retrlines_too_longcCs0t�d|jjd�}|�tj|jjd|�dS)N�xr�r3)r:r;r�r}r�r�r�rGr>r
r
r�test_storlines_too_long@sz$TestFTPClass.test_storlines_too_longc	Cs�ddg}|D]�}|j|d��d|��|j|d�|�||jj�|��|��|��|j�	d�}|�
|d�Wd�q1s�0Yqtjt
d�}|�t|j�dS)Nzlatin-1rr�u/non-ascii dir ®rW)ZsubTestr�r�r�r�rr*r@r2rr�r�r�r`r�)r�	encodingsrZnew_dirr�r
r
r�test_encoding_paramDs,z TestFTPClass.test_encoding_paramN)-r+r,r-r�r�r�r�r�r�r�rrrr	rrrrrrrrr r"r*r.r2r@rErKrLrOrbrdrhrkrlrqrxrzr|r~rr�r�r
r
r
rr��sR


:	-
r�zIPv6 not enabledc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestIPv6EnvironmentcCsJttdftjtd�|_|j��tjt	td�|_
|j
�|jj|jj
�dS)Nr)rnrr�)r�rr3rqr�r�r�r�r�r`r�r�r�rdr!r
r
rr�Xs�
zTestIPv6Environment.setUpcCs*|j��|j��d|_tjdd�dSr�r�r!r
r
rr�`s

zTestIPv6Environment.tearDowncCs|�|jjtj�dSr	)r�r�rnr3rqr!r
r
r�test_afgszTestIPv6Environment.test_afcCs@|j���"|�|jjjd�Wd�n1s20YdS)NZeprtrcr!r
r
rrdjs�z!TestIPv6Environment.test_makeportcCs>|j��\}}tj||ftd�}|��|�|jjj	d�dS)NrWZepsvrergr
r
rrhosz!TestIPv6Environment.test_makepasvcs4�fdd�}�j�d�|��j�d�|�dS)NcsP��fdd�}g��j�d|���td����tt����d���t�dS)Ncs��|��jj��dSr	r#r$r%r
rr&wszATestIPv6Environment.test_transfer.<locals>.retr.<locals>.callbackr'r)r�r)r�r�rGr<r9r!)r�rr'vs
z/TestIPv6Environment.test_transfer.<locals>.retrTF)r�r)rr'r
r!r�
test_transferus
z!TestIPv6Environment.test_transferN)	r+r,r-r�r�r�rdrhr�r
r
r
rr�Usr�zSSL not availablec@seZdZdZefdd�ZdS)�TestTLS_FTPClassMixinzfRepeat TestFTPClass tests starting the TLS layer for both control
    and data connections first.
    cCsZttdf|d�|_|j��tjt|d�|_|j�|jj	|jj
�|j��|j��dSr�)
r�rr�r�r��FTP_TLSr`r�r�r�rd�auth�prot_pr�r
r
rr��s

zTestTLS_FTPClassMixin.setUpN)r+r,r-r�r�r�r
r
r
rr��sr�c@sfeZdZdZefdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Ze
dd�dd��ZdS)�TestTLS_FTPClasszSpecific TLS_FTP class tests.cCsDttdf|d�|_|j��tjtd�|_|j�|jj	|jj
�dS)Nrr�rW)r�rr�r�r�r�r`r�r�r�rdr�r
r
rr��s
zTestTLS_FTPClass.setUpcCs*|j��|j��d|_tjdd�dSr�r�r!r
r
rr��s

zTestTLS_FTPClass.tearDowncCs2|�|jjtj�|j��|�|jjtj�dSr	)�assertNotIsInstancer�rlr�r�r�r]r!r
r
r�test_control_connection�s
z(TestTLS_FTPClass.test_control_connectioncCsR|j�d��:}|�|tj�|�|�d�t�|jj	��Wd�n1sL0Y|�|j�
�d�|j��|j�d��:}|�|tj�|�|�d�t�|jj	��Wd�n1s�0Y|�|j�
�d�|j�
�|j�d��:}|�|tj�|�|�d�t�|jj	��Wd�n1�s20Y|�|j�
�d�dS)Nr[rr)r�ryr�r�r�r�rr�r&rZvoidrespr�r]Zprot_c)rrlr
r
r�test_data_connection�s(�"
�"
�$z%TestTLS_FTPClass.test_data_connectioncCs<|�|jjtj�|j��|�|jjtj�|j��dSr	)r�r�rlr�r�rr]r!r
r
rr	�s
zTestTLS_FTPClass.test_logincCs|j��|�t|jj�dSr	)r�r�r�r�r!r
r
r�test_auth_issued_twice�s
z'TestTLS_FTPClass.test_auth_issued_twicecCs |j��t�tj�}d|_tj|_|jt	t
jt|d�|jt	t
jt|d�|jt	t
jtt|d�t
j|t
d�|_|j�|jj|jj�|�|jjtj�|j��|�|jjj|�|�|jjtj�|j��|j�d��,}|�|j|�|�|tj�Wd�n1�s0YdS)NF)�keyfiler�)�certfiler�)r�r�r��r�rXr[)r�rr�r��PROTOCOL_TLS_CLIENT�check_hostnameZ	CERT_NONE�verify_moder�r�r�r�r�r`r�r�r�rdr�rlr�r�ZassertIsr�r]r�ry�r�ctxrlr
r
r�test_context�s.
���

zTestTLS_FTPClass.test_contextcCsP|�t|jj�|jjdd�|�|jjtj�|j��|�t|jjj	�dS)NT)Zsecure)
r�r�r��cccrr]rlr�r�r�r!r
r
r�test_ccc�s

zTestTLS_FTPClass.test_cccFzFIXME: bpo-32706c	Cs�|j��t�tj�}|�|jtj�|�|jd�|�	t
�tj|t
d�|_|j�|jj|jj�|�tj��|j��Wd�n1s�0Y|j�|jj|jj�|j��|�tj��<|j�d��}Wd�n1s�0YWd�n1�s
0Y|j��|j�d|jj�|j��|j��|j�d|jj�|j��|j�d��}Wd�n1�s�0YdS)NTr�r[�	localhost)r�rr�r�r�r�r�Z
CERT_REQUIREDr�Zload_verify_locations�CAFILEr�r�r`r�r�r�rdr�ZCertificateErrorr�r�ryr�r
r
r�test_check_hostname�s,

(
>



z$TestTLS_FTPClass.test_check_hostnameN)r+r,r-r�r�r�r�r�r�r	r�r�r�rr�r
r
r
rr��sr�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestTimeoutscCs�t��|_t�tjtj�|_|j�d�t�	|j�|_
tj|jd�|_
d|j
_|j
��|j��|j��tjj
|_|j
tj_
dS)Nr,)�targetT)r�r��evtr3r�r�rlrjrZ	bind_portrdr�r��
server_threadr�r�r��clearr�r��old_portr!r
r
rr�s




zTestTimeouts.setUpcCs|jtj_|j��d|_dSr	)r�r�r�rdr�rGr!r
r
rr�s

zTestTimeouts.tearDowncCs�|j��|j��z^z|j��\}}Wntjy<Yn*0|�d�|�tj	�|j��|�
�W|j�
�n|j�
�0dS)Ns
1 Hola mundo
)rlr�r�r�rkr3rX�sendall�shutdown�SHUT_WRr r�r
r
rr�$s




zTestTimeouts.serverc	Csf|�t���t�d�zt�t�}Wt�d�nt�d�0|�|j�	�d�|j
��|��dS�NrB)
�assertIsNoner3�getdefaulttimeout�setdefaulttimeoutr�r�rr�rl�
gettimeoutr�r�r �r�ftpr
r
r�testTimeoutDefault9s

zTestTimeouts.testTimeoutDefaultc	Csh|�t���t�d�ztjtdd�}Wt�d�nt�d�0|�|j���|j	�
�|��dS�NrBrW)r�r3r�r�r�r�rrlr�r�r�r r�r
r
r�testTimeoutNoneEs

zTestTimeouts.testTimeoutNonecCsntjtdd�}|�|j��d�|j��|��|�	t
��tjtdd�Wd�n1s`0YdS)NrBrWr)r�r�rr�rlr�r�r�r r�r�r�r
r
r�testTimeoutValueQs
zTestTimeouts.testTimeoutValuecCs>t��}|jtdd�|�|j��d�|j��|�	�dSr��
r�r�r�rr�rlr�r�r�r r�r
r
r�testTimeoutConnect\s

zTestTimeouts.testTimeoutConnectcCs>tjdd�}|�t�|�|j��d�|j��|�	�dSr�r�r�r
r
r�testTimeoutDifferentOrdercs


z&TestTimeouts.testTimeoutDifferentOrdercCs@t��}d|_|�t�|�|j��d�|j�	�|�
�dSr�)r�r�rXr�rr�rlr�r�r�r r�r
r
r�testTimeoutDirectAccessjs

z$TestTimeouts.testTimeoutDirectAccessN)r+r,r-r�r�r�r�r�r�r�r�r�r
r
r
rr�sr�c@seZdZdd�ZdS)�MiscTestCasecCshd�}tj|t|d�dS)N>
ZFTP_PORTr{ZCRLFZB_CRLF�testZparse227Zparse150Zparse229Z
print_line�MSG_OOBZftpcpZMAXLINEr�)�	blacklist)rZcheck__all__r�)rr�r
r
r�test__all__tszMiscTestCase.test__all__N)r+r,r-r�r
r
r
rr�ssr�cCs t��}tjtjg|�R�dSr	)rZthreading_setup�unittestZaddModuleCleanupZthreading_cleanup)�thread_infor
r
r�setUpModule{sr��__main__)8r�r�r�rr3r:r��osr�ror�r��ImportErrorrrr�rZtest.supportrZtest.support.socket_helperrrZLOOPBACK_TIMEOUTr`r�r<r�r�r�rrr
r/r�r�r�rQrG�dirname�__file__r�r�r�r�r�r�r�ZIPV6_ENABLEDr�r�r�r�r�r�r+�mainr
r
r
r�<module>sd
"23
i	(s
-ze


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists