Roundcube password change plugin

From MS Computech
Revision as of 11:05, 29 August 2014 by Snifer (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

How to enable password change plugin roundcube mail (Zpanel Centos6.5)--Snifer 11:04, 29 August 2014 (ICT)


1 Create file in /etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php

nano /etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php

2 Replace SQL Authentication in config bellow.

/**
 * ZPanelX SQL Password Driver
 *
 * Driver for passwords stored in SQL database
 *
 * @version 1.1
 * @author 
 *
 */


class rcube_zpmail_password
{
    function save($curpass, $passwd)
    {
        $rcmail = rcmail::get_instance();

        $local_part  = $rcmail->user->get_username('local');
        $domain_part = $rcmail->user->get_username('domain');
        $username    = $_SESSION['username'];
        $host        = $_SESSION['imap_host'];
        // convert domains to/from punnycode
        if ($rcmail->config->get('password_idn_ascii')) {
            $domain_part = rcube_idn_to_ascii($domain_part);
            $username    = rcube_idn_to_ascii($username);
            $host        = rcube_idn_to_ascii($host);
        }
        else {
            $domain_part = rcube_idn_to_utf8($domain_part);
            $username    = rcube_idn_to_utf8($username);
            $host        = rcube_idn_to_utf8($host);
        }

        $sql = 'SELECT password FROM mailbox WHERE username="'.$username.'"';

        $host = "mysqlhost"; // Usually localhost
        $dbName = "zpanel_postfix"; // your ZPanelX postfix database. Default value here
        $dbUser = "databaseusername";
        $dbPass = "databasepassword";


        try {
            $db = new PDO("mysql:host={$host};dbname={$dbName}", $dbUser, $dbPass);
            $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
        } catch (PDOException $e) {
            //echo 'Database error: '. $e->getMessage() . '
';
            return PASSWORD_CONNECT_ERROR;
        }

        $res = $db->query($sql);
        $result = $res->fetch();$pass = $result["password"];
        $hash = str_replace("{PLAIN-MD5}", "", $pass);
        if (md5($curpass) != $hash)
        {
            // echo "Password mismatch error";
            return PASSWORD_ERROR;
        }

        $pass = "{PLAIN-MD5}".md5($passwd);
        $sql = 'UPDATE mailbox SET password="'.$pass.'" WHERE username="'.$username.'"';
        $res = $db->query($sql);
        if ($res) {
                return PASSWORD_SUCCESS;
        }
        return PASSWORD_ERROR;
    }
}

3 copy file /etc/zpanel/panel/etc/apps/webmail/plugins/password/config.inc.php.dist to config.inc.php

cp config.inc.php.dist config.inc.php

4 Change the config file.

$rcmail_config['password_driver'] = 'sql';

$rcmail_config['password_query'] = 'UPDATE zpanel_postfix.mailbox SET password=CONCAT(\'{PLAIN-MD5}\',MD5(%p)) WHERE username=%u AND password=CONCAT(\'{PLAIN-MD5}\',MD5(%o)) LIMIT 1';

5 Enable password plugin /etc/zpanel/panel/etc/apps/webmail/config/main.inc.php

$rcmail_config['plugins'] = array('password');