giampaolo / pyftpdlib

Extremely fast and scalable Python FTP server library
MIT License
1.65k stars 265 forks source link

error FTPS #529

Open AndreLaxe opened 4 years ago

AndreLaxe commented 4 years ago

os: ubuntu 20.04 (docker image) python: 3.8.2 pyftpdlib version: 1.5.6

my server:

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import TLS_FTPHandler
from pyftpdlib.servers import FTPServer

class ftp_server:
    def __init__(self):
        self.authorizer = DummyAuthorizer()

    def run(self):
        class MyHandler(TLS_FTPHandler):
            def on_connect(self):
                        print("CONNECT")

            def on_disconnect(self):
                        print("DISCONNECT")

            def on_file_received(self, file):
                        print(file)

        self.handler = MyHandler
        self.handler.certfile = 'keycert.pem'
        self.handler.authorizer = self.authorizer
        self.handler.log_prefix = 'XXX [%(username)s]@%(remote_ip)s'
        self.server = FTPServer(("0.0.0.0",21), self.handler)
        logging.basicConfig(filename = 'pyftpd.log',level=logging.DEBUG)
        self.server.serve_forever()

    def del_user(self, username, ip_address):
        self.authorizer.remove_user(str(username))

this_ftp = ftp_server()

thread_server = threading.Thread(target = this_ftp.run, args = ()).start()         

This class works great in ftp (with FTPHandler) and I use the .cert file provided in this repository.

output:

INFO:pyftpdlib:XXX []@192.168.134.1 FTP session opened (connect)
DEBUG:pyftpdlib:XXX []@192.168.134.1 -> 220 pyftpdlib 1.5.6 ready.
DEBUG:pyftpdlib:XXX []@192.168.134.1 <- AUTH TLS
DEBUG:pyftpdlib:XXX []@192.168.134.1 -> 234 AUTH TLS successful.
DEBUG:pyftpdlib:[debug] securing SSL connection (<MyHandler(id=140240693800144, addr='192.168.134.1:59236')>)
DEBUG:pyftpdlib:[debug] call: _do_ssl_handshake, err: ssl-want-read (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True)>)
DEBUG:pyftpdlib:[debug] call: _do_ssl_handshake, err: ssl-want-read (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True)>)
DEBUG:pyftpdlib:[debug] SSL connection established (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True)>)
DEBUG:pyftpdlib:XXX []@192.168.134.1 <- USER user
DEBUG:pyftpdlib:XXX []@192.168.134.1 -> 331 Username ok, send password.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- PASS ******
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 230 Login successful.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- OPTS UTF8 ON
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 501 Invalid argument.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- PBSZ 0
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 200 PBSZ=0 successful.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- PROT P
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 200 Protection set to Private
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- OPTS MLST type;perm;size;modify;unix.mode;unix.uid;unix.gid;
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 200 MLST OPTS type;perm;size;modify;unix.mode;unix.uid;unix.gid;
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- PWD
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 257 "/" is the current directory.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- TYPE I
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 200 Type set to: Binary.
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- PASV
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 227 Entering passive mode (172,30,0,3,233,239).
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 <- MLSD
DEBUG:pyftpdlib:XXX [user]@192.168.134.1 -> 150 File status okay. About to open data connection.
DEBUG:pyftpdlib:[debug] call: recv(), err: SysCallError(-1, 'Unexpected EOF') (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True, user='user')>)
DEBUG:pyftpdlib:[debug] call: _do_ssl_shutdown(), shutdown completed (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True, user='user')>)
DEBUG:pyftpdlib:[debug] call: close() (<MyHandler(id=140240693800144, addr='192.168.134.1:59236', ssl=True, user='user')>)
DEBUG:pyftpdlib:[debug] call: close() (<pyftpdlib.handlers.PassiveDTP listening 172.30.0.3:0 at 0x7f8c54be5310>)
INFO:pyftpdlib:XXX [user]@192.168.134.1 FTP session closed (disconnect).

image

I tryed Filezilla with passive and active mode, same output.

Jah-On commented 4 years ago

531

dgumus commented 3 months ago

Hi have you figured it out? addr='192.168.134.1:59236' and <pyftpdlib.handlers.PassiveDTP listening 172.30.0.3:0 not matching I think this is the problem