Commit 33c1f287 authored by Steve Holme's avatar Steve Holme
Browse files

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

parent 00ee5c5c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -127,10 +127,11 @@ PASVBADIP
 - makes PASV send back an illegal IP in its 227 response
CAPA [capabilities]
 - Enables support for and specifies a list of space separated capabilities to
   return to the client for the IMAP CAPABILITY and POP3 CAPA commands
   return to the client for the IMAP CAPABILITY, POP3 CAPA and SMTP EHLO
   commands
AUTH [mechanisms]
 - Enables support for SASL authentication and specifies a list of space
   separated mechanisms for IMAP and POP3
   separated mechanisms for IMAP, POP3 and SMTP

For HTTP/HTTPS:
auth_required   if this is set and a POST/PUT is made without auth, the
+49 −7
Original line number Diff line number Diff line
@@ -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";