FTP Server Testing
In the process of working on a FTP Server demo, I find it helpful to use a lot of FTP clients that do NOT use
one line of Indy Source Code. I say this because I find that using some clients may expose
FTP server bugs that you would miss with other clients. This is particularly true with advanced
FTP features that relatively new such as MODE
Z, MLSD, some SITE
commands, and SSL with FTP.
In addition, some clients might be buggy and you may have to work around those bugs (especially if the
client is a popular one). In testing the NcFTP client, I found
where an extra 200 reply line was being sent with the reply to the "OPTS MLST" command and that was throwing
off the client. Finally, you get an opportunity to see some
"de facto" practices that clients do so you can support them.
Our FTP server supports a number of commands that I've observed FTP clients use. For example, older
versions of FTP Voyager would get accurate file dates using the standard list command by getting a time-zone
offset with a "SITE ZONE" command and then using a special "-T" switch that Serv-U
FTP Server supports. I was able to do the same thing with our server. Recently, I found
that NcFTP was sending a special SITE UTIME command to preserve file
dates and I added code in our server to support this feature. In Cute
FTP Professional, I was able to see how the COMB command was used for multipart file uploads and I
also implemented their XCRC command. I tested secure FTP site-to-site transfers using the CPSV command
by testing it with FlashFXP and then I tested our SSCN
support using SmartFTP. There are numerous other examples.
If you are curious, I test our FTP server component with the following clients:
I also have tested our FTP client component with RaidenFTPD server
and BlackMoon FTP Server plus various FTP sites that
I've lost track of.