diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-09-29 17:23:26 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-09-29 17:23:26 +0000 |
| commit | 043b159256a721853b50631827690eeb842c844a (patch) | |
| tree | 0d9adac6bc4afff76759f22e3fb09f45c59cdb80 /plugins/password/drivers | |
| parent | 932ea522ca08af44ca32cad7a00a049310a49538 (diff) | |
- Added possibility to display extended error messages (#1486704)
- Added extended error messages in Poppassd driver (#1486704)
git-svn-id: https://svn.roundcube.net/trunk@4016 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins/password/drivers')
| -rw-r--r-- | plugins/password/drivers/poppassd.php | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/plugins/password/drivers/poppassd.php b/plugins/password/drivers/poppassd.php index 8a54fb7d9..fc105de47 100644 --- a/plugins/password/drivers/poppassd.php +++ b/plugins/password/drivers/poppassd.php @@ -5,46 +5,56 @@ * * Driver to change passwords via Poppassd/Courierpassd * - * @version 1.0 + * @version 1.1 * @author Philip Weir * */ +function format_error_result($code, $line) +{ + if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) { + return array('code' => $code, 'message' => $matches[1]); + } else { + return $code; + } +} + function password_save($curpass, $passwd) { $rcmail = rcmail::get_instance(); // include('Net/Socket.php'); $poppassd = new Net_Socket(); - if (PEAR::isError($poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null))) { - return PASSWORD_CONNECT_ERROR; + $result = $poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null); + if (PEAR::isError($result)) { + return format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage()); } else { $result = $poppassd->readLine(); if(!preg_match('/^2\d\d/', $result)) { $poppassd->disconnect(); - return PASSWORD_ERROR; + return format_error_result(PASSWORD_ERROR, $result); } else { $poppassd->writeLine("user ". $_SESSION['username']); $result = $poppassd->readLine(); if(!preg_match('/^[23]\d\d/', $result) ) { $poppassd->disconnect(); - return PASSWORD_CONNECT_ERROR; + return format_error_result(PASSWORD_CONNECT_ERROR, $result); } else { $poppassd->writeLine("pass ". $curpass); $result = $poppassd->readLine(); if(!preg_match('/^[23]\d\d/', $result) ) { $poppassd->disconnect(); - return PASSWORD_ERROR; + return format_error_result(PASSWORD_ERROR, $result); } else { $poppassd->writeLine("newpass ". $passwd); $result = $poppassd->readLine(); $poppassd->disconnect(); if (!preg_match('/^2\d\d/', $result)) - return PASSWORD_ERROR; + return format_error_result(PASSWORD_ERROR, $result); else return PASSWORD_SUCCESS; } @@ -52,5 +62,3 @@ function password_save($curpass, $passwd) } } } - -?> |
