giampaolo / pyftpdlib

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

Problem in connecting to pyftpdlib from remote FTP client #519

Closed ebrahim-abbasi closed 4 years ago

ebrahim-abbasi commented 4 years ago

Dear all,

I am running pyftpdlib on ubuntu with python 3.6 in a virtual environment. When connecting from a local FTP client, it works perfectly. But when connecting from a remote FTP client I am getting the following error:

unhandled exception in instance <DTPHandler(id=139896849234072, addr='192.168.33.101:52720', user='ftptest')>
    Traceback (most recent call last):
      File "/usr/lib/python3.6/asynchat.py", line 237, in initiate_send
        data = first[:obs]
    TypeError: 'BufferedIteratorProducer' object is not subscriptable

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/handlers.py", line 1785, in push_dtp_data
        self.data_channel.push_with_producer(data)
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/handlers.py", line 662, in push_with_producer
        AsyncChat.push_with_producer(self, producer)
      File "/usr/lib/python3.6/asynchat.py", line 206, in push_with_producer
        self.initiate_send()
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/handlers.py", line 668, in initiate_send
        asynchat.async_chat.initiate_send(self)
      File "/usr/lib/python3.6/asynchat.py", line 239, in initiate_send
        data = first.more()
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/handlers.py", line 1088, in more
        buffer.append(next(self.iterator))
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/filesystems.py", line 445, in format_list
        uname = self.get_user_by_uid(st.st_uid)
      File "/home/ebrahimabbasi/pyftpdlib_venv/lib/python3.6/site-packages/pyftpdlib-1.5.6-py3.6.egg/pyftpdlib/filesystems.py", line 366, in get_user_by_uid
        return pwd.getpwuid(uid).pw_name
    TypeError: uid should be integer, not str
[W 2020-02-16 18:03:46 12596] 192.168.33.101:52720-[ftptest] -> 426 Internal error; transfer aborted.

I also disabled the firewall.

Thanks for any help