public function Connect() { $connected = false; $attempts = 0; $hosts = $this->options->Controllers(); $options = $this->options->AdLdapOptions(); while (!$connected && $attempts < count($hosts)) { try { $host = $hosts[$attempts]; Log::Debug('ActiveDirectory - Trying to connect to host %s', $host); $options['domain_controllers'] = array($host); $attempts++; $this->ldap = new adLdap($options); $connected = true; if ($connected) { Log::Debug('ActiveDirectory - Connection succeeded to host %s', $host); } else { Log::Debug('ActiveDirectory - Connection failed to host %s. Reason %s', $host, $this->ldap->getLastError()); } } catch (adLDAPException $ex) { Log::Error($ex); throw $ex; } } return $connected; }
public function testAdLdapConstructsOptionsCorrectly() { $controllers = 'localhost, localhost.2'; $port = '389'; $username = '******'; $password = '******'; $base = ''; $usessl = 'false'; $version = '3'; $accountSuffix = ''; $configFile = new FakeConfigFile(); $configFile->SetKey(ActiveDirectoryConfig::DOMAIN_CONTROLLERS, $controllers); $configFile->SetKey(ActiveDirectoryConfig::PORT, $port); $configFile->SetKey(ActiveDirectoryConfig::USERNAME, $username); $configFile->SetKey(ActiveDirectoryConfig::PASSWORD, $password); $configFile->SetKey(ActiveDirectoryConfig::BASEDN, $base); $configFile->SetKey(ActiveDirectoryConfig::USE_SSL, $usessl); $configFile->SetKey(ActiveDirectoryConfig::VERSION, $version); $configFile->SetKey(ActiveDirectoryConfig::ACCOUNT_SUFFIX, $accountSuffix); $this->fakeConfig->SetFile(ActiveDirectoryConfig::CONFIG_ID, $configFile); $ldapOptions = new ActiveDirectoryOptions(); $options = $ldapOptions->AdLdapOptions(); $this->assertNotNull($this->fakeConfig->_RegisteredFiles[ActiveDirectoryConfig::CONFIG_ID]); $this->assertEquals('localhost', $options['domain_controllers'][0], 'domain_controllers must be an array'); $this->assertEquals(intval($port), $options['ad_port'], 'port should be int'); $this->assertEquals($username, $options['admin_username']); $this->assertEquals($password, $options['admin_password']); $this->assertEquals($base, $options['base_dn']); $this->assertEquals(false, $options['use_ssl']); $this->assertEquals($accountSuffix, $options['account_suffix']); $this->assertEquals(intval($version), $options['ldap_version'], "version should be int"); }