[horde] Fwd: LDAP configuration and hooks

David Wells dwells at alfavinil.com
Sat Nov 30 03:56:19 UTC 2019


You're right, I'm sorry. The file is in the 
/var/www/horde/config/conf.php, the directory /var/www/horde is the top 
level directory of the horde installation as specified when I ran the 
webmail-install script. The hooks.php and the prefs.local.php files are 
also located in the config directory of the top level directory of the 
horde installation along with the conf.php file. I verified the web 
server access to this file and it has no problem at all reading the 
database access configuration from this same conf.php file. I also ran 
"print_r(array_values($conf));" in the php shell and got this in the 
output of the command

> [15] => Array
>          (
>              [hostspec] => Array
>                  (
>                      [0] => dc1.fliawells.com.ar
>                  )
>
>              [port] => 3268
>              [tls] => 1
>              [timeout] => 5
>              [version] => 3
>              [user] => Array
>                  (
>                      [basedn] => DC=fliawells,DC=com,DC=ar
>                      [uid] => userPrincipalName
>                      [objectclass] => Array
>                          (
>                              [0] => *
>                          )
>
>                      [filter_type] => objectclass
>                  )
>
>              [bindas] => user
>              [useldap] => 1
>          )


El 29/11/2019 a las 06:52 p. m., Arjen de Korte escribió:
> Citeren "David Wells - Alfavinil S.A." <dwells at alfavinil.com>:
>
>> Thanks for your reply.
>>
>> I moved the file from hooks.local.php to hooks.php and I still get the
>> error stating horde is trying to connect to localhost:389 instead of the
>> host configured in config.php.
>
> Please be precise. There is no configuration file 'config.php' and 
> also please mention *which* configuration file your mean. In many 
> applications there will be a 'conf.php' and 'hooks.php' file, but 
> without at least two more directory levels, I have no idea which one 
> you mean.
>
> Last but not least, make sure the webserver is able to read these 
> configuration files (permissions).
>
>>
>> El 29/11/2019 a las 16:54, Arjen de Korte escribió:
>>> Citeren "David Wells - Alfavinil S.A." <dwells at alfavinil.com>:
>>>
>>>> Hi again!
>>>>
>>>> I discovered that when I execute in the PHP Shell just the line 
>>>> "$ldap =
>>>> $GLOBALS['injector']->getInstance('Horde_Ldap');" I already get the
>>>> error "exception 'Horde_Ldap_Exception' with message 'Could not 
>>>> connect
>>>> to localhost:389'"
>>>>
>>>>
>>>> -------- Mensaje reenviado --------
>>>> Asunto:     [horde] LDAP configuration and hooks
>>>> Fecha:     Thu, 28 Nov 2019 18:12:41 -0300
>>>> De:     David Wells <dwells at alfavinil.com>
>>>> Para:     horde at lists.horde.org
>>>>
>>>>
>>>>
>>>> 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
>>>
>>> Horde doesn't use a 'hooks.local.php' file anywhere. The distributed
>>> version is called 'hooks.php.dist' and as far as I remember there is a
>>> 'hooks.php' in the webmail package. Chances are here is a 'hooks.php'
>>> file alongside your 'hooks.local.php' and it is that one that is
>>> actually used. Try renaming this 'hooks.local.php' file to 'hooks.php'
>>> and check again.
>>>
>>>>
>>>>> <?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.
>>>>
>>>>
>>>>
>>>> -- 
>>>> Horde mailing list
>>>> Frequently Asked Questions: http://horde.org/faq/
>>>> To unsubscribe, mail: horde-unsubscribe at lists.horde.org
>>>
>>>
>>>
>
>
>


More information about the horde mailing list