diff --git a/lam/lib/account.inc b/lam/lib/account.inc index fd89d909..0716f806 100644 --- a/lam/lib/account.inc +++ b/lam/lib/account.inc @@ -104,10 +104,12 @@ function initvars($type=false,$DN=false) { // This function registers all needes $_SESSION['account_old'] = $_SESSION['account']; $_SESSION['account']->unix_password=''; $_SESSION['account']->smb_password=''; + $_SESSION['account']->general_dn = substr($_SESSION['account']->general_dn, strpos($_SESSION['account']->general_dn, ',')+1); break; case 'group': $_SESSION['account'] = loadgroup($DN); $_SESSION['account_old'] = $_SESSION['account']; + $_SESSION['account']->general_dn = substr($_SESSION['account']->general_dn, strpos($_SESSION['account']->general_dn, ',')+1); if (!session_is_registered('final_changegids')) session_register('final_changegids'); else $_SESSION['final_changegids'] = ''; break; @@ -116,6 +118,7 @@ function initvars($type=false,$DN=false) { // This function registers all needes $_SESSION['account_old'] = $_SESSION['account']; $_SESSION['account']->unix_password=''; $_SESSION['account']->smb_password=''; + $_SESSION['account']->general_dn = substr($_SESSION['account']->general_dn, strpos($_SESSION['account']->general_dn, ',')+1); break; } } @@ -372,7 +375,7 @@ function checksamba($values, $type) { // This function checks all samba account } function checkquota($values) { // This function checks all quota paramters - $return = new account(); + $return = $values; $i=0; while ($values->quota[$i][0]) { if (!$values->quota[$i][2]) $return->quota[$i][2] = 0; @@ -651,7 +654,7 @@ function loaduser($dn) { // Will load all needed values from an existing account $return = new account(); $result = ldap_search($_SESSION['ldap']->server(), $dn, "objectclass=PosixAccount"); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); - $return->general_dn = (ldap_get_dn($_SESSION['ldap']->server(), $entry)); + $return->general_dn = ldap_get_dn($_SESSION['ldap']->server(), $entry); $attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry); if ($attr['uid'][0]) $return->general_username = $attr['uid'][0]; if ($attr['uidNumber'][0]) $return->general_uidNumber = $attr['uidNumber'][0]; @@ -1143,15 +1146,21 @@ function modifyuser($values,$values_old) { // Will modify the LDAP-Account if ($values->general_surname!=$values_old->general_surname) $attr['sn'] = $values->general_surname; if ($attr_rem) { - $success = ldap_mod_del($_SESSION['ldap']->server(),$values->general_dn, $attr_rem); + $success = ldap_mod_del($_SESSION['ldap']->server(),$values_old->general_dn, $attr_rem); if (!$success) return 5; } - if ($values->general_username == $values_old->general_username) // Username hasn't changed + if ($values->general_dn == $values_old->general_dn) // Username hasn't changed $success = ldap_modify($_SESSION['ldap']->server(),$values->general_dn, $attr); else { - $result = ldap_search($_SESSION['ldap']->server(), $dn, "objectclass=PosixAccount"); + $result = ldap_search($_SESSION['ldap']->server(), $values_old->general_dn, "objectclass=PosixAccount"); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); $attr_old = ldap_get_attributes($_SESSION['ldap']->server(), $entry); + // remove "count" from array + unset($attr_old['count']); + for ($i=0; $i < sizeof($attr_old); $i++) unset($attr_old[$i]); + $keys = array_keys($attr_old); + for ($i=0; $i < sizeof($keys); $i++) + unset($attr_old[$keys[$i]]['count']); $success = ldap_add($_SESSION['ldap']->server(),$values->general_dn, $attr_old); if ($success) $success = ldap_delete($_SESSION['ldap']->server(),$values_old->general_dn); if ($success) $success = ldap_mod_replace($_SESSION['ldap']->server(),$values->general_dn, $attr); @@ -1422,15 +1431,21 @@ function modifyhost($values,$values_old) { // Will modify the LDAP-Account if (($date != $date_old) && !$date) $attr_rem['shadowExpire'] = $date_old ; // shadowAccount_may if ($attr_rem) { - $success = ldap_mod_del($_SESSION['ldap']->server(),$values->general_dn, $attr_rem); + $success = ldap_mod_del($_SESSION['ldap']->server(),$values_old->general_dn, $attr_rem); if (!$success) return 5; } - if ($values->general_username == $values_old->general_username) // Hostname hasn't changed + if ($values->general_dn == $values_old->general_dn) // Hostname hasn't changed $success = ldap_modify($_SESSION['ldap']->server(),$values->general_dn, $attr); else { $result = ldap_search($_SESSION['ldap']->server(), $dn, "objectclass=PosixAccount"); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); $attr_old = ldap_get_attributes($_SESSION['ldap']->server(), $entry); + // remove "count" from array + unset($attr_old['count']); + for ($i=0; $i < sizeof($attr_old); $i++) unset($attr_old[$i]); + $keys = array_keys($attr_old); + for ($i=0; $i < sizeof($keys); $i++) + unset($attr_old[$keys[$i]]['count']); $success = ldap_add($_SESSION['ldap']->server(),$values->general_dn, $attr_old); if ($success) $success = ldap_delete($_SESSION['ldap']->server(),$values_old->general_dn); if ($success) $success = ldap_mod_replace($_SESSION['ldap']->server(),$values->general_dn, $attr); @@ -1522,12 +1537,18 @@ function modifygroup($values,$values_old) { // Will modify the LDAP-Group if ($values->general_uidNumber != $values_old->general_uidNumber) $attr['gidNumber'] = $values->general_uidNumber; if ($values->general_gecos != $values_old->general_gecos) $attr['description'] = $values->general_gecos; if ($values->general_memeberUid != $values_old->general_memberUid) $attr['memberUid'] = $values->general_memberUid; - if ($values->general_username == $values_old->general_username) // Groupname hasn't changed + if ($values->general_dn == $values_old->general_dn) // Groupname hasn't changed $success = ldap_mod_replace($_SESSION['ldap']->server(),$values->general_dn, $attr); else { $result = ldap_search($_SESSION['ldap']->server(), $dn, "objectclass=PosixGroup"); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); $attr_old = ldap_get_attributes($_SESSION['ldap']->server(), $entry); + // remove "count" from array + unset($attr_old['count']); + for ($i=0; $i < sizeof($attr_old); $i++) unset($attr_old[$i]); + $keys = array_keys($attr_old); + for ($i=0; $i < sizeof($keys); $i++) + unset($attr_old[$keys[$i]]['count']); $success = ldap_add($_SESSION['ldap']->server(),$values->general_dn, $attr_old); if ($success) ldap_delete($_SESSION['ldap']->server(),$values_old->general_dn); if ($success) $success = ldap_mod_replace($_SESSION['ldap']->server(),$values->general_dn, $attr); diff --git a/lam/lib/lamdaemon.pl b/lam/lib/lamdaemon.pl index 9560e448..4c646905 100755 --- a/lam/lib/lamdaemon.pl +++ b/lam/lib/lamdaemon.pl @@ -148,7 +148,7 @@ if ($found==true) { $i=0; ($<, $>) = ($>, $<); # Get root privileges while ($quota_usr[$i][0]) { - $dev = Quota::getqcarg($quota_usr[$i][0]); + $dev = Quota::getqcarg($quota_usr[$i][1]); print "$user[2]\n"; $return = Quota::setqlim($dev,$user[2],0,0,0,0,1,$group); $i++; @@ -160,7 +160,7 @@ if ($found==true) { $i=0; ($<, $>) = ($>, $<); # Get root privileges while ($quota_usr[$i][0]) { - $dev = Quota::getqcarg($quota[$i][0]); + $dev = Quota::getqcarg($quota[$i][1]); $return = Quota::setqlim($dev,$user[2],$quota[$i][1],$quota[$i][2],$quota[$i][3],$quota[$i][4],1,$group); $i++; } @@ -172,9 +172,12 @@ if ($found==true) { ($<, $>) = ($>, $<); # Get root privileges while ($quota_usr[$i][0]) { if ($vals[2]ne'+') { - $dev = Quota::getqcarg($quota_usr[$i][0]); + $dev = Quota::getqcarg($quota_usr[$i][1]); @temp = Quota::query($dev,$user[2],$group); - $return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return"; + if ($temp[0]) { + $return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return"; + } + else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; } } else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; } $i++; diff --git a/lam/templates/account.php b/lam/templates/account.php index cfa8f32d..382dd899 100644 --- a/lam/templates/account.php +++ b/lam/templates/account.php @@ -309,6 +309,7 @@ if ($select_local != 'pdf') { "; } + switch ($select_local) { // backmain = back to lists // load = load profile @@ -468,7 +469,8 @@ switch ($select_local) { // Select which part of page will be loaded echo _('Suffix'); echo ''; foreach ($_SESSION['ldap']->search_units($_SESSION['config']->get_GroupSuffix()) as $suffix) { if ($_SESSION['account']->general_dn) { - if ($_SESSION['account']->general_dn == $suffix) echo ''; + if ($_SESSION['account']->general_dn == $suffix) + echo ''; else echo ''; } else echo ''; @@ -568,7 +571,8 @@ switch ($select_local) { // Select which part of page will be loaded echo _('Suffix'); echo '