config/config.ini.sample lib/Kolab
Thomas Brüderli
bruederli at kolabsys.com
Tue May 20 09:00:29 CEST 2014
config/config.ini.sample | 2 +-
lib/Kolab/FreeBusy/DirectoryLDAP.php | 9 ++++++---
lib/Kolab/FreeBusy/HTTPAuth.php | 5 +++++
3 files changed, 12 insertions(+), 4 deletions(-)
New commits:
commit c86278b42551e3753b3d858f6b386a4cf17fb04e
Author: Thomas Bruederli <thomas at roundcube.net>
Date: Tue May 20 08:59:56 2014 +0200
Use %dc and %u placeholders in LDAP config properties for multi-domain setups (#2630)
diff --git a/config/config.ini.sample b/config/config.ini.sample
index c20a2de..b22159e 100644
--- a/config/config.ini.sample
+++ b/config/config.ini.sample
@@ -51,7 +51,7 @@ type = ldap
host = ldap://localhost:389
bind_dn = "uid=kolab-service,ou=Special Users,dc=yourdomain,dc=com"
bind_pw = "<service-bind-pw>"
-base_dn = "dc=yourdomain,dc=com"
+base_dn = "People,dc=yourdomain,dc=com" ; use %dc as placeholder for the domain part extracted from the request string
filter = "(&(objectClass=kolabInetOrgPerson)(|(uid=%s)(mail=%s)(alias=%s)))"
attributes = mail, sn, alias
lc_attributes = sn
diff --git a/lib/Kolab/FreeBusy/DirectoryLDAP.php b/lib/Kolab/FreeBusy/DirectoryLDAP.php
index ea920d0..0a4ecff 100644
--- a/lib/Kolab/FreeBusy/DirectoryLDAP.php
+++ b/lib/Kolab/FreeBusy/DirectoryLDAP.php
@@ -99,9 +99,12 @@ class DirectoryLDAP extends Directory
$result = array('s' => $user);
if ($this->ready) {
- // search with configured filter
- $filter = preg_replace('/%s/i', $user, $this->config['filter']);
- $ldapresult = $this->ldap->search($this->config['base_dn'], $filter, 'sub', Config::convert($this->config['attributes'], Config::ARR));
+ // search with configured base_dn and filter
+ list($u, $d) = explode('@', $user);
+ $replaces = array('%dc' => 'dc=' . str_replace('.', ',dc=', $d), '%u' => $u);
+ $base_dn = strtr($this->config['base_dn'], $replaces);
+ $filter = preg_replace('/%s/i', $user, strtr($this->config['filter'], $replaces));
+ $ldapresult = $this->ldap->search($base_dn, $filter, 'sub', Config::convert($this->config['attributes'], Config::ARR));
// got a valid result
if ($ldapresult && $ldapresult->count()) {
diff --git a/lib/Kolab/FreeBusy/HTTPAuth.php b/lib/Kolab/FreeBusy/HTTPAuth.php
index c4bd288..4be5be4 100644
--- a/lib/Kolab/FreeBusy/HTTPAuth.php
+++ b/lib/Kolab/FreeBusy/HTTPAuth.php
@@ -78,6 +78,11 @@ class HTTPAuth
{
self::$logger = Logger::get('httpauth', intval($config['loglevel']));
+ list($u, $d) = explode('@', $user);
+ $replaces = array('%dc' => 'dc=' . str_replace('.', ',dc=', $d), '%u' => $u);
+ $config['base_dn'] = strtr($config['base_dn'], $replaces);
+ $config['filter'] = strtr($config['filter'], $replaces);
+
$host = parse_url($config['host']);
$ldap_config = array(
'hosts' => array($host['host']),
More information about the commits
mailing list