package org.ovirt.engine.core.bll.adbroker; import java.net.URI; import java.util.concurrent.Callable; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.compat.LogCompat; import org.ovirt.engine.core.compat.LogFactoryCompat; import org.ovirt.engine.core.utils.kerberos.AuthenticationResult; import org.springframework.ldap.core.support.LdapContextSource; public class PrepareLdapConnectionTask implements Callable<LDAPTemplateWrapper> { public PrepareLdapConnectionTask( DirectorySearcher searcher, LdapCredentials ldapCredentials, String domain, URI ldapURI) { this.searcher = searcher; this.ldapCredentials = ldapCredentials; this.domain = domain; this.ldapURI = ldapURI; } private final LdapCredentials ldapCredentials; private final DirectorySearcher searcher; private final String domain; private final URI ldapURI; private static final LogCompat log = LogFactoryCompat.getLog(PrepareLdapConnectionTask.class); @Override public LDAPTemplateWrapper call() throws Exception { String userName = ldapCredentials.getUserName(); String password = ldapCredentials.getPassword(); LdapContextSource ldapctx = new LdapContextSource(); LDAPTemplateWrapper wrapper = LDAPTemplateWrapperFactory.getLDAPTemplateWrapper(ldapctx, userName, password, domain); try { wrapper.init(ldapURI, searcher.isBaseDNExist(), searcher.getExplicitAuth(), searcher.getExplicitBaseDN(), searcher.getDomainObject(domain).getLdapProviderType(), Config.<Integer> GetValue(ConfigValues.LDAPQueryTimeout) * 1000); ldapctx.afterPropertiesSet(); } catch (Exception e) { log.error("Error connecting to directory server", e); throw new EngineDirectoryServiceException(AuthenticationResult.OTHER); } wrapper.useAuthenticationStrategy(); wrapper.setIgnorePartialResultException(true); return wrapper; } }