From 14a619989e23d2a1f06bba039c9321f5d16b895e Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sun, 12 Jan 2014 10:18:35 +0000 Subject: [PATCH] added option if referrals should be followed --- lam/HISTORY | 1 + lam/docs/manual-sources/howto.xml | 13 +++++++++ .../manual-sources/images/configProfiles4.png | Bin 25962 -> 30185 bytes lam/help/help.inc | 2 ++ lam/lib/config.inc | 25 ++++++++++++++++-- lam/lib/ldap.inc | 3 +++ lam/templates/3rdParty/pla/lib/ds_myldap.php | 4 ++- lam/templates/config/confmain.php | 18 +++++++++++++ 8 files changed, 63 insertions(+), 3 deletions(-) diff --git a/lam/HISTORY b/lam/HISTORY index 171acb7d..d3357ce9 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,6 +1,7 @@ March 2014 4.5 - IMAP: allow dynamic admin user names by replacing wildcards with LDAP attributes - Personal: allow to set fields read-only + - Added option to server profile if referrals should be followed (fixes problems with Samba 4 and AD) 18.12.2013 4.4 - PyKota support: users, groups, printers, billing codes diff --git a/lam/docs/manual-sources/howto.xml b/lam/docs/manual-sources/howto.xml index 1613695d..c99d087b 100644 --- a/lam/docs/manual-sources/howto.xml +++ b/lam/docs/manual-sources/howto.xml @@ -713,6 +713,15 @@ Have fun!
Version specific upgrade instructions +
+ 4.4 -> 4.5 + + LAM will no longer follow referrals by default. This is ok for + most installations. If you use LDAP referrals please activate + referral following for your server profile (tab General settings + -> Server settings -> Advanced options). +
+
4.3 -> 4.4 @@ -1234,6 +1243,10 @@ Have fun! linkend="a_accessLevelPasswordReset">this page for details on the different access levels. + By default LAM will not follow LDAP referrals. This is ok for + most installations. If you use LDAP referrals please activate the + referral option in advanced settings. + diff --git a/lam/docs/manual-sources/images/configProfiles4.png b/lam/docs/manual-sources/images/configProfiles4.png index c3eef00bb024b56dd36e7250fdfec96768dc5e52..a1adea61a3805886a18cd8eae58b9cca98000499 100644 GIT binary patch literal 30185 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

