aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/ftpserver.pl43
1 files changed, 40 insertions, 3 deletions
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index c832aa618..2e36a3fbf 100644
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -25,8 +25,10 @@
# This is a server designed for the curl test suite.
#
# In December 2009 we started remaking the server to support more protocols
-# that are similar in spirit. Like POP3, IMAP and SMTP in addition to the
-# FTP it already supported since a long time.
+# that are similar in spirit. Like POP3, IMAP and SMTP in addition to the FTP
+# it already supported since a long time. Note that it still only supports one
+# protocol per invoke. You need to start mulitple servers to support multiple
+# protocols simultaneously.
#
# It is meant to exercise curl, it is not meant to be a fully working
# or even very standard compliant server.
@@ -408,11 +410,13 @@ elsif($proto eq "imap") {
}
elsif($proto eq "smtp") {
+ %commandfunc = ('DATA' => \&DATA_smtp,
+ 'RCPT' => \&RCPT_smtp,
+ );
%displaytext = ('EHLO' => '230 We are happy you popped in!',
'MAIL' => '200 Note taken',
'RCPT' => '200 Receivers accepted',
'QUIT' => '200 byebye',
- 'DATA' => '200 hit me',
);
}
@@ -438,6 +442,39 @@ sub close_dataconn {
}
################
+################ SMTP commands
+################
+
+# what set by "RCPT"
+my $smtp_rcpt;
+
+sub DATA_smtp {
+ my $testno;
+
+ if($smtp_rcpt =~ /^TO:(.*)/) {
+ $testno = $1;
+ }
+ else {
+ return; # failure
+ }
+
+ if($testno eq "verifiedserver") {
+ sendcontrol "554 WE ROOLZ: $$\r\n";
+ }
+ else {
+ sendcontrol "354 Show me the mail\r\n";
+ }
+
+ logmsg "===> rcpt $testno was $smtp_rcpt\n";
+}
+
+sub RCPT_smtp {
+ my ($args) = @_;
+
+ $smtp_rcpt = $args;
+}
+
+################
################ IMAP commands
################