Update postfixadmin-change-password plugin.
https://github.com/RainLoop/rainloop-webmail/tree/master/plugins/postfixadmin-change-password
This commit is contained in:
		| @@ -0,0 +1,139 @@ | ||||
| <?php | ||||
|  | ||||
| // md5crypt | ||||
| // Action: Creates MD5 encrypted password | ||||
| // Call: md5crypt (string cleartextpassword) | ||||
|  | ||||
| function md5crypt($pw, $salt = "", $magic = "") | ||||
| { | ||||
|     $MAGIC = "$1$"; | ||||
|  | ||||
|     if ($magic == "") | ||||
| 	{ | ||||
| 		$magic = $MAGIC; | ||||
| 	} | ||||
|  | ||||
|     if ($salt == "") | ||||
| 	{ | ||||
| 		$salt = create_salt(); | ||||
| 	} | ||||
|  | ||||
|     $slist = explode("$", $salt); | ||||
|     if (isset($slist[0]) && $slist[0] == "1") | ||||
| 	{ | ||||
| 		$salt = $slist[1]; | ||||
| 	} | ||||
|  | ||||
|     $salt = substr($salt, 0, 8); | ||||
|     $ctx = $pw.$magic.$salt; | ||||
|     $final = hex2bin(md5($pw.$salt.$pw)); | ||||
|  | ||||
|     for ($i = strlen($pw); $i > 0; $i -= 16) | ||||
|     { | ||||
|         if ($i > 16) | ||||
|         { | ||||
|             $ctx .= substr($final,0,16); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             $ctx .= substr($final,0,$i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     $i = strlen($pw); | ||||
|  | ||||
|     while ($i > 0) | ||||
|     { | ||||
|         if ($i & 1) | ||||
| 		{ | ||||
| 			$ctx .= chr(0); | ||||
| 		} | ||||
|         else | ||||
| 		{ | ||||
| 			$ctx .= $pw[0]; | ||||
| 		} | ||||
| 		 | ||||
|         $i = $i >> 1; | ||||
|     } | ||||
|  | ||||
|     $final = hex2bin(md5($ctx)); | ||||
|  | ||||
|     for ($i=0; $i<1000; $i++) | ||||
|     { | ||||
|         $ctx1 = ""; | ||||
|         if ($i & 1) | ||||
|         { | ||||
|             $ctx1 .= $pw; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             $ctx1 .= substr($final,0,16); | ||||
|         } | ||||
|         if ($i % 3) | ||||
| 		{ | ||||
| 			$ctx1 .= $salt; | ||||
| 		} | ||||
|         if ($i % 7) | ||||
| 		{ | ||||
| 			$ctx1 .= $pw; | ||||
| 		} | ||||
|         if ($i & 1) | ||||
|         { | ||||
|             $ctx1 .= substr($final, 0, 16); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             $ctx1 .= $pw; | ||||
|         } | ||||
|  | ||||
|         $final = hex2bin(md5($ctx1)); | ||||
|     } | ||||
|  | ||||
|     $passwd = ""; | ||||
|     $passwd .= to64(((ord($final[0]) << 16) | (ord($final[6]) << 8) | (ord($final[12]))), 4); | ||||
|     $passwd .= to64(((ord($final[1]) << 16) | (ord($final[7]) << 8) | (ord($final[13]))), 4); | ||||
|     $passwd .= to64(((ord($final[2]) << 16) | (ord($final[8]) << 8) | (ord($final[14]))), 4); | ||||
|     $passwd .= to64(((ord($final[3]) << 16) | (ord($final[9]) << 8) | (ord($final[15]))), 4); | ||||
|     $passwd .= to64(((ord($final[4]) << 16) | (ord($final[10]) << 8) | (ord($final[5]))), 4); | ||||
|     $passwd .= to64(ord($final[11]), 2); | ||||
|  | ||||
|     return $magic.$salt.'$'.$passwd; | ||||
| } | ||||
|  | ||||
| function create_salt() | ||||
| { | ||||
|     srand((double) microtime() * 1000000); | ||||
|     return substr(md5(rand(0,9999999)), 0, 8); | ||||
| } | ||||
|  | ||||
| // PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin | ||||
| if (!function_exists('hex2bin')) | ||||
| { | ||||
| 	function hex2bin($str) | ||||
| 	{ | ||||
| 		$len = strlen($str); | ||||
| 		$nstr = ""; | ||||
| 		for ($i = 0; $i < $len; $i += 2) | ||||
| 		{ | ||||
| 			$num = sscanf(substr($str, $i, 2), "%x"); | ||||
| 			$nstr .= chr($num[0]); | ||||
| 		} | ||||
|  | ||||
| 		return $nstr; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| function to64($v, $n) | ||||
| { | ||||
|     $ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; | ||||
|     $ret = ""; | ||||
|  | ||||
|     while (($n - 1) >= 0) | ||||
|     { | ||||
|         $n--; | ||||
|         $ret .= $ITOA64[$v & 0x3f]; | ||||
|         $v = $v >> 6; | ||||
|     } | ||||
|  | ||||
|     return $ret; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Rafael Cossovan
					Rafael Cossovan