aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/data/test13191
-rw-r--r--tests/data/test14071
-rw-r--r--tests/data/test8001
-rw-r--r--tests/data/test8081
-rw-r--r--tests/data/test8091
-rw-r--r--tests/data/test8101
-rw-r--r--tests/data/test8111
-rw-r--r--tests/data/test8121
-rw-r--r--tests/data/test8131
-rw-r--r--tests/data/test8153
-rwxr-xr-xtests/ftpserver.pl68
11 files changed, 70 insertions, 10 deletions
diff --git a/tests/data/test1319 b/tests/data/test1319
index d02ba653b..8ca74cfdc 100644
--- a/tests/data/test1319
+++ b/tests/data/test1319
@@ -58,6 +58,7 @@ pop3://%HOSTIP:%POP3PORT/1319 -p -x %HOSTIP:%PROXYPORT -u user:secret
^User-Agent:
</strip>
<protocol>
+AUTH
USER user
PASS secret
RETR 1319
diff --git a/tests/data/test1407 b/tests/data/test1407
index 0b40a4732..a8d911e0d 100644
--- a/tests/data/test1407
+++ b/tests/data/test1407
@@ -34,6 +34,7 @@ pop3://%HOSTIP:%POP3PORT/1407 -l -u user:secret --libcurl log/test1407.c
# Verify data after the test has been "shot"
<verify>
<protocol>
+AUTH
USER user
PASS secret
LIST 1407
diff --git a/tests/data/test800 b/tests/data/test800
index 8c4850147..eebd27a44 100644
--- a/tests/data/test800
+++ b/tests/data/test800
@@ -38,6 +38,7 @@ pop3://%HOSTIP:%POP3PORT/800 -u user:secret
# Verify data after the test has been "shot"
<verify>
<protocol>
+AUTH
USER user
PASS secret
RETR 800
diff --git a/tests/data/test808 b/tests/data/test808
index 57e1382b1..8f2526f25 100644
--- a/tests/data/test808
+++ b/tests/data/test808
@@ -10,7 +10,6 @@ LIST
# Server-side
<reply>
<servercmd>
-REPLY AUTH -ERR unsupported command
REPLY LIST +OK 808 100
</servercmd>
</reply>
diff --git a/tests/data/test809 b/tests/data/test809
index 7cd04c891..b16a1470e 100644
--- a/tests/data/test809
+++ b/tests/data/test809
@@ -11,7 +11,6 @@ FAILURE
# Server-side
<reply>
<servercmd>
-REPLY AUTH -ERR unsupported command
REPLY LIST -ERR no such message
</servercmd>
</reply>
diff --git a/tests/data/test810 b/tests/data/test810
index 2e24c295b..e2f447eb1 100644
--- a/tests/data/test810
+++ b/tests/data/test810
@@ -13,7 +13,6 @@ LIST
# packets
<servercmd>
SLOWDOWN
-REPLY AUTH -ERR unsupported command
</servercmd>
# When doing LIST, we get the default list output hard-coded in the test
# POP3 server
diff --git a/tests/data/test811 b/tests/data/test811
index 06fa57dcb..26a2906c7 100644
--- a/tests/data/test811
+++ b/tests/data/test811
@@ -10,7 +10,6 @@ LIST
# Server-side
<reply>
<servercmd>
-REPLY AUTH -ERR unsupported command
REPLY LIST +OK but no messages\r\n.
</servercmd>
<datacheck>
diff --git a/tests/data/test812 b/tests/data/test812
index 9f1ba9296..0e0484d10 100644
--- a/tests/data/test812
+++ b/tests/data/test812
@@ -11,7 +11,6 @@ FAILURE
# Server-side
<reply>
<servercmd>
-REPLY AUTH -ERR unsupported command
REPLY RETR -ERR no such message
</servercmd>
</reply>
diff --git a/tests/data/test813 b/tests/data/test813
index 13cfd7074..780fdf170 100644
--- a/tests/data/test813
+++ b/tests/data/test813
@@ -10,7 +10,6 @@ FAILURE
# Server-side
<reply>
<servercmd>
-REPLY AUTH -ERR unsupported command
REPLY PASS -ERR invalid login
</servercmd>
</reply>
diff --git a/tests/data/test815 b/tests/data/test815
index 9779fe690..c4170f0ca 100644
--- a/tests/data/test815
+++ b/tests/data/test815
@@ -9,9 +9,6 @@ RETR
#
# Server-side
<reply>
-<servercmd>
-REPLY AUTH -ERR unsupported command
-</servercmd>
<data>
From: me@somewhere
To: fake@nowhere
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 034ac710d..c3728ef6c 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -138,6 +138,8 @@ my $nodataconn; # set if ftp srvr doesn't establish or accepts data channel
my $nodataconn425; # set if ftp srvr doesn't establish data ch and replies 425
my $nodataconn421; # set if ftp srvr doesn't establish data ch and replies 421
my $nodataconn150; # set if ftp srvr doesn't establish data ch and replies 150
+my $support_capa; # set if server supports capability command
+my $support_auth; # set if server supports authentication command
my %customreply; #
my %customcount; #
my %delayreply; #
@@ -555,6 +557,8 @@ sub protocolsetup {
}
elsif($proto eq 'pop3') {
%commandfunc = (
+ 'CAPA' => \&CAPA_pop3,
+ 'AUTH' => \&AUTH_pop3,
'RETR' => \&RETR_pop3,
'LIST' => \&LIST_pop3,
);
@@ -821,6 +825,50 @@ sub FETCH_imap {
################ POP3 commands
################
+sub CAPA_pop3 {
+ my ($testno) = @_;
+ my @data = ();
+
+ if(!$support_capa) {
+ push @data, "-ERR Unsupported command: 'CAPA'\r\n";
+ }
+ else {
+ push @data, "+OK List of capabilities follows\r\n";
+ push @data, "USER\r\n";
+ if($support_auth) {
+ push @data, "SASL UNKNOWN\r\n";
+ }
+ push @data, "IMPLEMENTATION POP3 pingpong test server\r\n";
+ push @data, ".\r\n";
+ }
+
+ for my $d (@data) {
+ sendcontrol $d;
+ }
+
+ return 0;
+}
+
+sub AUTH_pop3 {
+ my ($testno) = @_;
+ my @data = ();
+
+ if(!$support_auth) {
+ push @data, "-ERR Unsupported command: 'AUTH'\r\n";
+ }
+ else {
+ push @data, "+OK List of supported mechanisms follows\r\n";
+ push @data, "UNKNOWN\r\n";
+ push @data, ".\r\n";
+ }
+
+ for my $d (@data) {
+ sendcontrol $d;
+ }
+
+ return 0;
+}
+
sub RETR_pop3 {
my ($testno) = @_;
my @data;
@@ -1667,6 +1715,8 @@ sub customize {
$nodataconn425 = 0; # default is to not send 425 without data channel
$nodataconn421 = 0; # default is to not send 421 without data channel
$nodataconn150 = 0; # default is to not send 150 without data channel
+ $support_capa = 0; # default is to not support capability command
+ $support_auth = 0; # default is to not support authentication command
%customreply = (); #
%customcount = (); #
%delayreply = (); #
@@ -1731,6 +1781,14 @@ sub customize {
logmsg "FTPD: instructed to use NODATACONN\n";
$nodataconn=1;
}
+ elsif($_ =~ /SUPPORTCAPA/) {
+ logmsg "FTPD: instructed to support CAPABILITY command\n";
+ $support_capa=1;
+ }
+ elsif($_ =~ /SUPPORTAUTH/) {
+ logmsg "FTPD: instructed to support AUTHENTICATION command\n";
+ $support_auth=1;
+ }
elsif($_ =~ /NOSAVE/) {
# don't actually store the file we upload - to be used when
# uploading insanely huge amounts
@@ -2050,7 +2108,15 @@ while(1) {
if($check) {
logmsg "$FTPCMD wasn't handled!\n";
- sendcontrol "500 $FTPCMD is not dealt with!\r\n";
+ if($proto eq 'pop3') {
+ sendcontrol "-ERR $FTPCMD is not dealt with!\r\n";
+ }
+ elsif($proto eq 'imap') {
+ sendcontrol "$cmdid BAD $FTPCMD is not dealt with!\r\n";
+ }
+ else {
+ sendcontrol "500 $FTPCMD is not dealt with!\r\n";
+ }
}
} # while(1)