4 * Poppassd Password Driver
6 * Driver to change passwords via Poppassd/Courierpassd
13 function format_error_result($code, $line)
15 if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) {
16 return array('code' => $code, 'message' => $matches[1]);
22 function password_save($curpass, $passwd)
24 $rcmail = rcmail::get_instance();
25 // include('Net/Socket.php');
26 $poppassd = new Net_Socket();
28 $result = $poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null);
29 if (PEAR::isError($result)) {
30 return format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage());
33 $result = $poppassd->readLine();
34 if(!preg_match('/^2\d\d/', $result)) {
35 $poppassd->disconnect();
36 return format_error_result(PASSWORD_ERROR, $result);
39 $poppassd->writeLine("user ". $_SESSION['username']);
40 $result = $poppassd->readLine();
41 if(!preg_match('/^[23]\d\d/', $result) ) {
42 $poppassd->disconnect();
43 return format_error_result(PASSWORD_CONNECT_ERROR, $result);
46 $poppassd->writeLine("pass ". $curpass);
47 $result = $poppassd->readLine();
48 if(!preg_match('/^[23]\d\d/', $result) ) {
49 $poppassd->disconnect();
50 return format_error_result(PASSWORD_ERROR, $result);
53 $poppassd->writeLine("newpass ". $passwd);
54 $result = $poppassd->readLine();
55 $poppassd->disconnect();
56 if (!preg_match('/^2\d\d/', $result))
57 return format_error_result(PASSWORD_ERROR, $result);
59 return PASSWORD_SUCCESS;