Fixed
- FTPS off-site copies, for real this time. vsftpd, Pure-FTPd and other servers end the TLS session without a close_notify, and PHP reported that as an error inside
ftp_close()(SSL_read on shutdown ... unexpected eof while reading). 1.13.1 turned that into a failure on every connection, so nothing was copied. Closing a connection can no longer fail a copy or hide the real error. (#100) - FTP errors quote the server's own reply, such as "Login incorrect", "Permission denied" or "Non-anonymous sessions must use encryption", instead of a generic "failed".
- A broken FTP upload no longer passes for a finished copy. Each upload is checked by size and a short or broken one is removed. The off-site copy also uploads again any backup whose copy at the target has a different size, as one cut short by a restart would.
Changed
- Test connection does what a backup run does. For FTP it lists the directory, uploads a small file and deletes it again, so data-connection and permission problems show up there. The result now appears under the button.
- Servers behind NAT work without setup. FTP data connections go to the host you entered unless the server advertises a different public address; if the first choice does not connect, the other is tried. Servers that refuse passive mode get active mode, as before.
- With TLS on, the backup is never sent in clear. A server that will not encrypt data connections is refused.
- One copy at a time. A run that starts while another is still copying leaves the target alone; its backup goes up with the next run.
- Clearer messages for implicit FTPS (port 990), an SFTP server on the FTP port, a server that does not offer AUTH TLS, TLS 1.0/1.1-only servers, blocked passive ports and "421 too many connections".
Notes
- No database migrations in this release.
- Explicit FTPS only (AUTH TLS, usually port 21). PHP's FTP client does not verify the server's certificate, so self-signed certificates work.
docker pull marcpope/cortendesk:1.13.2
docker pull ghcr.io/marcpope/cortendesk:1.13.2