Build 3087: ISocket, SSH Tunneling, FTP/SSL and SFTP autodetection

FTP/SSL and SFTP server autodetection

It's easy to confuse FTP/SSL and SFTP servers - both are often called Secure FTP. We've added protocol auto detection, so when you try to connect to FTP/SSL with SFTP component or vice versa you'll be instructed to use the right component.

ISocket interface and SSH tunneling

New transparency layer has been added to all communications components. SSH connection now can act as just another proxy server. It allows connecting running IMAP over secured SSH channel, or even such binary magic as running plain, old and unsecure FTP over encrypted SSH connection.

Complete list of changes

  • FTP: Finished property added to FtpTranferProgressEventArgs class.
  • FTP: New variants of GetDownloadStream and GetUploadStream added.
  • FTP: New tutorial for file transfer resume functionality.
  • FTP: Added detection for SFTP and SSH servers that are often mistaken forh SFTP to produce better exception messages. FTP servers in wrong modes are also detected.
  • FTP: Added support for unusual way of data channel SSL initialization used by XFB Gateway FTP Server.
  • FTP: Fixed a bug that caused the DoNotDetectFeatures option to fail.
  • SFTP: Enhanced initial folder detection to be compatible with more servers.
  • SFTP: Added detection for FTP and SSL servers that are often mistaken with SFTP to produce better exception messages.
  • SFTP: Fixed incorrect behavior with paths starting with ' ~' character.
  • SFTP: Fixed a problem that caused SftpException.Status property to have a incorrect value in some cases.
  • SSH: Fixed an internal static method that was not thread safe.
  • SSH: PuTTY keys with no password are now supported as well (previously, only PuTTY keys with passwords worked).
  • SSH: Added SSH tunneling capabilities.
  • SMTP/IMAP/POP3/FTP/SFTP: Added hostname validity checking to Connect method.
  • SMTP: Added several missing BeginSend methods.
  • SMTP: Added SmtpOptions.AllowNullSender option to make it possible to send a message with null envelope sender.
  • IMAP: Added OR operator to search options.
  • POP3: Added workaround for GoDaddy and Windows POP3 servers that announce APOP authentication support but don't actually support it.
  • MIME: Fixed a bug in MailMessage class that caused an attachment to be parsed as texy body if no text body was present.
  • MIME: Invalid character removal routing now works for big5 and shift _jis encodings as well.
  • MIME: Added automated detection of Unicode body parts with missing header encoding info.
  • MIME: Added workaround for quote-printable headers with an invalid linefeed character in the middle.
  • MIME: Added a workaround to make it possible to parse S/MIME messages with missing smime-type header.
  • MIME: New tutorial for creating HTML e-mail with embedded pictures.
  • SecureSocket: Fixed a bug that caused data loss when a TLS/SSL connection was closed in a certain way.
  • ProxySocket: New ISocket interface to make it possible to easily implement custom transport layers.
  • ProxySocket: Fixed an unhandled exception that occured during a failed connection to a proxy specified by an IP address