[horde] LDAP configuration and hooks

David Wells dwells at alfavinil.com
Thu Nov 28 21:12:41 UTC 2019


Hi!


I have configured the LDAP settings in horde as follow

> $conf['ldap']['hostspec'] = array('dc1.fliawells.com.ar');
> $conf['ldap']['port'] = 3268;
> $conf['ldap']['tls'] = true;
> $conf['ldap']['timeout'] = 5;
> $conf['ldap']['version'] = 3;
> $conf['ldap']['user']['basedn'] = 'DC=fliawells,DC=com,DC=ar';
> $conf['ldap']['user']['uid'] = 'userPrincipalName';
> $conf['ldap']['user']['objectclass'] = array('*');
> $conf['ldap']['user']['filter_type'] = 'objectclass';
> $conf['ldap']['bindas'] = 'user';
> $conf['ldap']['useldap'] = true;

When I modify the hooks.local.php file so that it reads

> <?php
> class Horde_Hooks
> {
>     public function prefs_init($pref, $value, $username, $scope_ob)
>     {
>         switch ($pref) {
>         case 'from_addr':
>
>             if (is_null($username)) {
>                 return $value;
>             }
>
>             $ldap = $GLOBALS['injector']->getInstance('Horde_Ldap');
>             try {
>                 $result = $ldap->search(
>                     $GLOBALS['conf']['ldap']['user']['basedn'],
> Horde_Ldap_Filter::create('userPrincipalName', 'equals', $username),
>                     array('attributes' => array('mail'))
>                 );
>                 if ($result->count()) {
>                     $entry = $result->shiftEntry();
>                     return $entry->getValue('mail', 'single');
>                 }
>             } catch (Horde_Ldap_Exception $e) {
>             }
>
>             return $value;
>
>
>         case 'fullname':
>             if (is_null($username)) {
>                 return $value;
>             }
>
>             $ldap = $GLOBALS['injector']->getInstance('Horde_Ldap');
>             try {
>                 $result = $ldap->search(
>                     $GLOBALS['conf']['ldap']['user']['basedn'],
> Horde_Ldap_Filter::create('userPrincipalName', 'equals', $username),
>                     array('attributes' => array('cn', 'cn;lang-es'))
>                 );
>                 if ($result->count()) {
>                     $entry = $result->shiftEntry();
>                     return $entry->getValue('cn;lang-es', 'single')
>                         ?: $entry->getValue('cn', 'single');
>                 }
>             } catch (Horde_Ldap_Exception $e) {
>             }
>
>             return $username;
>         }
>     }
> }

and enable these hooks by modifying the prefs.local.php file so that it 
reads

> <?php
> $_prefs['from_addr']['hook'] = true;
> $_prefs['fullname']['hook'] = true;

I get an error that says

>
>       Could not connect to localhost:389
>
When I comment the prefs.local.php file and access horde I run the 
following piece of code in the PHP Shell (under the horde context

> |$ldap| |= ||$GLOBALS||[||'injector'||]->getInstance(||'Horde_Ldap'||);|
> |||try| |{|
> |||$result| |= ||$ldap||->search(|
> |||$GLOBALS||[||'conf'||][||'ldap'||][||'user'||][||'basedn'||],|
> |||Horde_Ldap_Filter::create(||'userPrincipalName'||, ||'equals'||, 
> ||'dwells at fliawells.com.ar'||), ||array||(||'attributes'| |=> 
> ||array||(||'mail'||)));|
> |||if| |(||$result||->||count||()) {|
> |||$entry| |= ||$result||->shiftEntry();|
> |||return| |$entry||->getValue(||'mail'||, ||'single'||);|
> |||}|
> |||} ||catch| |(Horde_Ldap_Exception ||$e||) {|
> |||}|
> |||return| |$value||;|
I get the following result

> exception 'Horde_Ldap_Exception' with message 'Could not connect to localhost:389' in /usr/lib64/php/Horde/Ldap.php:321
> Stack trace:
> #0 /usr/lib64/php/Horde/Ldap.php(225): Horde_Ldap->_connect()
> #1 /usr/lib64/php/Horde/Ldap.php(137): Horde_Ldap->bind()
> #2 [internal function]: Horde_Ldap->__construct(Array)
> #3 /usr/lib64/php/Horde/Injector/Binder/Implementation.php(88): ReflectionClass->newInstanceArgs(Array)
> #4 /usr/lib64/php/Horde/Injector/Binder/Implementation.php(70): Horde_Injector_Binder_Implementation->_getInstance(Object(Horde_Injector), Object(ReflectionClass))
> #5 /usr/lib64/php/Horde/Injector/Binder/AnnotatedSetters.php(78): Horde_Injector_Binder_Implementation->create(Object(Horde_Injector))
> #6 /usr/lib64/php/Horde/Injector.php(238): Horde_Injector_Binder_AnnotatedSetters->create(Object(Horde_Injector))
> #7 /usr/lib64/php/Horde/Injector.php(272): Horde_Injector->createInstance('Horde_Ldap')
> #8 /var/www/horde/admin/phpshell.php(66) : eval()'d code(1): Horde_Injector->getInstance('Horde_Ldap')
> #9 /var/www/horde/admin/phpshell.php(66): eval()
> #10 {main}

 From what I can tell the library is trying to connect lo localhost:389 
even though the settings state that it should be connecting to 
dc1.fliawells.com.ar:3268. What could I be missing here?


Thank you very much in advance!

Best regards,

David Wells.





More information about the horde mailing list