diff options
-rw-r--r-- | tests/data/test1319 | 1 | ||||
-rw-r--r-- | tests/data/test1407 | 1 | ||||
-rw-r--r-- | tests/data/test800 | 1 | ||||
-rw-r--r-- | tests/data/test808 | 1 | ||||
-rw-r--r-- | tests/data/test809 | 1 | ||||
-rw-r--r-- | tests/data/test810 | 1 | ||||
-rw-r--r-- | tests/data/test811 | 1 | ||||
-rw-r--r-- | tests/data/test812 | 1 | ||||
-rw-r--r-- | tests/data/test813 | 1 | ||||
-rw-r--r-- | tests/data/test815 | 3 | ||||
-rwxr-xr-x | tests/ftpserver.pl | 68 |
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) |