W(DA$z=W#q@2jXk#q3& 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 F{|8!yub2P; literal 25962 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 b;YFa3FeQu0sr&)33rIm$6;dhvHu&EFLP0Cj diff --git a/lam/help/help.inc b/lam/help/help.inc index 1f4c892d..0d0957b6 100644 --- a/lam/help/help.inc +++ b/lam/help/help.inc @@ -82,6 +82,8 @@ $helpArray = array ( _("dc=yourcompany,dc=com")), "204" => array ("Headline" => _("SSL certificate"), "Text" => _("This is only needed for TLS/SSL connections. By default, LAM will use the certificate authorities installed on your system. If you have a private CA in your company you can upload your CA certificates here and override the system certificates.")), + "205" => array ("Headline" => _("Follow referrals"), + "Text" => _("Specifies if LAM should automatically follow referrals. Activate if you use referrals in your LDAP directory.")), "206" => array ("Headline" => _("List attributes"), "Text" => _("This is the list of attributes to show in the account list. The entries can either be predefined values, \"#attribute\", or individual ones, \"attribute:description\". Several entries are separated by semicolons.") . "


" . diff --git a/lam/lib/config.inc b/lam/lib/config.inc index fc13e9f2..e84ef2ad 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -258,6 +258,9 @@ class LAMConfig { /** enables/disables TLS encryption */ private $useTLS; + /** automatically follow referrals */ + private $followReferrals = 'false'; + /** Array of string: users with admin rights */ private $Admins; @@ -349,7 +352,7 @@ class LAMConfig { private $lamProMailText = ''; /** List of all settings in config file */ - private $settings = array("ServerURL", "useTLS", "Passwd", "Admins", "treesuffix", + private $settings = array("ServerURL", "useTLS", "followReferrals", "Passwd", "Admins", "treesuffix", "defaultLanguage", "scriptPath", "scriptServer", "scriptRights", "cachetimeout", "modules", "activeTypes", "types", "tools", "accessLevel", 'loginMethod', 'loginSearchSuffix', 'loginSearchFilter', 'searchLimit', 'lamProMailFrom', 'lamProMailReplyTo', 'lamProMailSubject', @@ -516,6 +519,7 @@ class LAMConfig { // check if we have to add new entries (e.g. if user upgraded LAM and has an old config file) if (!in_array("ServerURL", $saved)) array_push($file_array, "\n\n# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)\n" . "serverURL: " . $this->ServerURL . "\n"); if (!in_array("useTLS", $saved)) array_push($file_array, "\n\n# enable TLS encryption\n" . "useTLS: " . $this->useTLS . "\n"); + if (!in_array("followReferrals", $saved)) array_push($file_array, "\n\n# follow referrals\n" . "followReferrals: " . $this->followReferrals . "\n"); if (!in_array("Passwd", $saved)) array_push($file_array, "\n\n# password to change these preferences via webfrontend\n" . "passwd: " . $this->Passwd . "\n"); if (!in_array("Admins", $saved)) array_push($file_array, "\n\n# list of users who are allowed to use LDAP Account Manager\n" . "# names have to be seperated by semicolons\n" . @@ -638,7 +642,7 @@ class LAMConfig { /** * Sets if TLS is activated. * - * @param String yes or no + * @param String $useTLS yes or no * @return boolean true if $useTLS has correct format */ public function setUseTLS($useTLS) { @@ -649,6 +653,23 @@ class LAMConfig { return false; } + /** + * Returns if referrals should be followed. + * + * @return String true or false + */ + public function getFollowReferrals() { + return $this->followReferrals; + } + + /** + * Sets if referrals should be followed. + * + * @param String $followReferrals true or false + */ + public function setFollowReferrals($followReferrals) { + $this->followReferrals = $followReferrals; + } /** * Returns an array of string with all admin names diff --git a/lam/lib/ldap.inc b/lam/lib/ldap.inc index 12488d25..b145d425 100644 --- a/lam/lib/ldap.inc +++ b/lam/lib/ldap.inc @@ -100,6 +100,9 @@ class Ldap{ if ($this->server) { // use LDAPv3 ldap_set_option($this->server, LDAP_OPT_PROTOCOL_VERSION, 3); + // referral following + $followReferrals = ($this->conf->getFollowReferrals() === 'true') ? 1 : 0; + ldap_set_option($this->server,LDAP_OPT_REFERRALS, $followReferrals); // start TLS if specified $useTLS = $this->conf->getUseTLS(); if (isset($useTLS) && ($useTLS == "yes")) { diff --git a/lam/templates/3rdParty/pla/lib/ds_myldap.php b/lam/templates/3rdParty/pla/lib/ds_myldap.php index 08d08c16..8e23b575 100644 --- a/lam/templates/3rdParty/pla/lib/ds_myldap.php +++ b/lam/templates/3rdParty/pla/lib/ds_myldap.php @@ -186,7 +186,9 @@ class myldap extends DS { /* Disabling this makes it possible to browse the tree for Active Directory, and seems * to not affect other LDAP servers (tested with OpenLDAP) as phpLDAPadmin explicitly * specifies deref behavior for each ldap_search operation. */ - ldap_set_option($resource,LDAP_OPT_REFERRALS,1); + // TODO provide upstream patch if PLA gets active again + $followReferrals = ($_SESSION['config']->getFollowReferrals() === 'true') ? 1 : 0; + ldap_set_option($resource,LDAP_OPT_REFERRALS, $followReferrals); # Try to fire up TLS is specified in the config if ($this->isTLSEnabled()) diff --git a/lam/templates/config/confmain.php b/lam/templates/config/confmain.php index 72a19c14..b1f8ed7c 100644 --- a/lam/templates/config/confmain.php +++ b/lam/templates/config/confmain.php @@ -253,6 +253,7 @@ $searchLimitOptions = array( $limitSelect = new htmlTableExtendedSelect('searchLimit', $searchLimitOptions, array($conf->get_searchLimit()), _("LDAP search limit"), '222'); $limitSelect->setHasDescriptiveElements(true); $serverSettingsContent->addElement($limitSelect, true); + // access level is only visible in Pro version if (isLAMProVersion()) { $accessOptions = array( @@ -265,6 +266,17 @@ if (isLAMProVersion()) { $serverSettingsContent->addElement($accessSelect, true); } +// advanced options +$advancedOptionsContent = new htmlTable(); +// referrals +$followReferrals = ($conf->getFollowReferrals() === 'true'); +$advancedOptionsContent->addElement(new htmlTableExtendedInputCheckbox('followReferrals',$followReferrals , _('Follow referrals'), '205'), true); + +// build advanced options box +$advancedOptions = new htmlAccordion('advancedOptions_server', array(_('Advanced options') => $advancedOptionsContent), false); +$advancedOptions->colspan = 15; +$serverSettingsContent->addElement($advancedOptions, true); + $serverSettings = new htmlFieldset($serverSettingsContent, _("Server settings"), '../../graphics/profiles.png'); $container->addElement($serverSettings, true); $container->addElement(new htmlSpacer(null, '10px'), true); @@ -486,6 +498,12 @@ function checkInput() { if ((strpos($_POST['serverurl'], 'ldaps://') !== false) && ($_POST['useTLS'] == 'yes')) { $errors[] = array("ERROR", _('You cannot use SSL and TLS encryption at the same time. Please use either "ldaps://" or TLS.')); } + if (isset($_POST['followReferrals']) && ($_POST['followReferrals'] == 'on')) { + $conf->setFollowReferrals('true'); + } + else { + $conf->setFollowReferrals('false'); + } /* if (!$conf->set_cacheTimeout($_POST['cachetimeout'])) { $errors[] = array("ERROR", _("Cache timeout is invalid!")); }*/