File: //usr/local/lib/python3.7/test/__pycache__/test_ftplib.cpython-37.opt-2.pyc
B
��g�� � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZyd dl Z W n e
k
rl dZ Y nX d dlmZm
Z
d dlmZ d dlmZmZ dZdd ZdZdZd ZG d
d� dej�ZG dd
� d
ej�ZG dd� dejej�Ze dk �rhej�ej� e!�d�Z"ej�ej� e!�d�Z#G dd� dej�Z$G dd� de$e�Z%G dd� de$e�Z&G dd� de�Z'G dd� de�Z(e
ej)d�G dd� de��Z*e
e d�G d d!� d!e(��Z+e
e d�G d"d#� d#e��Z,G d$d%� d%e�Z-G d&d'� d'e�Z.d(d)� Z/e0d*k�r e/� dS )+� N)�TestCase�
skipUnless)�support)�HOST�HOSTv6� zabcde12345
i� z
foo
bar
a� 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
c s@ e Zd ZdZdd� Zdd� Zdd� Z� fdd �Zd
d� Z� Z S )�DummyDTPHandlerFc C s t j�| |� || _d| j_d S )N� )�asynchat�
async_chat�__init__� baseclass�last_received_data)�self�connr
� r �,/usr/local/lib/python3.7/test/test_ftplib.pyr 2 s zDummyDTPHandler.__init__c C s | j j| �d��d�7 _d S )Ni �ascii)r
r �recv�decode)r r r r �handle_read7 s zDummyDTPHandler.handle_readc C s$ | j s | j�d� | �� d| _ d S )Nz226 transfer completeT)�dtp_conn_closedr
�push�close)r r r r �handle_close: s zDummyDTPHandler.handle_closec sB | j jd k r| j j}d | j _|s(| �� S tt| ��|�d�� d S )Nr )r
� next_data�close_when_done�superr r �encode)r Zwhat)� __class__r r r C s zDummyDTPHandler.pushc C s t �d S )N)� Exception)r r r r �handle_errorK s zDummyDTPHandler.handle_error)
�__name__�
__module__�__qualname__r r r r r r! �
__classcell__r r )r r r / s r c @ s e Zd ZeZdd� Zdd� Zdd� Zdd� Zd d
� Z dd� Z
d
d� Zdd� Zdd� Z
dd� 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� Zd7d8� Z d9d:� Z!d;d<� Z"d=d>� Z#d?d@� Z$dAdB� Z%dCS )D�DummyFTPHandlerc C sp t j�| |� | j�tjtjd� | �d� g | _d | _ d | _
d| _d| _d | _
d | _t| _| �d� d| _d S )N� s
r z220 welcomez252.253.254.255)r
r r �socketZ
setsockoptZ
SOL_SOCKETZSO_OOBINLINEZset_terminator� in_buffer�dtp�last_received_cmdr �
next_responser �rest� RETR_DATA�next_retr_datar �fake_pasv_server_ip)r r r r r r S s
zDummyFTPHandler.__init__c C s | j �|� d S )N)r) �append)r �datar r r �collect_incoming_dataf s z%DummyFTPHandler.collect_incoming_datac C s� d� | j��d�}g | _| jr0| �| j� d| _|�d�d �� }|| _|�d�}|dkrl||d d � }nd}t | d| �r�t
| d| �}||� n| �d | � d S )
N� r r � r ���r'