* @copyright 2004-2010 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package plugins * @subpackage change_password */ /** * Config vars */ global $merak_url, $merak_selfpage, $merak_action; // The Merak Server $merak_url = "http://localhost:32000/"; $merak_selfpage = "self.html"; $merak_action = "self_edit"; // get overrides from config. if ( isset($cpw_merak) && is_array($cpw_merak) && !empty($cpw_merak) ) { foreach ( $cpw_merak as $key => $value ) { if ( isset(${'merak_'.$key}) ) ${'merak_'.$key} = $value; } } global $squirrelmail_plugin_hooks; $squirrelmail_plugin_hooks['change_password_dochange']['merak'] = 'cpw_merak_dochange'; $squirrelmail_plugin_hooks['change_password_init']['merak'] = 'cpw_merak_init'; /** * Check if php install has all required extensions. */ function cpw_merak_init() { global $oTemplate; if (!function_exists('curl_init')) { // user_error('Curl module NOT available!', E_USER_ERROR); error_box(_("PHP Curl extension is NOT available! Unable to change password!")); // close html and stop script execution $oTemplate->display('footer.tpl'); exit(); } } /** * This is the function that is specific to your backend. It takes * the current password (as supplied by the user) and the desired * new password. It will return an array of messages. If everything * was successful, the array will be empty. Else, it will contain * the errormessage(s). * Constants to be used for these messages: * CPW_CURRENT_NOMATCH -> "Your current password is not correct." * CPW_INVALID_PW -> "Your new password contains invalid characters." * * @param array data The username/currentpw/newpw data. * @return array Array of error messages. */ function cpw_merak_dochange($data) { // unfortunately, we can only pass one parameter to a hook function, // so we have to pass it as an array. $username = $data['username']; $curpw = $data['curpw']; $newpw = $data['newpw']; $msgs = array(); global $merak_url, $merak_selfpage, $merak_action; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $merak_url . $merak_selfpage); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_TIMEOUT, 10); curl_setopt ($ch, CURLOPT_USERPWD, "$username:$curpw"); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec ($ch); curl_close ($ch); if (strpos($result, "401 Access denied") <> 0) { array_push($msgs, _("Cannot change password! (Is user 'Self Configurable User' ?) (401)")); return $msgs; } // Get URL from: