]> BookStack Code Mirror - bookstack/blobdiff - app/Services/Ldap.php
Update Ldap.php
[bookstack] / app / Services / Ldap.php
index cfefbb4b6a1b6065f92f208c6b64b636fd4f6008..ed85357cf18afc7fd24112b7ed5cc64f771ead05 100644 (file)
@@ -18,6 +18,24 @@ class Ldap
      */
     public function connect($hostName, $port)
     {
+        /*
+        * LDAPS is not working because even if port 363 is specified, 
+        * BookStack tries to open a LDAP connection on the LDAPS channel.
+        * The if-clause below fixed this, although it would be better to
+        * change the settings in .env from
+        *   LDAP_SERVER=servername:port
+        * to
+        *   LDAP_SERVER=ldap://servername:389
+        *   LDAP_SERVER=ldaps://servername:363
+        * in order to be compatible with non-standard setups. Currently, 
+        * specifying ldap:// or ldaps:// results in an error because BookStack
+        * splits at ":" and takes the seconds chunk (in this case "//servername"
+        * as the port value.
+        */
+        if ($port == 363)
+        {
+                $hostName = "ldaps://".$hostName;
+        }
         return ldap_connect($hostName, $port);
     }
 
@@ -33,6 +51,17 @@ class Ldap
         return ldap_set_option($ldapConnection, $option, $value);
     }
 
+    /**
+     * Set the version number for the given ldap connection.
+     * @param $ldapConnection
+     * @param $version
+     * @return bool
+     */
+    public function setVersion($ldapConnection, $version)
+    {
+        return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
+    }
+
     /**
      * Search LDAP tree using the provided filter.
      * @param resource   $ldapConnection
@@ -83,4 +112,4 @@ class Ldap
         return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
     }
 
-}
\ No newline at end of file
+}