Build 3300: Recursive wild-card directory transfers and enhanced logging

  |   Lukas Pokorny

Recursive wild-card directory transfers in FTP, FTP/SSL and SFTP

Finally, GetFiles and PutFiles methods were added to Rebex FTP and SFTP components. Transferring a complete directory tree or a group of files matching the specified wildcard mask is now easier than ever before. Check out the BatchTransfer sample or the corresponding tutorial for more information about this new feature.

Enhanced logging

Enhanced logging capabilities were added to all session-based components (=nearly all Rebex components). Creating a detailed communication log is now only a matter of referencing the Rebex.Net.ProxySocket.dll from your project and adding a single line of code after each call to Ftp, Sftp, Smtp or other constructor:

C#:
client.LogWriter = newRebex.FileLogWriter(@"c: temp log.txt", Rebex.LogLevel.Debug); // change the log path if needed

VB.NET:
client.LogWriter = new Rebex.FileLogWriter("c: temp log.txt", Rebex.LogLevel.Debug) 
' changethe log path if needed

Where "client" is an instance of Ftp, Sftp, Smtp or other object. We are going to write a separate blogpost about this with more information soon.

SSH Shell Enhancements

The second release of Rebex SSH Shell adds many features our customers asked for such as Expect method in TerminalControl and VirtualTerminal control that makes it easilly possible to user these classes for scripting purposes. Other additions are custom color schemes (useful enhancement of monochrome terminal display), custom palettes and build-in routines for rendering most box-drawing and block element characters that are either not present or improperly drawn in majority of fonts - applications using these charactes now look much better.

Complete list of changes:

  • FTP/SFTP/SMTP/POP3/IMAP: Added enhanced logging capabilities.
  • FTP/SFTP/SMTP/POP3/IMAP: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
  • FTP/SFTP/SMTP/POP3/IMAP: Asynchronous method threads are now named.
  • FTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transfering a whole directory tree or use wildcards.
  • FTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transfering a whole directory tree or use wildcards.
  • FTP: Disabled control connection flushing when sending commands because it caused a noticeable slowdown on fast networks.
  • FTP: Added a workaround for Serv-U FTP that ungracefully closes data connection for zero-length files.
  • FTP: Transfer compression support added to .NET CF 3.5 build (it has only been available for .NET 2.0 and higher previously).
  • FTP: Added workaround for some releases of SecureTransport server - ForceSilentCcc option is enabled automatically.
  • FTP: Substantial transfer speed increase on fast networks.
  • FTP: Fixed a bug in CopyToAnotherServer method that caused it to fail for plain FTP unless SecureTransfers property was set to false.
  • FTP: Fixed a bug that caused the KeepAliveDuringTransfer option not to work properly.
  • FTP: FtpOptions.KeepAliveDuringTransfer option code enhanced by adding the '200 No-operation ...' response to the list of possible NOOP command responses.
  • FTP: Added a workaround for misconfigured FTP servers that send an unusable private network address when initializing a data transfer.
  • FTP: SetTransferType method changed to behave just like TransferType property and marked obsolete.
  • FTP/SFTP: Packages for .NET Compact Framework 3.5 added.
  • SFTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transfering a whole directory tree or use wildcards.
  • SFTP: Setting ServerType property to Unix now causes ' ' not to be treated as a directory separator for the remote server.
  • SFTP: Added Scp class to make it possible to transfer files using the legacy SCP protocol.
  • IMAP: Added FolderExists method to Imap class.
  • IMAP: Added a workaroud for servers that allow the "NO" reply in response to FETCH command - a behavior that is strongly discouraged.
  • IMAP: Added a workaround for buggy servers that don't understand the 'RFC822' item, although they process the functionally equivalent 'BODY[]' item just fine.
  • POP3: Added a workaroud for Exchange 2000 that is unable to properly transfer e-mail with a body that starts with a dot.
  • POP3: GetMessage method now returns the transferred message length instead of number of bytes transferred.
  • POP3: A proper Pop3Exception is now thrown if duplicate unique ID is found in a message list.
  • POP3: Fixed a bug that caused a wrong error to be reported when POP3 server closes the connection while transferring data.
  • MIME: GetRaw method added to MimeHeaderCollection class.
  • MIME: Added Insert method to AlternateViewList class.
  • MIME: Added workaround for some badly formatted dates.
  • MIME: Added IgnoreUnparsableSignatures option to MimeOptions to make it possible to read mail messages with broken signatures.
  • MIME: Added partial Mono support to make it possible to parse S/MIME messages (signature validation is still unsupported).
  • MIME: Added MimeOptions.AllowAnyTextCharacters option to make it possible to use any characters in text attachments.
  • MIME: Added a workaroud for Dovecot server that occasionally adds an extra CR (0xD) character at the end if its response when retrieving mail headers using IMAP.
  • MIME: Added a workaroud for parsing '@' character in Content-Type parameters.
  • MIME: Added a workaround for Outlook invitations with missing charset.
  • MIME: Workardound for Mac mail introduced in 1.0.2800.0 modified because it was incompatible with Outlook 2003 in combination with S/MIME messages.
  • MIME: Fixed a bug that caused some text parts to be parsed as attachments instead.
  • MIME: Fixed a bug that caused the DefaultEncoding to not be converted when converting MailMessage to MimeMessage or when sending MailMessage using the Smtp object.
  • MIME: Order of settting BodyText and BodyHtml now does not affect the actual order in the message. Previously, using an uncommon order caused problems GMail and iPhone to display the text part instead of HTML part.
  • SFTP/SSH/SSH Core: Asynchronous method threads are now named.
  • SFTP/SSH/SSH Core: Added support for servers that don't require a password.
  • SSH Core/Security: Added support for saving PuTTY private keys.
  • SSH Core/Security: Added support for reading and setting private key comment.
  • SSH Core: Added ChangePassword method to SshSession class to make it possible to change user password.
  • SSH Core: Fixed a bug in SshSession that caused problems when multiple channels through the same SSH session were used at the same time.
  • Terminal: Added support for custom color schemes to TerminalOptions class.
  • Terminal: Added the ability to scroll while selecting a long chunk of text.
  • Terminal: Added AutoAdjustTerminalFont, UserInputEnabled, ScrollBarEnabled and ScrollbackResetOnDisplayActivity properties to TerminalControl class.
  • Terminal: Added DataReceived event to TerminalControl and VirtualTerminal classes.
  • Terminal: Added scroll-back buffer support.
  • Terminal: Added support for setting the font using the Control's Font property (previously, TerminalFont had to be used).
  • Terminal: Added drawing routines for most box-drawing and block element characters that are either not present or improperly drawn in majority of fonts.
  • Terminal: Added custom palette support.
  • Terminal: Fixed a bug that caused the terminal control to resize several times when minimized and maximized again.
  • Terminal: Fixed a bug that caused an extra column to appear in a newly-created terminal control.
  • Shell: Added support for 'ksh' shell.
  • SecureSocket: Anonymous TLS/SSL ciphers are now supported (but disabled by default).
  • SecureSocket: Fixed an internal static method that was not thread safe.
  • Security: Added Equals method to DistinguishedName class.
  • Security: Added RootCertificate and LeafCertificate properties to CertificateChain class.
  • Security: Added GetCommonName method to DistinguishedName class.
  • Security: Added IEnumerator support to CertificateChain.
  • Security: Added new Certificate.LoadPfx to make it possible to load keys into machine store.
  • Security: Fixed a problem in Certificate.Decrypt method that made the decryption fail with some rare certificates.
  • Security: Fixed a bug in OID decoding routine that cased it to occasionally hang on broken input data.

As you can see, this was a huge release!