$code, 'message' => $matches[1]); } return $code; } function save($curpass, $passwd, $username) { $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); $result = $poppassd->connect($host, $port, null); if (is_a($result, 'PEAR_Error')) { return $this->format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage()); } $result = $poppassd->readLine(); if (!preg_match('/^2\d\d/', $result)) { $poppassd->disconnect(); return $this->format_error_result(PASSWORD_ERROR, $result); } $poppassd->writeLine("user ". $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; } }