diff --git a/lam/lib/modules/windowsHost.inc b/lam/lib/modules/windowsHost.inc index b9b53a73..d9e7338a 100644 --- a/lam/lib/modules/windowsHost.inc +++ b/lam/lib/modules/windowsHost.inc @@ -176,6 +176,9 @@ class windowsHost extends baseModule { if (isset($_POST['form_subpage_' . get_class($this) . '_attributes_removeManagedBy'])) { unset($this->attributes['managedBy']); } + if ($this->getAccountContainer()->isNewAccount) { + $this->attributes['userAccountControl'][0] = 4128; // machine trust account, no password required + } return $return; } @@ -245,12 +248,12 @@ class windowsHost extends baseModule { $errors = array(); for ($i = 0; $i < sizeof($rawAccounts); $i++) { // add object class - if (!in_array('group', $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = 'group'; + if (!in_array('computer', $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = 'computer'; // cn + sAMAccountName if ($rawAccounts[$i][$ids['windowsHost_name']] != "") { - if (get_preg($rawAccounts[$i][$ids['windowsHost_name']], 'groupname')) { + if (get_preg($rawAccounts[$i][$ids['windowsHost_name']], 'hostname')) { $partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['windowsHost_name']]; - $partialAccounts[$i]['sAMAccountName'] = $rawAccounts[$i][$ids['windowsHost_name']]; + $partialAccounts[$i]['sAMAccountName'] = $rawAccounts[$i][$ids['windowsHost_name']] . '$'; } else { $errMsg = $this->messages['cn'][1]; @@ -262,65 +265,16 @@ class windowsHost extends baseModule { if ($rawAccounts[$i][$ids['windowsHost_description']] != "") { $partialAccounts[$i]['description'] = $rawAccounts[$i][$ids['windowsHost_description']]; } - // notes - if ($rawAccounts[$i][$ids['windowsHost_notes']] != "") { - $partialAccounts[$i]['info'] = $rawAccounts[$i][$ids['windowsHost_notes']]; + // location + if ($rawAccounts[$i][$ids['windowsHost_location']] != "") { + $partialAccounts[$i]['location'] = $rawAccounts[$i][$ids['windowsHost_location']]; } - // email - if ($rawAccounts[$i][$ids['windowsHost_mail']] != "") { - if (get_preg($rawAccounts[$i][$ids['windowsHost_mail']], 'email')) { - $partialAccounts[$i]['mail'] = $rawAccounts[$i][$ids['windowsHost_mail']]; - } - else { - $errMsg = $this->messages['mail'][1]; - array_push($errMsg, array($i)); - $errors[] = $errMsg; - } - } - // add members - if ($rawAccounts[$i][$ids['windowsHost_members']] != "") { - $partialAccounts[$i]['member'] = explode(";", $rawAccounts[$i][$ids['windowsHost_members']]); - } - // group scope - if ($rawAccounts[$i][$ids['windowsHost_scope']] != "") { - if (in_array($rawAccounts[$i][$ids['windowsHost_scope']], $this->groupScopes)) { - switch ($rawAccounts[$i][$ids['windowsHost_scope']]) { - case windowsHost::SCOPE_DOMAIN_LOCAL: - $partialAccounts[$i]['groupType'] = 4; - break; - case windowsHost::SCOPE_GLOBAL: - $partialAccounts[$i]['groupType'] = 2; - break; - case windowsHost::SCOPE_UNIVERSAL: - $partialAccounts[$i]['groupType'] = 8; - break; - } - } - else { - $errMsg = $this->messages['groupScope'][0]; - array_push($errMsg, array($i)); - $errors[] = $errMsg; - } - } - else { - $partialAccounts[$i]['groupType'] = 2; - } - // group type - if ($rawAccounts[$i][$ids['windowsHost_type']] != "") { - if (in_array($rawAccounts[$i][$ids['windowsHost_type']], $this->groupTypes)) { - if ($rawAccounts[$i][$ids['windowsHost_type']] == windowsHost::TYPE_SECURITY) { - $partialAccounts[$i]['groupType'] = $partialAccounts[$i]['groupType'] - 2147483648; - } - } - else { - $errMsg = $this->messages['groupType'][0]; - array_push($errMsg, array($i)); - $errors[] = $errMsg; - } - } - else { - $partialAccounts[$i]['groupType'] = $partialAccounts[$i]['groupType'] - 2147483648; + // managed by + if ($rawAccounts[$i][$ids['windowsHost_managedBy']] != "") { + $partialAccounts[$i]['managedBy'] = $rawAccounts[$i][$ids['windowsHost_managedBy']]; } + // machine trust account, no password required + $partialAccounts[$i]['userAccountControl'][0] = 4128; } return $errors; } @@ -332,45 +286,12 @@ class windowsHost extends baseModule { $return = array(); $this->addSimplePDFField($return, 'cn', _('Group name')); $this->addSimplePDFField($return, 'description', _('Description')); - $this->addSimplePDFField($return, 'info', _('Notes')); - $this->addSimplePDFField($return, 'mail', _('Email address')); - // group type - $groupType = windowsHost::TYPE_SECURITY; - $groupScope = windowsHost::SCOPE_GLOBAL; - if (isset($this->attributes['groupType'][0])) { - if ($this->attributes['groupType'][0] & 2) { - $groupScope = windowsHost::SCOPE_GLOBAL; - } - elseif ($this->attributes['groupType'][0] & 4) { - $groupScope = windowsHost::SCOPE_DOMAIN_LOCAL; - } - elseif ($this->attributes['groupType'][0] & 8) { - $groupScope = windowsHost::SCOPE_UNIVERSAL; - } - if ($this->attributes['groupType'][0] & 0x80000000) { - $groupType = windowsHost::TYPE_SECURITY; - } - else { - $groupType = windowsHost::TYPE_DISTRIBUTION; - } - } - $groupTypeLabels = array_flip($this->groupTypes); - $groupType = $groupTypeLabels[$groupType]; - $groupScopeLabels = array_flip($this->groupScopes); - $groupScope = $groupScopeLabels[$groupScope]; - $return[get_class($this) . '_groupScope'] = array('' . _('Group scope') . '' . $groupScope . ''); - $return[get_class($this) . '_groupType'] = array('' . _('Group type') . '' . $groupType . ''); - // members - if (sizeof($this->attributes['member']) > 0) { - $memberList = array(); - if (isset($this->attributes['member']) && is_array($this->attributes['member'])) { - $memberList = $this->attributes['member']; - } - usort($memberList, 'compareDN'); - $return[get_class($this) . '_member'][0] = '' . _('Members') . '' . $memberList[0] . ''; - for ($i = 1; $i < sizeof($memberList); $i++) { - $return[get_class($this) . '_member'][] = '' . $memberList[$i] . ''; - } + $this->addSimplePDFField($return, 'location', _('Location')); + // managed by + $managedBy = ''; + if (isset($this->attributes['managedBy'][0])) { + $managedBy = getAbstractDN($this->attributes['managedBy'][0]); + $return[get_class($this) . '_managedBy'] = array('' . _('Managed by') . '' . $managedBy . ''); } return $return; }