CSID and software identification over FTP(E/S)

This article refers to a new feature that will be introduced in the upcoming Syncplify.me Server! version 4.0.

Software identification (server-side) is intrinsic to the SSH (and therefore SFTP) protocol, and has always been supported by Syncplify.me Server! since version 1.0. But the new version 4.0 introduces full support for the CSID (Client/Server ID) extension of the FTP protocol as well.

Therefore, starting from Syncplify.me Server! v4.0, the BeforeSendSoftwareID event-handler now applies to all protocols of the FTP family (FTP, FTPS, and FTPES). Using the scripting framework you can redefine the server identification, and thus run your own “under cover” FTP(E/S) server that declares to be anything you want.

Of course for this to be working you need the FTP client to support and use the CSID extension too.

Here’s a sample script that shows how to manage such command inside a script:

Delphi/Pascal

1

2

3

4

5

begin

Session.SID_ProductName:='MyCustomServer';

Session.SID_Version:='7.0';

Session.SID_VendorID:='Myself';

end.

When the above script is run, your server will not identify itself anymore as “Syncplify.me Server!, but – as defined in the script – as “MyCustomServer” version “7.0” made by “Myself”. Setting any of the above string variables to empty string will cause the server to skip that portion of the ID. Therefore setting all variables to empty string will instruct the server to not report any information about itself. In such case, the response to the CSID command will only include the mandatory CaseSensitive=1; DirSep=/; fields, and nothing else.

In the screenshot here below we have used the SmartFTP v6 client (which already supports the CSID extension) to connect to Syncplify.me Server! v4.0. See the client/server exchange:

The server also takes a note of the identification data (Name and Version) that the client sends, and uses them to identify the client software in the log files.