SMS Reminder by Larry Lart
[openemr.git] / library / classes / smtp / login_sasl_client.php
blobffeb2603b650ff8dc4a0c20178d045105e7bcfd6
1 <?php
2 /*
3 * login_sasl_client.php
5 * @(#) $Id$
7 */
9 define("SASL_LOGIN_STATE_START", 0);
10 define("SASL_LOGIN_STATE_IDENTIFY_USER", 1);
11 define("SASL_LOGIN_STATE_IDENTIFY_PASSWORD", 2);
12 define("SASL_LOGIN_STATE_DONE", 3);
14 class login_sasl_client_class
16 var $credentials=array();
17 var $state=SASL_LOGIN_STATE_START;
19 Function Initialize(&$client)
21 return(1);
24 Function Start(&$client, &$message, &$interactions)
26 if($this->state!=SASL_LOGIN_STATE_START)
28 $client->error="LOGIN authentication state is not at the start";
29 return(SASL_FAIL);
31 $this->credentials=array(
32 "user"=>"",
33 "password"=>"",
34 "realm"=>""
36 $defaults=array(
37 "realm"=>""
39 $status=$client->GetCredentials($this->credentials,$defaults,$interactions);
40 if($status==SASL_CONTINUE)
41 $this->state=SASL_LOGIN_STATE_IDENTIFY_USER;
42 Unset($message);
43 return($status);
46 Function Step(&$client, $response, &$message, &$interactions)
48 switch($this->state)
50 case SASL_LOGIN_STATE_IDENTIFY_USER:
51 $message=$this->credentials["user"].(strlen($this->credentials["realm"]) ? "@".$this->credentials["realm"] : "");
52 $this->state=SASL_LOGIN_STATE_IDENTIFY_PASSWORD;
53 break;
54 case SASL_LOGIN_STATE_IDENTIFY_PASSWORD:
55 $message=$this->credentials["password"];
56 $this->state=SASL_LOGIN_STATE_DONE;
57 break;
58 case SASL_LOGIN_STATE_DONE:
59 $client->error="LOGIN authentication was finished without success";
60 break;
61 default:
62 $client->error="invalid LOGIN authentication step state";
63 return(SASL_FAIL);
65 return(SASL_CONTINUE);