From bb9f1f0eff63bcb7491762eb960e5212677bc781 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 17 Nov 2018 20:40:09 +0100 Subject: [PATCH] Windows group sync --- lam/HISTORY | 4 +- lam/docs/manual-sources/chapter-modules.xml | 8 +- .../images/mod_windowsUser5.png | Bin 20214 -> 97376 bytes lam/lib/modules/posixAccount.inc | 28 ++- lam/lib/modules/windowsUser.inc | 183 +++++++++++++++++- 5 files changed, 213 insertions(+), 10 deletions(-) diff --git a/lam/HISTORY b/lam/HISTORY index b23f17e9..79873fda 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,7 +1,9 @@ December 2018 6.6 - New import/export in tools menu - YubiKey support - - Windows users: manage "departmentNumber" (needs to be activated via LAM server profile) + - Windows users: + -> Manage "departmentNumber" (needs to be activated via LAM server profile) + -> Sync group memberships from Unix and group of names - LAM Pro: -> Easy setting of background color in self service profile -> Cron jobs: added Windows/Qmail/FreeRadius account expiration notification jobs diff --git a/lam/docs/manual-sources/chapter-modules.xml b/lam/docs/manual-sources/chapter-modules.xml index 837d79fb..67042ae2 100644 --- a/lam/docs/manual-sources/chapter-modules.xml +++ b/lam/docs/manual-sources/chapter-modules.xml @@ -1186,7 +1186,7 @@
- Windows (Samba 4) + Windows (Samba 4/Active Directory) Please activate the account type "Users" in your LAM server profile and then add the user module "Windows (windowsUser)(*)". @@ -1218,10 +1218,14 @@ NIS support is deactivated by default. Enable it if needed. + You can also set maximum values for user photos in advanced + options. + - + diff --git a/lam/docs/manual-sources/images/mod_windowsUser5.png b/lam/docs/manual-sources/images/mod_windowsUser5.png index 8077ed56b5faf722c6f72e1cf3fcd829fecfae6f..2f876ae0b815dd3dcca9e81107b8f0a871ca124c 100644 GIT binary patch literal 97376 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 z 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 F{{o*y*m(c| literal 20214 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 array( "Headline" => _("Do not add object class"), "Text" => _("This will not add the posixAccount object class to the account.") + ), + 'excludeFromGroupSync' => array ( + "Headline" => _('Exclude from group sync'), + "Text" => _('Enter one group per line that should be ignored when syncing groups.') ), 'user' => array( 'uid' => array( @@ -1447,7 +1451,7 @@ class posixAccount extends baseModule implements passwordService { * @param $allGons list of all group of names * @return string cn value */ - private function getGonName($dn, &$allGons) { + public function getGonName($dn, &$allGons) { if (!empty($allGons[$dn]['cn'][0])) { return $allGons[$dn]['cn'][0]; } @@ -2249,7 +2253,7 @@ class posixAccount extends baseModule implements passwordService { $syncGroupsCheckbox = new htmlResponsiveInputCheckbox('posixAccount_' . $typeId . '_syncGroups', false, _('Sync groups'), null, false); $syncGroupsCheckbox->setTableRowsToHide(array('posixAccount_' . $typeId . '_syncGroupsExclusions')); $configUserContainer->add($syncGroupsCheckbox, 12); - $configUserContainer->add(new htmlResponsiveInputTextarea('posixAccount_' . $typeId . '_syncGroupsExclusions', '', 20, 4, _('Exclude from group sync')), 12); + $configUserContainer->add(new htmlResponsiveInputTextarea('posixAccount_' . $typeId . '_syncGroupsExclusions', '', 20, 4, _('Exclude from group sync'), 'excludeFromGroupSync'), 12); } } $return[] = $configUserContainer; @@ -3485,7 +3489,7 @@ class posixAccount extends baseModule implements passwordService { * * @return array groups array(dn => array('cn' => array('groupName'), 'objectclass' => array('top', 'groupOfNames'))) */ - private function findGroupOfNames() { + public function findGroupOfNames() { if ($this->gonCache != null) { return $this->gonCache; } @@ -3948,6 +3952,24 @@ class posixAccount extends baseModule implements passwordService { return $replacements; } + /** + * Returns the current group names. + * + * @return string[] group names + */ + public function getGroups() { + return $this->groups; + } + + /** + * Returns the list of group of names where this user is member. + * + * @return string[] list of DNs + */ + public function getGroupOfNames() { + return $this->gonList; + } + } ?> diff --git a/lam/lib/modules/windowsUser.inc b/lam/lib/modules/windowsUser.inc index 38885919..06bbea78 100644 --- a/lam/lib/modules/windowsUser.inc +++ b/lam/lib/modules/windowsUser.inc @@ -400,6 +400,10 @@ class windowsUser extends baseModule implements passwordService { "Headline" => _("Add photo"), 'attr' => 'jpegPhoto', "Text" => _("Please select an image file to upload. It must be in JPG format (.jpg/.jpeg).") ), + 'excludeFromGroupSync' => array ( + "Headline" => _('Exclude from group sync'), + "Text" => _('Enter one group per line that should be ignored when syncing groups.') + ), ); // upload fields $return['upload_columns'] = array( @@ -1745,7 +1749,7 @@ class windowsUser extends baseModule implements passwordService { * * @return htmlElement meta HTML code */ - function display_html_group() { + public function display_html_group() { $return = new htmlTable(); $groups = $this->findGroups(); // sort by DN @@ -1796,6 +1800,51 @@ class windowsUser extends baseModule implements passwordService { $return->addElement($groupContainer); $return->addNewLine(); + // sync options + $typeManager = new TypeManager(); + $syncTypes = $typeManager->getConfiguredTypesForScopes(array('group', 'gon', 'user')); + $syncActive = false; + $syncUnixActive = false; + $syncGonActive = false; + $possibleGonSyncModules = array('groupOfNames', 'groupOfMembers', 'groupOfUniqueNames'); + foreach ($syncTypes as $syncType) { + $modules = $syncType->getModules(); + foreach ($possibleGonSyncModules as $possibleModule) { + if (in_array($possibleModule, $modules)) { + $syncActive = true; + $syncGonActive = true; + break; + } + } + } + if (in_array('posixAccount', $this->getAccountContainer()->get_type()->getModules())) { + $syncActive = true; + $syncUnixActive = true; + } + $syncActive = $syncActive && !$this->isBooleanConfigOptionSet('windowsUser_syncGroups'); + if ($syncActive) { + $return->addElement(new htmlSubTitle(_('Sync groups')), true); + $syncOptionTable = new htmlTable(); + $syncOptionTable->addElement(new htmlTableExtendedInputCheckbox('syncDeleteGroups', true, _('Delete non-matching entries')), true); + $return->addElement($syncOptionTable, true); + $return->addVerticalSpace('1rem'); + $syncButtons = new htmlGroup(); + if ($syncUnixActive) { + $u2wButton = new htmlAccountPageButton(get_class($this), 'group', 'syncU2W', _('Sync Unix to Windows')); + $u2wButton->setIconClass('unixButton'); + $syncButtons->addElement($u2wButton); + $syncButtons->addElement(new htmlSpacer('2rem', null)); + } + if ($syncGonActive) { + $g2wButton = new htmlAccountPageButton(get_class($this), 'group', 'syncG2W', _('Sync group of names to Windows')); + $g2wButton->setIconClass('groupButton'); + $syncButtons->addElement($g2wButton); + $syncButtons->addElement(new htmlSpacer('2rem', null)); + } + $return->addElement($syncButtons, true); + $return->addElement(new htmlSpacer(null, '2rem'), true); + } + $backGroup = new htmlGroup(); $backGroup->colspan = 10; $backGroup->addElement(new htmlSpacer(null, '10px'), true); @@ -1811,7 +1860,7 @@ class windowsUser extends baseModule implements passwordService { * * @return array list of info/error messages */ - function process_group() { + public function process_group() { if (isset($_POST['addgroups']) && isset($_POST['addgroups_button'])) { // Add groups to list // add new group $this->groupList = @array_merge($this->groupList, $_POST['addgroups']); @@ -1819,9 +1868,118 @@ class windowsUser extends baseModule implements passwordService { elseif (isset($_POST['removegroups']) && isset($_POST['removegroups_button'])) { // remove groups from list $this->groupList = array_delete($_POST['removegroups'], $this->groupList); } + // sync Unix to Windows + if (isset($_POST['form_subpage_windowsUser_group_syncU2W'])) { + $this->manualSyncUnixToWindows(); + } + // sync group of names to Windows + if (isset($_POST['form_subpage_windowsUser_group_syncG2W'])) { + $this->manualSyncGonToWindows(); + } return array(); } + /** + * Syncs the Unix groups to Windows. + */ + private function manualSyncUnixToWindows() { + $windowsGroups = $this->getGroupList(); + $unixGroups = $this->getAccountContainer()->getAccountModule('posixAccount')->getGroups(); + $allWindowsGroups = searchLDAPByAttribute('cn', '*', 'group', array('cn'), array('group')); + $dnToCn = array(); + foreach ($allWindowsGroups as $windowsGroup) { + $dnToCn[$windowsGroup['dn']] = $windowsGroup['cn'][0]; + } + $cnToDn = array_flip($dnToCn); + $currentGroupNames = array(); + foreach ($windowsGroups as $windowsGroup) { + $currentGroupNames[] = $dnToCn[$windowsGroup]; + } + $deleteNonMatching = isset($_POST['syncDeleteGroups']) && ($_POST['syncDeleteGroups'] == 'on'); + $namesToIgnore = array(); + if (!empty($this->moduleSettings['windowsUser_syncGroupsExclusions'])) { + $namesToIgnore = $this->moduleSettings['windowsUser_syncGroupsExclusions']; + array_map('trim', $namesToIgnore); + } + foreach ($unixGroups as $unixGroup) { + if (in_array($unixGroup, $namesToIgnore)) { + continue; + } + if (!in_array($unixGroup, $currentGroupNames) && isset($cnToDn[$unixGroup])) { + $windowsGroups[] = $cnToDn[$unixGroup]; + } + } + if ($deleteNonMatching) { + foreach ($currentGroupNames as $currentGroupName) { + if (in_array($currentGroupName, $namesToIgnore)) { + continue; + } + if (!in_array($currentGroupName, $unixGroups)) { + foreach ($windowsGroups as $windowsGroup) { + if ($dnToCn[$windowsGroup] == $currentGroupName) { + $windowsGroups = array_delete(array($windowsGroup), $windowsGroups); + break; + } + } + } + } + } + $this->groupList = $windowsGroups; + } + + /** + * Syncs the group of names to Windows. + */ + private function manualSyncGonToWindows() { + $windowsGroups = $this->getGroupList(); + $gonGroupDns = $this->getAccountContainer()->getAccountModule('posixAccount')->getGroupOfNames(); + $allGons = $this->getAccountContainer()->getAccountModule('posixAccount')->findGroupOfNames(); + $gonGroups = array(); + foreach ($gonGroupDns as $gonGroupDn) { + $gonGroups[] = $this->getAccountContainer()->getAccountModule('posixAccount')->getGonName($gonGroupDn, $allGons); + } + $allWindowsGroups = searchLDAPByAttribute('cn', '*', 'group', array('cn'), array('group')); + $dnToCn = array(); + foreach ($allWindowsGroups as $windowsGroup) { + $dnToCn[$windowsGroup['dn']] = $windowsGroup['cn'][0]; + } + $cnToDn = array_flip($dnToCn); + $currentGroupNames = array(); + foreach ($windowsGroups as $windowsGroup) { + $currentGroupNames[] = $dnToCn[$windowsGroup]; + } + $deleteNonMatching = isset($_POST['syncDeleteGroups']) && ($_POST['syncDeleteGroups'] == 'on'); + $namesToIgnore = array(); + if (!empty($this->moduleSettings['windowsUser_syncGroupsExclusions'])) { + $namesToIgnore = $this->moduleSettings['windowsUser_syncGroupsExclusions']; + array_map('trim', $namesToIgnore); + } + foreach ($gonGroups as $gonGroup) { + if (in_array($gonGroup, $namesToIgnore)) { + continue; + } + if (!in_array($gonGroup, $currentGroupNames) && isset($cnToDn[$gonGroup])) { + $windowsGroups[] = $cnToDn[$gonGroup]; + } + } + if ($deleteNonMatching) { + foreach ($currentGroupNames as $currentGroupName) { + if (in_array($currentGroupName, $namesToIgnore)) { + continue; + } + if (!in_array($currentGroupName, $gonGroups)) { + foreach ($windowsGroups as $windowsGroup) { + if ($dnToCn[$windowsGroup] == $currentGroupName) { + $windowsGroups = array_delete(array($windowsGroup), $windowsGroups); + break; + } + } + } + } + } + $this->groupList = $windowsGroups; + } + /** * Displays the photo upload page. * @@ -3413,6 +3571,7 @@ class windowsUser extends baseModule implements passwordService { * @see baseModule::get_configOptions() */ public function get_configOptions($scopes, $allScopes) { + $typeManager = new TypeManager($_SESSION['conf_config']); // configuration options $configContainer = new htmlResponsiveRow(); $configContainer->add(new htmlResponsiveInputTextarea('windowsUser_domains', '', 30, 3, _('Domains'), 'domains'), 12); @@ -3443,8 +3602,24 @@ class windowsUser extends baseModule implements passwordService { $configContainer->add(new htmlResponsiveInputCheckbox('windowsUser_hideou', true, _('Organisational unit'), null, true), 12, 4); $configContainer->add(new htmlResponsiveInputCheckbox('windowsUser_hideo', true, _('Organisation'), null, true), 12, 4); $configContainer->add(new htmlResponsiveInputCheckbox('windowsUser_hidemanager', true, _('Manager'), null, true), 12, 4); - for ($i = 0; $i < 1; $i++) { - $configContainer->add(new htmlOutputText(''), 0, 4); + $syncTypes = $typeManager->getConfiguredTypesForScopes(array('group', 'gon', 'user')); + $syncActive = false; + $possibleSyncModules = array('groupOfNames', 'groupOfMembers', 'groupOfUniqueNames', 'posixAccount'); + foreach ($syncTypes as $syncType) { + $modules = $syncType->getModules(); + foreach ($possibleSyncModules as $possibleModule) { + if (in_array($possibleModule, $modules)) { + $syncActive = true; + break; + } + } + } + if ($syncActive) { + $syncGroupsCheckbox = new htmlResponsiveInputCheckbox('windowsUser_syncGroups', false, _('Sync groups'), null, true); + $syncGroupsCheckbox->setTableRowsToHide(array('windowsUser_syncGroupsExclusions')); + $configContainer->add($syncGroupsCheckbox, 12, 4); + $configContainer->addVerticalSpacer('2rem'); + $configContainer->add(new htmlResponsiveInputTextarea('windowsUser_syncGroupsExclusions', '', 20, 4, _('Exclude from group sync'), 'excludeFromGroupSync'), 12); } $advancedOptions = new htmlResponsiveRow(); $advancedOptions->add(new htmlSubTitle(_('Photo')), 12);