0010022: allow to disable ldap certificate check
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 2 Jul 2014 11:19:56 +0000 (13:19 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 16 Jul 2014 11:00:05 +0000 (13:00 +0200)
* adds config option to disable cert checks in Tinebase_Ldap

https://forge.tine20.org/mantisbt/view.php?id=10022

Change-Id: I33968b9a57ba21078b77f6f59a333a0db459e307
Reviewed-on: http://gerrit.tine20.com/customers/816
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
Tested-by: Philipp Schüle <p.schuele@metaways.de>
tine20/Tinebase/Config.php
tine20/Tinebase/Ldap.php

index bd2d0d5..c26447a 100644 (file)
@@ -129,6 +129,13 @@ class Tinebase_Config extends Tinebase_Config_Abstract
      * @var string
      */
     const MAPPANEL = 'mapPanel';
+
+    /**
+     * disable ldap certificate check
+     *
+     * @var string
+     */
+    const LDAP_DISABLE_TLSREQCERT = 'ldapDisableTlsReqCert';
     
     /**
      * Config key for session ip validation -> if this is set to FALSE no Zend_Session_Validator_IpAddress is registered
@@ -432,6 +439,17 @@ class Tinebase_Config extends Tinebase_Config_Abstract
             'setByAdminModule'      => FALSE,
             'setBySetupModule'      => TRUE,
         ),
+        self::LDAP_DISABLE_TLSREQCERT => array(
+                                   //_('Disable LDAP TLS Certificate Check')
+            'label'                 => 'Disable LDAP TLS Certificate Check',
+                                   //_('LDAP TLS Certificate should not be checked')
+            'description'           => 'LDAP TLS Certificate should not be checked',
+            'type'                  => 'bool',
+            'clientRegistryInclude' => false,
+            'setByAdminModule'      => false,
+            'setBySetupModule'      => true,
+            'default'               => false
+        ),
         self::SESSIONIPVALIDATION => array(
                                    //_('IP Session Validator')
             'label'                 => 'IP Session Validator',
index 3eaef4b..0c733a8 100644 (file)
@@ -5,7 +5,7 @@
  * @package     Tinebase
  * @subpackage  Ldap
  * @license     http://www.gnu.org/licenses/agpl.html AGPL3
- * @copyright   Copyright (c) 2008-2013 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2008-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Lars Kneschke <l.kneschke@metaways.de>
  */
 
@@ -24,6 +24,12 @@ class Tinebase_Ldap extends Zend_Ldap
      */
     public function __construct(array $_options)
     {
+        if (Tinebase_Config::getInstance()->get(Tinebase_Config::LDAP_DISABLE_TLSREQCERT)) {
+            if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__
+                . ' Disable TLS certificate check');
+            putenv('LDAPTLS_REQCERT=never');
+        }
+        
         // strip non Zend_Ldap options
         $options = array_intersect_key($_options, array(
             'host'                      => null,
@@ -133,7 +139,7 @@ class Tinebase_Ldap extends Zend_Ldap
                 unset($entry[$attr]);
             }
         }
-                
+        
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . '  $dn: ' . $dn->toString());
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . '  $data: ' . print_r($entry, true));