plugins/password/drivers/chpasswd.php
@@ -1,7 +1,7 @@ <?php /** * chpasswd Driver * chpasswd driver * * Driver that adds functionality to change the systems user password via * the 'chpasswd' command. @@ -10,6 +10,21 @@ * * @version 2.0 * @author Alex Cartwright <acartwright@mutinydesign.co.uk> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_chpasswd_password plugins/password/drivers/cpanel.php
@@ -15,6 +15,21 @@ * * @version 3.0 * @author Christian Chech <christian@chech.fr> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_cpanel_password plugins/password/drivers/dbmail.php
@@ -13,6 +13,21 @@ * For installation instructions please read the README file. * * @version 1.0 * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_dbmail_password plugins/password/drivers/directadmin.php
@@ -8,6 +8,20 @@ * @version 2.1 * @author Victor Benincasa <vbenincasa@gmail.com> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_directadmin_password plugins/password/drivers/domainfactory.php
@@ -10,80 +10,91 @@ * @author Till Krüss <me@tillkruess.com> * @link http://tillkruess.com/projects/roundcube/ * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_domainfactory_password { function save($curpass, $passwd) { $rcmail = rcmail::get_instance(); function save($curpass, $passwd) { $rcmail = rcmail::get_instance(); if (is_null($curpass)) { $curpass = $rcmail->decrypt($_SESSION['password']); } if (is_null($curpass)) { $curpass = $rcmail->decrypt($_SESSION['password']); } if ($ch = curl_init()) { if ($ch = curl_init()) { // initial login curl_setopt_array($ch, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => 'https://ssl.df.eu/chmail.php', CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array( 'login' => $rcmail->user->get_username(), 'pwd' => $curpass, 'action' => 'change' )) )); // initial login curl_setopt_array($ch, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => 'https://ssl.df.eu/chmail.php', CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array( 'login' => $rcmail->user->get_username(), 'pwd' => $curpass, 'action' => 'change' )) )); if ($result = curl_exec($ch)) { // login successful, get token! $postfields = array( 'pwd1' => $passwd, 'pwd2' => $passwd, 'action[update]' => 'Speichern' ); if ($result = curl_exec($ch)) { // login successful, get token! $postfields = array( 'pwd1' => $passwd, 'pwd2' => $passwd, 'action[update]' => 'Speichern' ); preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields); foreach ($fields[1] as $field_key => $field_name) { $postfields[$field_name] = $fields[2][$field_key]; } preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields); foreach ($fields[1] as $field_key => $field_name) { $postfields[$field_name] = $fields[2][$field_key]; } // change password $ch = curl_copy_handle($ch); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postfields)); if ($result = curl_exec($ch)) { // has the password been changed? if (strpos($result, 'Einstellungen erfolgreich') !== false) { return PASSWORD_SUCCESS; } // change password $ch = curl_copy_handle($ch); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postfields)); if ($result = curl_exec($ch)) { // show error message(s) if possible if (strpos($result, '<div class="d-msg-text">') !== false) { preg_match_all('#<div class="d-msg-text">(.*?)</div>#s', $result, $errors); if (isset($errors[1])) { $error_message = ''; foreach ($errors[1] as $error) { $error_message .= trim(mb_convert_encoding( $error, 'UTF-8', 'ISO-8859-15' )).' '; } return array('code' => PASSWORD_ERROR, 'message' => $error_message); } } } else { return PASSWORD_CONNECT_ERROR; } } else { return PASSWORD_CONNECT_ERROR; } } else { return PASSWORD_CONNECT_ERROR; } // has the password been changed? if (strpos($result, 'Einstellungen erfolgreich') !== false) { return PASSWORD_SUCCESS; } // show error message(s) if possible if (strpos($result, '<div class="d-msg-text">') !== false) { preg_match_all('#<div class="d-msg-text">(.*?)</div>#s', $result, $errors); if (isset($errors[1])) { $error_message = ''; foreach ( $errors[1] as $error ) { $error_message .= trim(mb_convert_encoding( $error, 'UTF-8', 'ISO-8859-15' )).' '; } return array('code' => PASSWORD_ERROR, 'message' => $error_message); } } } else { return PASSWORD_CONNECT_ERROR; } } else { return PASSWORD_CONNECT_ERROR; } } else { return PASSWORD_CONNECT_ERROR; } return PASSWORD_ERROR; } return PASSWORD_ERROR; } } plugins/password/drivers/expect.php
@@ -1,7 +1,7 @@ <?php /** * expect Driver * expect driver * * Driver that adds functionality to change the systems user password via * the 'expect' command. @@ -10,7 +10,7 @@ * * @version 2.0 * @author Andy Theuninck <gohanman@gmail.com) * * * Based on chpasswd roundcubemail password driver by * @author Alex Cartwright <acartwright@mutinydesign.co.uk) * and expect horde passwd driver by @@ -21,8 +21,23 @@ * password_expect_script => path to "password-expect" file * password_expect_params => arguments for the expect script * see the password-expect file for details. This is probably * a good starting default: * a good starting default: * -telent -host localhost -output /tmp/passwd.log -log /tmp/passwd.log * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_expect_password plugins/password/drivers/gearman.php
@@ -8,6 +8,21 @@ * * @version 1.0 * @author Mohammad Anwari <mdamt@mdamt.net> * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_gearman_password plugins/password/drivers/hmail.php
@@ -5,6 +5,21 @@ * * @version 2.0 * @author Roland 'rosali' Liebl <myroundcube@mail4us.net> * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_hmail_password plugins/password/drivers/ldap.php
@@ -12,6 +12,20 @@ * method hashPassword based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/). * method randomSalt based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/). * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_ldap_password @@ -301,5 +315,4 @@ return $str; } } plugins/password/drivers/ldap_simple.php
@@ -9,6 +9,22 @@ * * @version 2.0 * @author Wout Decre <wout@canodus.be> * @author Aleksander Machniak <machniak@kolabsys.com> * * Copyright (C) 2005-2014, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_ldap_simple_password @@ -219,5 +235,4 @@ rcube::write_log('ldap', $str); } } } plugins/password/drivers/pam.php
@@ -5,6 +5,21 @@ * * @version 2.0 * @author Aleksander Machniak * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_pam_password plugins/password/drivers/plesk.php
@@ -1,21 +1,33 @@ <?php /** * Roundcube Password Driver for Plesk-RPC. * * This driver changes a E-Mail-Password via Plesk-RPC * Deps: PHP-Curl, SimpleXML * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @copyright Adfinis SyGroup AG, 2014 * @license GNU GPL v3 * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @copyright Adfinis SyGroup AG, 2014 * * Config needed: * $config['password_plesk_host'] = '10.0.0.5'; * $config['password_plesk_user'] = 'admin'; * $config['password_plesk_pass'] = 'pass'; * $config['password_plesk_rpc_port'] = 8443; * $config['password_plesk_rpc_path'] = enterprise/control/agent.php; * $config['password_plesk_host'] = '10.0.0.5'; * $config['password_plesk_user'] = 'admin'; * $config['password_plesk_pass'] = 'pass'; * $config['password_plesk_rpc_port'] = 8443; * $config['password_plesk_rpc_path'] = enterprise/control/agent.php; * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ /** @@ -23,45 +35,44 @@ * * See {ROUNDCUBE_ROOT}/plugins/password/README for API description * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> */ class rcube_plesk_password { class rcube_plesk_password { /** * this method is called from roundcube to change the password * * roundcube allready validated the old password so we just need to change it at this point * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $curpass Current password * @param string $newpass New password * @returns int PASSWORD_SUCCESS|PASSWORD_ERROR */ function save($currpass, $newpass)\ { // get config $rcmail = rcmail::get_instance(); $host = $rcmail->config->get('password_plesk_host'); $user = $rcmail->config->get('password_plesk_user'); $pass = $rcmail->config->get('password_plesk_pass'); $port = $rcmail->config->get('password_plesk_rpc_port'); $path = $rcmail->config->get('password_plesk_rpc_path'); /** * this method is called from roundcube to change the password * * roundcube allready validated the old password so we just need to change it at this point * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $curpass current password * @param string $newpass new password * @returns PASSWORD_SUCCESS|PASSWORD_ERROR */ function save($currpass, $newpass) { // create plesk-object $plesk = new plesk_rpc; $plesk->init($host, $port, $path, $user, $pass); // get config $rcmail = rcmail::get_instance(); $host = $rcmail->config->get('password_plesk_host'); $user = $rcmail->config->get('password_plesk_user'); $pass = $rcmail->config->get('password_plesk_pass'); $port = $rcmail->config->get('password_plesk_rpc_port'); $path = $rcmail->config->get('password_plesk_rpc_path'); // try to change password and return the status $result = $plesk->change_mailbox_password($_SESSION['username'], $newpass); //$plesk->destroy(); // create plesk-object $plesk = new plesk_rpc; $plesk->init($host, $port, $path, $user, $pass); if ($result) { return PASSWORD_SUCCESS; } // try to change password and return the status $result = $plesk->change_mailbox_password($_SESSION['username'], $newpass); //$plesk->destroy(); if ($result) { return PASSWORD_SUCCESS; } return PASSWORD_ERROR; } return PASSWORD_ERROR; } } @@ -73,162 +84,158 @@ * * Documentation of Plesk RPC-API: http://download1.parallels.com/Plesk/PP11/11.0/Doc/en-US/online/plesk-api-rpc/ * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> */ class plesk_rpc { class plesk_rpc { /** * init plesk-rpc via curl * * @param string $host plesk host * @param string $port plesk rpc port * @param string $path plesk rpc path * @param string $user plesk user * @param string $user plesk password * @returns void */ function init($host, $port, $path, $user, $pass) { $headers = array( sprintf("HTTP_AUTH_LOGIN: %s", $user), sprintf("HTTP_AUTH_PASSWD: %s", $pass), "Content-Type: text/xml" ); /** * init plesk-rpc via curl * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $host plesk host * @param string $port plesk rpc port * @param string $path plesk rpc path * @param string $user plesk user * @param string $user plesk password * @returns void */ function init($host, $port, $path, $user, $pass) { $headers = array( sprintf("HTTP_AUTH_LOGIN: %s", $user), sprintf("HTTP_AUTH_PASSWD: %s", $pass), "Content-Type: text/xml" ); $url = sprintf("https://%s:%s/%s", $host, $port, $path); $this->curl = curl_init(); curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT , 5); curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST , 0); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($this->curl, CURLOPT_HTTPHEADER , $headers); curl_setopt($this->curl, CURLOPT_URL , $url); } $url = sprintf("https://%s:%s/%s", $host, $port, $path); $this->curl = curl_init(); curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT , 5); curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST , 0); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($this->curl, CURLOPT_HTTPHEADER , $headers); curl_setopt($this->curl, CURLOPT_URL , $url); } /** * send a request to the plesk * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $packet XML-Packet to send to Plesk * @returns bool request was successfull or not */ function send_request($packet) { curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $packet); $retval = curl_exec($this->curl); /** * send a request to the plesk * * @param string $packet XML-Packet to send to Plesk * @returns bool request was successfull or not */ function send_request($packet) { curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $packet); $retval = curl_exec($this->curl); return $retval; } return $retval; } /** * close curl */ function destroy(){ curl_close($this->curl); } /** * close curl * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @returns void */ function destroy(){ curl_close($this->curl); } /** * Creates an Initial SimpleXML-Object for Plesk-RPC * * @returns object SimpleXML object */ function get_request_obj() { $request = new SimpleXMLElement("<packet></packet>"); $request->addAttribute("version", "1.6.3.0"); return $request; } /** * Creates an Initial SimpleXML-Object for Plesk-RPC * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @returns object SimpleXML object */ function get_request_obj(){ $request = new SimpleXMLElement("<packet></packet>"); $request->addAttribute("version", "1.6.3.0"); /** * Get all hosting-informations of a domain * * @param string $domain domain-name * @returns object SimpleXML object */ function domain_info($domain) { // build xml $request = $this->get_request_obj(); $site = $request->addChild("site"); $get = $site->addChild("get"); $filter = $get->addChild("filter"); return $request; } $filter->addChild("name", utf8_encode($domain)); $dataset = $get->addChild("dataset"); /** * Get all hosting-informations of a domain * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $domain domain-name * @returns object SimpleXML object */ function domain_info($domain){ // build xml $request = $this->get_request_obj(); $site = $request->addChild("site"); $get = $site->addChild("get"); $filter = $get->addChild("filter"); $dataset->addChild("hosting"); $packet = $request->asXML(); $filter->addChild("name", utf8_encode($domain)); $dataset = $get->addChild("dataset"); // send the request $res = $this->send_request($packet); $dataset->addChild("hosting"); $packet = $request->asXML(); // make it to simple-xml-object $xml = new SimpleXMLElement($res); // send the request $res = $this->send_request($packet); return $xml; } // make it to simple-xml-object $xml = new SimpleXMLElement($res); /** * Get psa-id of a domain * * @param string $domain domain-name * * @returns bool|int false if failed and integer if successed */ function get_domain_id($domain) { $xml = $this->domain_info($domain); $id = intval($xml->site->get->result->id); $id = (is_int($id)) ? $id : false; return $xml; } return $id; } /** * Get psa-id of a domain * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $domain domain-name * @returns bool|int false if failed and integer if successed */ function get_domain_id($domain){ $xml = $this->domain_info($domain); $id = intval($xml->site->get->result->id); $id = (is_int($id)) ? $id : false; return $id; } /** * Change Password of a mailbox * * @param string $mailbox full email-adress (user@domain.tld) * @param string $newpass new password of mailbox * * @returns bool */ function change_mailbox_password($mailbox, $newpass) { list($user, $domain) = explode("@", $mailbox); $domain_id = $this->get_domain_id($domain); // if domain cannot be resolved to an id, do not continue if (!$domain_id) { return false; } /** * Change Password of a mailbox * * @author Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch> * @param string $mailbox full email-adress (user@domain.tld) * @param string $newpass new password of mailbox * @returns bool */ function change_mailbox_password($mailbox, $newpass){ // build xml-packet $request = $this -> get_request_obj(); $mail = $request -> addChild("mail"); $update = $mail -> addChild("update"); $add = $update -> addChild("set"); $filter = $add -> addChild("filter"); $filter->addChild("site-id", $domain_id); list($user, $domain) = explode("@", $mailbox); $domain_id = $this->get_domain_id($domain); $mailname = $filter->addChild("mailname"); $mailname->addChild("name", $user); // if domain cannot be resolved to an id, do not continue if (!$domain_id) { return false; } $password = $mailname->addChild("password"); $password->addChild("value", $newpass); $password->addChild("type", "plain"); // build xml-packet $request = $this -> get_request_obj(); $mail = $request -> addChild("mail"); $update = $mail -> addChild("update"); $add = $update -> addChild("set"); $filter = $add -> addChild("filter"); $filter->addChild("site-id", $domain_id); $packet = $request->asXML(); $mailname = $filter->addChild("mailname"); $mailname->addChild("name", $user); // send the request to plesk $res = $this->send_request($packet); $xml = new SimpleXMLElement($res); $res = strval($xml->mail->update->set->result->status); $password = $mailname->addChild("password"); $password->addChild("value", $newpass); $password->addChild("type", "plain"); $packet = $request->asXML(); // send the request to plesk $res = $this->send_request($packet); $xml = new SimpleXMLElement($res); $res = strval($xml->mail->update->set->result->status); return $res == "ok"; } return $res == "ok"; } } plugins/password/drivers/poppassd.php
@@ -8,6 +8,20 @@ * @version 2.0 * @author Philip Weir * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_poppassd_password @@ -16,9 +30,9 @@ { if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) { return array('code' => $code, 'message' => $matches[1]); } else { return $code; } return $code; } function save($curpass, $passwd) @@ -40,14 +54,14 @@ else { $poppassd->writeLine("user ". $_SESSION['username']); $result = $poppassd->readLine(); if(!preg_match('/^[23]\d\d/', $result) ) { 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) ) { if (!preg_match('/^[23]\d\d/', $result) ) { $poppassd->disconnect(); return $this->format_error_result(PASSWORD_ERROR, $result); } @@ -55,10 +69,11 @@ $poppassd->writeLine("newpass ". $passwd); $result = $poppassd->readLine(); $poppassd->disconnect(); if (!preg_match('/^2\d\d/', $result)) if (!preg_match('/^2\d\d/', $result)) { return $this->format_error_result(PASSWORD_ERROR, $result); else return PASSWORD_SUCCESS; } return PASSWORD_SUCCESS; } } } plugins/password/drivers/pw_usermod.php
@@ -11,6 +11,21 @@ * @version 2.0 * @author Alex Cartwright <acartwright@mutinydesign.co.uk> * @author Adamson Huang <adomputer@gmail.com> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_pw_usermod_password plugins/password/drivers/sasl.php
@@ -14,6 +14,21 @@ * * @version 2.0 * @author Thomas Bruederli * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_sasl_password plugins/password/drivers/smb.php
@@ -19,6 +19,21 @@ * Configuration settings: * password_smb_host => samba host (default: localhost) * password_smb_cmd => smbpasswd binary (default: /usr/bin/smbpasswd) * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_smb_password @@ -56,5 +71,4 @@ return PASSWORD_ERROR; } } plugins/password/drivers/sql.php
@@ -8,6 +8,20 @@ * @version 2.0 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_sql_password @@ -16,8 +30,9 @@ { $rcmail = rcmail::get_instance(); if (!($sql = $rcmail->config->get('password_query'))) if (!($sql = $rcmail->config->get('password_query'))) { $sql = 'SELECT update_passwd(%c, %u)'; } if ($dsn = $rcmail->config->get('password_db_dsn')) { // #1486067: enable new_link option @@ -42,16 +57,14 @@ if (strpos($sql, '%c') !== FALSE) { $salt = ''; if (!($crypt_hash = $rcmail->config->get('password_crypt_hash'))) { if (!($crypt_hash = $rcmail->config->get('password_crypt_hash'))) { if (CRYPT_MD5) $crypt_hash = 'md5'; else if (CRYPT_STD_DES) $crypt_hash = 'des'; } switch ($crypt_hash) { switch ($crypt_hash) { case 'md5': $len = 8; $salt_hashindicator = '$1$'; @@ -128,8 +141,9 @@ return PASSWORD_ERROR; } if (!($hash_algo = strtolower($rcmail->config->get('password_hash_algorithm')))) if (!($hash_algo = strtolower($rcmail->config->get('password_hash_algorithm')))) { $hash_algo = 'sha1'; } $hash_passwd = hash($hash_algo, $passwd); $hash_curpass = hash($hash_algo, $curpass); @@ -185,9 +199,11 @@ if (!$db->is_error()) { if (strtolower(substr(trim($sql),0,6)) == 'select') { if ($db->fetch_array($res)) if ($db->fetch_array($res)) { return PASSWORD_SUCCESS; } else { } } else { // This is the good case: 1 row updated if ($db->affected_rows($res) == 1) return PASSWORD_SUCCESS; plugins/password/drivers/virtualmin.php
@@ -12,6 +12,21 @@ * * @version 3.0 * @author Martijn de Munnik * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_virtualmin_password plugins/password/drivers/vpopmaild.php
@@ -8,6 +8,20 @@ * @version 2.0 * @author Johannes Hessellund * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_vpopmaild_password @@ -22,7 +36,7 @@ $rcmail->config->get('password_vpopmaild_port'), null))) { return PASSWORD_CONNECT_ERROR; } $vpopmaild->setTimeout($rcmail->config->get('password_vpopmaild_timeout'),0); $result = $vpopmaild->readLine(); @@ -47,8 +61,9 @@ $vpopmaild->writeLine("quit"); $vpopmaild->disconnect(); if (!preg_match('/^\+OK/', $result)) if (!preg_match('/^\+OK/', $result)) { return PASSWORD_ERROR; } return PASSWORD_SUCCESS; } plugins/password/drivers/ximss.php
@@ -8,12 +8,26 @@ * password_ximss_host - Host name of Communigate server * password_ximss_port - XIMSS port on Communigate server * * * References: * http://www.communigate.com/WebGuide/XMLAPI.html * * @version 2.0 * @author Erik Meitner <erik wanderings.us> * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_ximss_password @@ -71,6 +85,5 @@ } //foreach return PASSWORD_SUCCESS; } } plugins/password/drivers/xmail.php
@@ -15,6 +15,20 @@ * $config['xmail_pass'] = 'YourXmailControlPass'; * $config['xmail_port'] = 6017; * * Copyright (C) 2005-2013, The Roundcube Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ class rcube_xmail_password @@ -103,4 +117,3 @@ socket_close($this->socket); } } program/lib/Roundcube/rcube_db.php
@@ -68,6 +68,7 @@ 'sybase' => 'mssql', 'dblib' => 'mssql', 'mysqli' => 'mysql', 'oci' => 'oracle', ); $driver = isset($driver_map[$driver]) ? $driver_map[$driver] : $driver;