make the ftp server support reply/servercmd, and make SLOWDOWN work, and

update the docs accordingly
This commit is contained in:
Daniel Stenberg 2005-04-14 22:52:08 +00:00
parent e9d068b913
commit cd1144dc24
3 changed files with 19 additions and 10 deletions

View File

@ -57,18 +57,22 @@ number to return on a ftp SIZE command (set to -1 to make this command fail)
what to send back if the client sends a (FTP) MDTM command, set to -1 to
have it return that the file doesn't exist
</mdtm>
<servercmd>
special purpose server-command to control its behavior *before* the
reply is sent:
auth_required - server fails if no auth is provided
</servercmd>
<postcmd>
special purpose server-command to control its behavior *after* the
reply is sent
</postcmd>
<servercmd>
equivalent to <cmd> but for HTTP, one specified command is supported:
Special-commands for the server.
For FTP, these are supported:
REPLY
COUNT
DELAY
RETRWEIRDO
RETRNOSIZE
NOSAVE
SLOWDOWN
For HTTP, one specified command is supported:
"auth_required" - if this is set and a POST/PUT is made without auth, the
server will NOT wait for the full request body to get sent
</servercmd>

View File

@ -118,7 +118,7 @@ sub sendcontrol {
for(@a) {
print $_;
select(undef, undef, undef, 0.1);
select(undef, undef, undef, 0.02);
}
}
@ -544,6 +544,7 @@ sub customize {
undef %customreply;
$nosave = 0; # default is to save as normal
$controldelay = 0; # default is no delaying the responses
open(CUSTOM, "<log/ftpserver.cmd") ||
return 1;
@ -565,6 +566,10 @@ sub customize {
$delayreply{$1}=$2;
logmsg "FTPD: delay reply for $1 with $2 seconds\n";
}
elsif($_ =~ /SLOWDOWN/) {
$controldelay=1;
logmsg "FTPD: send response with 0.1 sec delay between each byte\n";
}
elsif($_ =~ /RETRWEIRDO/) {
logmsg "FTPD: instructed to use RETRWEIRDO\n";
$retrweirdo=1;

View File

@ -1067,8 +1067,8 @@ sub singletest {
# if this section exists, we verify upload
my @upload = getpart("verify", "upload");
# if this section exists, it is FTP server instructions:
my @ftpservercmd = getpart("server", "instruction");
# if this section exists, it might be FTP server instructions:
my @ftpservercmd = getpart("reply", "servercmd");
my $CURLOUT="$LOGDIR/curl$testnum.out"; # curl output if not stdout