From 2e39b60f5b815c58b494d2ea88f66683c9c9884e Mon Sep 17 00:00:00 2001 From: Linnea Skogtvedt Date: Tue, 20 Dec 2016 15:15:15 +0100 Subject: [PATCH] Update sambaNTPassword for users who have a sambaSamAccount objectclass --- php/class.passwdmodule.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/php/class.passwdmodule.php b/php/class.passwdmodule.php index f2f4a02..b395505 100644 --- a/php/class.passwdmodule.php +++ b/php/class.passwdmodule.php @@ -114,12 +114,12 @@ class PasswdModule extends Module $ldapconn, // connection-identify PLUGIN_PASSWD_LDAP_BASEDN, // basedn 'uid=' . $uid, // search filter - array('dn') // needed attributes. we need the dn + array('dn', 'objectClass') // needed attributes. we need dn and objectclass ); if ($userdn) { - $userdn = ldap_get_entries($ldapconn, $userdn); - $userdn = $userdn[0]['dn']; + $entries = ldap_get_entries($ldapconn, $userdn); + $userdn = $entries[0]['dn']; // bind to ldap directory // login with current password if that fails then current password is wrong @@ -132,6 +132,10 @@ class PasswdModule extends Module if ($this->checkPasswordStrenth($passwd)) { $password_hash = $this->sshaEncode($passwd); $entry = array('userPassword' => $password_hash); + if (in_array('sambaSamAccount', $entries[0]['objectclass'])) { + $nthash = strtoupper(bin2hex(mhash(MHASH_MD4, iconv("UTF-8","UTF-16LE", $passwd)))); + $entry['sambaNTPassword'] = $nthash; + } ldap_modify($ldapconn, $userdn, $entry); if (ldap_errno($ldapconn) === 0) { // password changed successfully