Commit 9d4a8c79 authored by Steve Holme's avatar Steve Holme
Browse files

ftpserver.pl: Added cURL SMTP server detection to HELO command handler

As curl will send a HELO command after an negative EHLO response, added
the same detection from commit b07709f7 to the HELO handler to
ensure the test server is identified correctly and an upload isn't
performed.
parent fd8dc21f
Loading
Loading
Loading
Loading
+31 −18
Original line number Diff line number Diff line
@@ -758,6 +758,37 @@ sub EHLO_smtp {
    return 0;
}

sub HELO_smtp {
    my ($client) = @_;

    if($client eq "verifiedserver") {
        # This is the secret command that verifies that this actually is
        # the curl test server
        sendcontrol "554 WE ROOLZ: $$\r\n";

        if($verbose) {
            print STDERR "FTPD: We returned proof we are the test server\n";
        }

        logmsg "return proof we are we\n";
    }
    else {
        # TODO: Get the IP address of the client connection to use in the HELO
        # response when the client doesn't specify one but for now use 127.0.0.1
        if (!$client) {
            $client = "[127.0.0.1]";
        }

        # Set the server type to SMTP
        $smtp_type = "SMTP";

        # Send the HELO response
        sendcontrol "250 $smtp_type pingpong test server Hello $client\r\n";
    }

    return 0;
}

sub MAIL_smtp {
    my ($args) = @_;

@@ -895,24 +926,6 @@ sub DATA_smtp {

}

sub HELO_smtp {
    my ($client) = @_;

    # TODO: Get the IP address of the client connection to use in the HELO
    # response when the client doesn't specify one but for now use 127.0.0.1
    if (!$client) {
        $client = "[127.0.0.1]";
    }

    # Set the server type to SMTP
    $smtp_type = "SMTP";

    # Send the HELO response
    sendcontrol "250 $smtp_type pingpong test server Hello $client\r\n";

    return 0;
}

sub QUIT_smtp {
    sendcontrol "221 cURL $smtp_type server signing off\r\n";