directly to ftpserver.cmd and removing unneeded empty sections.
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
works
so does it?
</data>
+<servercmd>
+REPLY EPSV 500 no such command
+</servercmd>
</reply>
# Client-side
ftp://%HOSTIP:%FTPPORT/102
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-</file>
</client>
# Verify data after the test has been "shot"
works
so does it?
</data>
+<servercmd>
+REPLY EPSV 500 no such command
+REPLY SIZE 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://userdude:passfellow@%HOSTIP:%FTPPORT/103 --use-ascii
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-REPLY SIZE 500 no such command
-</file>
</client>
# Verify data after the test has been "shot"
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
<size>
85
</size>
+<servercmd>
+REPLY EPSV 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/110 -C 20
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-</file>
</client>
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
<errorcode>
36
</errorcode>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
</info>
# Server-side
<reply>
+<servercmd>
+REPLY USER 314 bluah you fewl!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/113
</command>
-<file name="log/ftpserver.cmd">
-REPLY USER 314 bluah you fewl!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY PASS 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/114
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY PASV 314 bluah you f00l!
+REPLY EPSV 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/115
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASV 314 bluah you f00l!
-REPLY EPSV 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY PORT 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/116 -P 127.0.0.1
</command>
-<file name="log/ftpserver.cmd">
-REPLY PORT 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY EPSV 314 bluah you f00l!
+REPLY TYPE 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/117
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 314 bluah you f00l!
-REPLY TYPE 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY RETR 314 bluah you f00l!
+REPLY EPSV 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/118
</command>
-<file name="log/ftpserver.cmd">
-REPLY RETR 314 bluah you f00l!
-REPLY EPSV 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY RETR 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/119 -P -
</command>
-<file name="log/ftpserver.cmd">
-REPLY RETR 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
works
so does it?
</data>
+<servercmd>
+REPLY EPSV 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/120 -Q "-DELE file"
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
<size>
5
</size>
+<servercmd>
+REPLY EPSV 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/122 -C 5
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-</file>
</client>
# Verify data after the test has been "shot"
<data>
we can still send data even if pwd fails!
</data>
+<servercmd>
+REPLY PWD 314 bluah you f00l!
+REPLY EPSV 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/124
</command>
-<file name="log/ftpserver.cmd">
-REPLY PWD 314 bluah you f00l!
-REPLY EPSV 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
</info>
# Server-side
<reply>
+<servercmd>
+REPLY CWD 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/path/to/file/125
</command>
-<file name="log/ftpserver.cmd">
-REPLY CWD 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"
<data>
this is file contents
</data>
+<servercmd>
+RETRWEIRDO
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/126
</command>
-<file name="log/ftpserver.cmd">
-RETRWEIRDO
-</file>
</client>
# Verify data after the test has been "shot"
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER user1\r
PASS passwd1\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER user2\r
PASS passwd2\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER mary\r
PASS mark\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER user1\r
PASS passwd1\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER romulus\r
PASS rhemus\r
<data>
this is file contents
</data>
+<servercmd>
+RETRNOSIZE
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/137
</command>
-<file name="log/ftpserver.cmd">
-RETRNOSIZE
-</file>
</client>
# Verify data after the test has been "shot"
<size>
-1
</size>
+<servercmd>
+RETRNOSIZE
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/blalbla/lululul/138
</command>
-<file name="log/ftpserver.cmd">
-RETRNOSIZE
-</file>
</client>
# Verify data after the test has been "shot"
<reply>
<data>
</data>
+<servercmd>
+REPLY NLST 450 No files found
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/ -P - -l
</command>
-<file name="log/ftpserver.cmd">
-REPLY NLST 450 No files found
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY NLST 550 Have a taste on this!
+</servercmd>
<data>
</data>
</reply>
<command>
ftp://%HOSTIP:%FTPPORT/ -P - -l
</command>
-<file name="log/ftpserver.cmd">
-REPLY NLST 550 Have a taste on this!
-</file>
</client>
# Verify data after the test has been "shot"
<data>
foo
</data>
+<servercmd>
+REPLY CWD 550 I won't allow this on my server
+COUNT CWD 1
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/first/dir/here/147 --ftp-create-dirs
</command>
-<file name="log/ftpserver.cmd">
-REPLY CWD 550 I won't allow this on my server
-COUNT CWD 1
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY CWD 550 I won't allow this on my server
+REPLY MKD 550 We will have no such thing
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/attempt/to/get/this/148 --ftp-create-dirs
</command>
-<file name="log/ftpserver.cmd">
-REPLY CWD 550 I won't allow this on my server
-REPLY MKD 550 We will have no such thing
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
-moooooooo
+<servercmd>
+DELAY CWD 60
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/path/to/file/190 -m %FTPTIME2
</command>
-<file name="log/ftpserver.cmd">
-DELAY CWD 60
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY PASS 530 temporarily not available
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/195
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 530 temporarily not available
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY PASS 530 temporarily not available
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/196 --retry 1
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 530 temporarily not available
-</file>
</client>
# Verify data after the test has been "shot"
<data>
data blobb
</data>
+<servercmd>
+REPLY EPSV 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/a/path/211 ftp://%HOSTIP:%FTPPORT/a/path/211
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-</file>
<stdout>
data blobb
data blobb
<data>
data blobb
</data>
+<servercmd>
+REPLY EPRT 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/a/path/212 ftp://%HOSTIP:%FTPPORT/a/path/212 -P -
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPRT 500 no such command
-</file>
<stdout>
data blobb
data blobb
works
so does it?
</data>
+<servercmd>
+REPLY EPSV 500 no such command
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3"
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 500 no such command
-</file>
</client>
# Verify data after the test has been "shot"
works
so does it?
</data>
+<servercmd>
+REPLY PASS 332 please provide account name
+REPLY ACCT 230 thank you
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/228 --ftp-account "one count"
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 332 please provide account name
-REPLY ACCT 230 thank you
-</file>
</client>
</info>
# Server-side
<reply>
+<servercmd>
+REPLY PASS 332 please provide account name
+REPLY ACCT 532 bluah!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/229 --ftp-account "one count"
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 332 please provide account name
-REPLY ACCT 532 bluah!
-</file>
</client>
# Verify data after the test has been "shot"
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
<testcase>
+
+# Server-side
+<reply>
+<servercmd>
+REPLY SIZE 550 access to this file is very much denied
+REPLY APPE 550 I said: access to this file is very much denied
+REPLY STOR 550 I said: access to this file is very much denied
+</servercmd>
+</reply>
+
# Client-side
<client>
<server>
FTP resume upload but denied access to remote file
</name>
<command>
-ftp://%HOSTIP:%FTPPORT/236 -T log/ftpserver.cmd -C -
+ftp://%HOSTIP:%FTPPORT/236 -T log/file236.txt -C -
</command>
-<file name="log/ftpserver.cmd">
-REPLY SIZE 550 access to this file is very much denied
-REPLY APPE 550 I said: access to this file is very much denied
-REPLY STOR 550 I said: access to this file is very much denied
+<file name="log/file236.txt">
+Test data
</file>
</client>
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127)
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/237 --disable-epsv
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127)
-</file>
</client>
# Verify data after the test has been "shot"
<testcase>
# Server-side
<reply>
+<servercmd>
+REPLY EPSV 229 Entering Passiv Mode (|||1000000|)
+REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127)
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/238
</command>
-<file name="log/ftpserver.cmd">
-REPLY EPSV 229 Entering Passiv Mode (|||1000000|)
-REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127)
-</file>
</client>
# Verify data after the test has been "shot"
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
USER replacement\r
<errorcode>
63
</errorcode>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
<testcase>
-#
-# Server-side
-<reply>
-MOOOOO
-</reply>
-
-#
# Client-side
<client>
<features>
<strip>
^User-Agent:.*
</strip>
-<protocol>
-</protocol>
<data>
-[insert full protocol verifiction dump here]
</data>
</verify>
</testcase>
<testcase>
-# Server-side
-<reply>
-<data>
-</data>
-</reply>
-
# Client-side
<client>
<features>
<strip>
^User-Agent:.*
</strip>
-<protocol>
-</protocol>
<errorcode>
77
</errorcode>
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
<errorcode>
64
</errorcode>
-<strip>
-</strip>
<protocol>
AUTH SSL\r
AUTH TLS\r
#
# Server-side
<reply>
+<servercmd>
+REPLY MDTM 550 bluah you f00l!
+REPLY SIZE 550 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/511
</command>
-<file name="log/ftpserver.cmd">
-REPLY MDTM 550 bluah you f00l!
-REPLY SIZE 550 bluah you f00l!
-</file>
</client>
#
<data>
contents of file
</data>
+<servercmd>
+REPLY MDTM 213 20030405060708
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/520
</command>
-<file name="log/ftpserver.cmd">
-REPLY MDTM 213 20030405060708
-</file>
</client>
#
#
# Verify data after the test has been "shot"
<verify>
-<strip>
-filter off really nothing
-</strip>
<protocol>
USER xxx\r
PASS yyy\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
GET /path/528 HTTP/1.1\r
Host: %HOSTIP:%HTTPPORT\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
GET /path/530 HTTP/1.1\r
Host: %HOSTIP:%HTTPPORT\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
# Verify data after the test has been "shot"
<verify>
-<strip>
-</strip>
<protocol>
USER anonymous\r
PASS ftp@example.com\r
FAILURE
</keywords>
</info>
+
# Server-side
<reply>
+<servercmd>
+REPLY PASS 314 bluah you f00l!
+</servercmd>
</reply>
# Client-side
<command>
ftp://%HOSTIP:%FTPPORT/538
</command>
-<file name="log/ftpserver.cmd">
-REPLY PASS 314 bluah you f00l!
-</file>
</client>
# Verify data after the test has been "shot"