ftpserver.pl: Moved IMAP LOGIN handler into own function
authorSteve Holme <steve_holme@hotmail.com>
Sat, 14 Sep 2013 19:52:29 +0000 (20:52 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Sat, 14 Sep 2013 19:52:29 +0000 (20:52 +0100)
tests/ftpserver.pl

index 4f67207..d26a76c 100755 (executable)
@@ -170,6 +170,12 @@ my $got_exit_signal = 0; # set if program should finish execution ASAP
 my $exit_signal;         # first signal handled in exit_signal_handler
 
 #**********************************************************************
+# Mail related definitions
+#
+my $TEXT_USERNAME = "user";
+my $TEXT_PASSWORD = "secret";
+
+#**********************************************************************
 # exit_signal_handler will be triggered to indicate that the program
 # should finish its execution in a controlled way as soon as possible.
 # For now, program will also terminate from within this handler.
@@ -594,6 +600,7 @@ sub protocolsetup {
             'FETCH'      => \&FETCH_imap,
             'LIST'       => \&LIST_imap,
             'LSUB'       => \&LSUB_imap,
+            'LOGIN'      => \&LOGIN_imap,
             'LOGOUT'     => \&LOGOUT_imap,
             'NOOP'       => \&NOOP_imap,
             'RENAME'     => \&RENAME_imap,
@@ -604,7 +611,6 @@ sub protocolsetup {
             'UID'        => \&UID_imap,
         );
         %displaytext = (
-            'LOGIN'   => ' OK LOGIN completed',
             'welcome' => join("",
             '        _   _ ____  _     '."\r\n",
             '    ___| | | |  _ \| |    '."\r\n",
@@ -817,6 +823,26 @@ sub CAPABILITY_imap {
     return 0;
 }
 
+sub LOGIN_imap {
+    my ($args) = @_;
+    my ($user, $password) = split(/ /, $args, 2);
+    fix_imap_params($user, $password);
+
+    logmsg "LOGIN_imap got $args\n";
+
+    if ($user eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    elsif (($user ne $TEXT_USERNAME) && ($password ne $TEXT_PASSWORD)) {
+        sendcontrol "$cmdid NO LOGIN failed\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK LOGIN completed\r\n";
+    }
+
+    return 0;
+}
+
 sub SELECT_imap {
     my ($testno) = @_;
     fix_imap_params($testno);
@@ -1463,7 +1489,7 @@ sub PASS_pop3 {
 
     logmsg "PASS_pop3 got $password\n";
 
-    if (($username ne "user") && ($password ne "secret")) {
+    if (($username ne $TEXT_USERNAME) && ($password ne $TEXT_PASSWORD)) {
         sendcontrol "-ERR Login failure\r\n";
     }
     else {