diff --git a/CHANGELOG b/CHANGELOG index 8181fda87..a52c8fc6f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,6 +13,7 @@ CHANGELOG Roundcube Webmail - Display error when trying to upload more files than specified in max_file_uploads (#5483) - Add missing sql upgrade file for 'ip' column resize in session table (#5465) - Do not show inline images of unsupported mimetype (#5463) +- Password: Added replacement variables support in password_pop_host (#5539) - Password: Don't store passwords in temp files when using dovecotpw (#5531) - Password: Added LDAP PPolicy driver (#5364) - Password: Added possibility to nicely redirect from other plugins on password expiration (#5468) diff --git a/plugins/password/drivers/poppassd.php b/plugins/password/drivers/poppassd.php index 8415ce653..8e5562cdf 100644 --- a/plugins/password/drivers/poppassd.php +++ b/plugins/password/drivers/poppassd.php @@ -37,50 +37,50 @@ class rcube_poppassd_password function save($curpass, $passwd) { - $rcmail = rcmail::get_instance(); -// include('Net/Socket.php'); + $rcmail = rcmail::get_instance(); $poppassd = new Net_Socket(); - + + $port = $rcmail->config->get('password_pop_port', 106); $host = $rcmail->config->get('password_pop_host', 'localhost'); $host = rcube_utils::parse_host($host); - $port = $rcmail->config->get('password_pop_port', 106) $result = $poppassd->connect($host, $port, null); + if (is_a($result, 'PEAR_Error')) { return $this->format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage()); } - else { - $result = $poppassd->readLine(); - if(!preg_match('/^2\d\d/', $result)) { - $poppassd->disconnect(); - return $this->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 $this->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 $this->format_error_result(PASSWORD_ERROR, $result); - } - else { - $poppassd->writeLine("newpass ". $passwd); - $result = $poppassd->readLine(); - $poppassd->disconnect(); - if (!preg_match('/^2\d\d/', $result)) { - return $this->format_error_result(PASSWORD_ERROR, $result); - } - - return PASSWORD_SUCCESS; - } - } - } + + $result = $poppassd->readLine(); + + if (!preg_match('/^2\d\d/', $result)) { + $poppassd->disconnect(); + return $this->format_error_result(PASSWORD_ERROR, $result); + } + + $poppassd->writeLine("user ". $_SESSION['username']); + $result = $poppassd->readLine(); + + if (!preg_match('/^[23]\d\d/', $result)) { + $poppassd->disconnect(); + return $this->format_error_result(PASSWORD_CONNECT_ERROR, $result); + } + + $poppassd->writeLine("pass ". $curpass); + $result = $poppassd->readLine(); + + if (!preg_match('/^[23]\d\d/', $result)) { + $poppassd->disconnect(); + return $this->format_error_result(PASSWORD_ERROR, $result); } + + $poppassd->writeLine("newpass ". $passwd); + $result = $poppassd->readLine(); + $poppassd->disconnect(); + + if (!preg_match('/^2\d\d/', $result)) { + return $this->format_error_result(PASSWORD_ERROR, $result); + } + + return PASSWORD_SUCCESS; } }