ftpserver.pl: Added CAPA & AUTH directive support to the SMTP EHLO handler

This commit is contained in:
Steve Holme
2013-09-15 16:53:20 +01:00
parent 00ee5c5cf1
commit 33c1f2876b
2 changed files with 52 additions and 9 deletions

View File

@@ -689,6 +689,55 @@ sub close_dataconn {
# what set by "RCPT"
my $smtp_rcpt;
sub EHLO_smtp {
my ($client) = @_;
my @data;
# TODO: Get the IP address of the client connection to use in the EHLO
# response when the client doesn't specify one but for now use 127.0.0.1
if (!$client) {
$client = "[127.0.0.1]";
}
# Calculate the EHLO response
push @data, "ESMTP pingpong test server Hello $client";
if((@capabilities) || (@auth_mechs)) {
my $mechs;
for my $c (@capabilities) {
push @data, $c;
}
for my $am (@auth_mechs) {
if(!$mechs) {
$mechs = "$am";
}
else {
$mechs .= " $am";
}
}
if($mechs) {
push @data, "AUTH $mechs";
}
}
# Send the EHLO response
for (my $i = 0; $i < @data; i++) {
my $d = $data[$i];
if($i < @data - 1) {
sendcontrol "250-$d\r\n";
}
else {
sendcontrol "250 $d\r\n";
}
}
return 0;
}
sub DATA_smtp {
my $testno;
@@ -787,13 +836,6 @@ sub HELO_smtp {
return 0;
}
sub EHLO_smtp {
sendcontrol "250-SIZE\r\n";
sendcontrol "250 Welcome visitor, stay a while staaaaaay forever\r\n";
return 0;
}
sub QUIT_smtp {
sendcontrol "200 byebye\r\n";