replaced caching
This commit is contained in:
parent
a29c93f727
commit
839d57f71c
|
@ -56,6 +56,9 @@ class sambaSamAccount extends baseModule implements passwordService {
|
||||||
'B' => '1011', 'C' => '1100', 'D' => '1101', 'E' => '1110', 'F' => '1111');
|
'B' => '1011', 'C' => '1100', 'D' => '1101', 'E' => '1110', 'F' => '1111');
|
||||||
/** specifies if the password should be expired */
|
/** specifies if the password should be expired */
|
||||||
private $expirePassword = false;
|
private $expirePassword = false;
|
||||||
|
/* cache to reduce LDAP queries */
|
||||||
|
private $cachedHostList = null;
|
||||||
|
private $cachedGroupSIDList = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -821,15 +824,9 @@ class sambaSamAccount extends baseModule implements passwordService {
|
||||||
}
|
}
|
||||||
if (!$wrid) {
|
if (!$wrid) {
|
||||||
$gidnumber = $attrs['gidNumber'][0];
|
$gidnumber = $attrs['gidNumber'][0];
|
||||||
$groups = $_SESSION['cache']->get_cache(array('gidNumber', 'sambaSID'), 'sambaGroupMapping', 'group');
|
$groups = $this->getGroupSIDList();
|
||||||
$groupKeys = array_keys($groups);
|
if (isset($groups[$gidnumber]) && ($groups[$gidnumber] != '')) {
|
||||||
for ($i = 0; $i < sizeof($groupKeys); $i++) {
|
$this->attributes['sambaPrimaryGroupSID'][0] = $groups[$gidnumber];
|
||||||
if ($groups[$groupKeys[$i]]['gidNumber'][0] == $gidnumber) {
|
|
||||||
if (isset($groups[$groupKeys[$i]]['sambaSID'][0])) {
|
|
||||||
$this->attributes['sambaPrimaryGroupSID'][0] = $groups[$groupKeys[$i]]['sambaSID'][0];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1223,16 +1220,15 @@ class sambaSamAccount extends baseModule implements passwordService {
|
||||||
// Get list of all hosts.
|
// Get list of all hosts.
|
||||||
$userWorkstations = array();
|
$userWorkstations = array();
|
||||||
$availableUserWorkstations = array();
|
$availableUserWorkstations = array();
|
||||||
$result = $_SESSION['cache']->get_cache('uid', 'sambaSamAccount', 'host');
|
|
||||||
if (is_array($result)) {
|
$result = $this->getHostList();
|
||||||
foreach ($result as $host) $availableUserWorkstations[] = str_replace("$", '', $host[0]);
|
foreach ($result as $host) $availableUserWorkstations[] = str_replace("$", '', $host);
|
||||||
sort($availableUserWorkstations, SORT_STRING);
|
sort($availableUserWorkstations, SORT_STRING);
|
||||||
if (isset($this->attributes['sambaUserWorkstations'][0])) {
|
if (isset($this->attributes['sambaUserWorkstations'][0])) {
|
||||||
$result = str_replace(' ', '', $this->attributes['sambaUserWorkstations'][0]);
|
$wsAttr = str_replace(' ', '', $this->attributes['sambaUserWorkstations'][0]);
|
||||||
$userWorkstations = explode (',', $result);
|
$userWorkstations = explode (',', $wsAttr);
|
||||||
}
|
}
|
||||||
$availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations);
|
$availableUserWorkstations = array_delete($userWorkstations, $availableUserWorkstations);
|
||||||
}
|
|
||||||
|
|
||||||
$return->addElement(new htmlSubTitle(_("Allowed workstations")), true);
|
$return->addElement(new htmlSubTitle(_("Allowed workstations")), true);
|
||||||
$return->addElement(new htmlOutputText(_("Allowed workstations")));
|
$return->addElement(new htmlOutputText(_("Allowed workstations")));
|
||||||
|
@ -1737,15 +1733,14 @@ class sambaSamAccount extends baseModule implements passwordService {
|
||||||
// get list of Samba 3 domains
|
// get list of Samba 3 domains
|
||||||
$domains = search_domains();
|
$domains = search_domains();
|
||||||
// get list of Unix groups and their sambaSID + gidNumber
|
// get list of Unix groups and their sambaSID + gidNumber
|
||||||
$groups = $_SESSION['cache']->get_cache(array('cn', 'sambaSID', 'gidNumber'), 'posixGroup', 'group');
|
$groupList = searchLDAPByFilter('objectClass=posixGroup', array('cn', 'sambaSID', 'gidNumber'), array('group'));
|
||||||
$groups_k = array_keys($groups);
|
|
||||||
$groups_cn = array();
|
$groups_cn = array();
|
||||||
for ($i = 0; $i < sizeof($groups_k); $i++) {
|
for ($i = 0; $i < sizeof($groupList); $i++) {
|
||||||
if (isset($groups[$groups_k[$i]]['sambaSID'][0])) {
|
if (isset($groupList[$i]['sambasid'][0])) {
|
||||||
$groups_cn[$groups[$groups_k[$i]]['cn'][0]]['SID'] = $groups[$groups_k[$i]]['sambaSID'][0];
|
$groups_cn[$groupList[$i]['cn'][0]]['SID'] = $groupList[$i]['sambasid'][0];
|
||||||
}
|
}
|
||||||
if (isset($groups[$groups_k[$i]]['gidNumber'][0])) {
|
if (isset($groupList[$i]['gidnumber'][0])) {
|
||||||
$groups_cn[$groups[$groups_k[$i]]['cn'][0]]['gid'] = $groups[$groups_k[$i]]['gidNumber'][0];
|
$groups_cn[$groupList[$i]['cn'][0]]['gid'] = $groupList[$i]['gidnumber'][0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($this->get_scope() == 'user') {
|
if ($this->get_scope() == 'user') {
|
||||||
|
@ -2192,6 +2187,41 @@ class sambaSamAccount extends baseModule implements passwordService {
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of existing hosts.
|
||||||
|
*
|
||||||
|
* @return array host names
|
||||||
|
*/
|
||||||
|
private function getHostList() {
|
||||||
|
if ($this->cachedHostList != null) {
|
||||||
|
return $this->cachedHostList;
|
||||||
|
}
|
||||||
|
$this->cachedHostList = searchLDAPByAttribute('uid', '*', 'sambaSamAccount', array('uid'), array('host'));
|
||||||
|
for ($i = 0; $i < sizeof($this->cachedHostList); $i++) {
|
||||||
|
$this->cachedHostList[$i] = $this->cachedHostList[$i]['uid'][0];
|
||||||
|
}
|
||||||
|
return $this->cachedHostList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of existing hosts.
|
||||||
|
*
|
||||||
|
* @return array host names
|
||||||
|
*/
|
||||||
|
private function getGroupSIDList() {
|
||||||
|
if ($this->cachedGroupSIDList != null) {
|
||||||
|
return $this->cachedGroupSIDList;
|
||||||
|
}
|
||||||
|
$this->cachedGroupSIDList = array();
|
||||||
|
$result = searchLDAPByAttribute('sambaSID', '*', 'sambaGroupMapping', array('gidNumber', 'sambaSID'), array('group'));
|
||||||
|
for ($i = 0; $i < sizeof($result); $i++) {
|
||||||
|
if (isset($result[$i]['gidnumber'][0])) {
|
||||||
|
$this->cachedGroupSIDList[$result[$i]['gidnumber'][0]] = $result[$i]['sambasid'][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->cachedGroupSIDList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue