X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/0821672e70cf9eb81091032514634b299cc5900b..refs/pull/236/head:/app/Services/Ldap.php diff --git a/app/Services/Ldap.php b/app/Services/Ldap.php index cfefbb4b6..ed85357cf 100644 --- a/app/Services/Ldap.php +++ b/app/Services/Ldap.php @@ -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 +}