Grégoire Chauvet <[email protected]> added the comment:
I want to confirm that I have this exact same issue as described.
To add some information, it occurs on:
Python 3.6.3 on Windows
Python 3.6.5 on Debian, with OpenSSL 1.0.1t 3 May 2016
Python 3.5.3 on Debian, with OpenSSL 1.1.0f 25 May 2017
Python 3.6.5 on Fedora, with OpenSSL 1.1.0h-fips 27 Mar 2018
Python 3.8.0a0 on Fedora, with OpenSSL 1.1.0h-fips 27 Mar 2018
The server is FileZilla server 0.9.60 beta (this is the last version available
as of today).
Depending on the version of python or OpenSSL, the error is :
[...]
File "/usr/lib64/python3.6/ssl.py", line 645, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error
Or:
[...]
File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:833)
Here is my code:
# I use a workaround to connect with implicit TLS as described here:
# https://stackoverflow.com/a/36049814/3859915
# But from what I can see, it is not related to this.
import ssl
import ftplib
class ImplicitFTP_TLS(ftplib.FTP_TLS):
"""FTP_TLS subclass that automatically wraps sockets in SSL to support
implicit FTPS."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._sock = None
@property
def sock(self):
"""Return the socket."""
return self._sock
@sock.setter
def sock(self, value):
"""When modifying the socket, ensure that it is ssl wrapped."""
if value is not None and not isinstance(value, ssl.SSLSocket):
value = self.context.wrap_socket(value)
self._sock = value
ftps = ImplicitFTP_TLS()
ftps.set_debuglevel(2)
ftps.connect(host="hostname", port=990)
ftps.login(user="user", passwd="password")
ftps.prot_p()
ftps.nlst()
I can connect, create directories, retrieve modification date, but I cannot
list files nor download them.
----------
nosy: +Grégoire Chauvet
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue31727>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com