Roundcube password change plugin
From MS Computech
How to enable password change plugin roundcube mail (Zpanel)--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');