Aleksander Machniak
2014-09-08 4baf96a4ca1621a267c10c67e84e80e6bf72dbfd
Added license headers to driver files, CS fixes
22 files modified
421 ■■■■ changed files
plugins/password/drivers/chpasswd.php 17 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/cpanel.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/dbmail.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/directadmin.php 14 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/domainfactory.php 29 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/expect.php 17 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/gearman.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/hmail.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/ldap.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/ldap_simple.php 17 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/pam.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/plesk.php 71 ●●●● patch | view | raw | blame | history
plugins/password/drivers/poppassd.php 23 ●●●● patch | view | raw | blame | history
plugins/password/drivers/pw_usermod.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/sasl.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/smb.php 16 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/sql.php 32 ●●●● patch | view | raw | blame | history
plugins/password/drivers/virtualmin.php 15 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/vpopmaild.php 17 ●●●●● patch | view | raw | blame | history
plugins/password/drivers/ximss.php 17 ●●●● patch | view | raw | blame | history
plugins/password/drivers/xmail.php 15 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_db.php 1 ●●●● patch | view | raw | blame | history
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,6 +10,20 @@
 * @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
@@ -23,7 +37,6 @@
        }
        if ($ch = curl_init()) {
            // initial login
            curl_setopt_array($ch, array(
                CURLOPT_RETURNTRANSFER => true,
@@ -53,7 +66,6 @@
                $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;
@@ -70,17 +82,16 @@
                            return array('code' => PASSWORD_ERROR, 'message' => $error_message);
                        }
                    }
                } else {
                }
                else {
                    return PASSWORD_CONNECT_ERROR;
                }
            } else {
            }
            else {
                return PASSWORD_CONNECT_ERROR;
            }
        } else {
        }
        else {
            return PASSWORD_CONNECT_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.
@@ -23,6 +23,21 @@
 *   see the password-expect file for details. This is probably
 *   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,4 +1,5 @@
<?php
/**
 * Roundcube Password Driver for Plesk-RPC.
 *
@@ -7,7 +8,6 @@
 *
 * @author        Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch>
 * @copyright     Adfinis SyGroup AG, 2014
 * @license       GNU GPL v3
 *
 * Config needed:
 * $config['password_plesk_host']     = '10.0.0.5';
@@ -16,6 +16,18 @@
 * $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/.
 */
/**
@@ -25,20 +37,20 @@
 *
 * @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       PASSWORD_SUCCESS|PASSWORD_ERROR
     * @param string $curpass Current password
     * @param string $newpass New password
     * @returns int PASSWORD_SUCCESS|PASSWORD_ERROR
     */
    function save($currpass, $newpass) {
    function save($currpass, $newpass)\
    {
        // get config
        $rcmail    = rcmail::get_instance();
        $host    = $rcmail->config->get('password_plesk_host');
@@ -61,7 +73,6 @@
        return PASSWORD_ERROR;
    }
}
@@ -75,12 +86,11 @@
 *
 * @author        Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch>
 */
class plesk_rpc {
class plesk_rpc
{
    /**
     * 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
@@ -88,14 +98,17 @@
     * @param         string $user plesk password
     * @returns       void
     */
    function init($host, $port, $path, $user, $pass) {
    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);
@@ -103,15 +116,14 @@
        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) {
    function send_request($packet)
    {
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $packet);
        $retval = curl_exec($this->curl);
@@ -119,25 +131,20 @@
        return $retval;
    }
    /**
     * 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
     *
     * @author        Cyrill von Wattenwyl <cyrill.vonwattenwyl@adfinis-sygroup.ch>
     * @returns       object SimpleXML object
     */
    function get_request_obj(){
    function get_request_obj()
    {
        $request = new SimpleXMLElement("<packet></packet>");
        $request->addAttribute("version", "1.6.3.0");
@@ -147,11 +154,11 @@
    /**
     * 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){
    function domain_info($domain)
    {
        // build xml
        $request = $this->get_request_obj();
        $site    = $request->addChild("site");
@@ -176,28 +183,29 @@
    /**
     * 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){
    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
     *
     * @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){
    function change_mailbox_password($mailbox, $newpass)
    {
        list($user, $domain) = explode("@", $mailbox);
        $domain_id = $this->get_domain_id($domain);
@@ -231,4 +239,3 @@
        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)
@@ -55,9 +69,10 @@
                        $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;
                    }
                }
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
@@ -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;