blob: 4b1c17eeabda57f4b2dfb71a05f92a285ca6d8f9 [file] [log] [blame]
package de.ids_mannheim.korap.server;
import com.unboundid.ldap.listener.*;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.util.CryptoHelper;
import com.unboundid.util.ssl.SSLUtil;
import com.unboundid.util.ssl.TrustAllTrustManager;
import de.ids_mannheim.korap.authentication.LDAPConfig;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
public class EmbeddedLdapServer {
static InMemoryDirectoryServer server;
public static void startIfNotRunning (LDAPConfig ldapConfig)
throws LDAPException, GeneralSecurityException,
UnknownHostException {
if (server != null) {
return;
}
InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig(
ldapConfig.searchBase);
final MessageDigest sha1Digest = CryptoHelper.getMessageDigest("SHA1");
final MessageDigest sha256Digest = CryptoHelper
.getMessageDigest("SHA-256");
config.setPasswordEncoders(
new ClearInMemoryPasswordEncoder("{CLEAR}", null),
new ClearInMemoryPasswordEncoder("{HEX}",
HexPasswordEncoderOutputFormatter
.getLowercaseInstance()),
new ClearInMemoryPasswordEncoder("{BASE64}",
Base64PasswordEncoderOutputFormatter.getInstance()),
new UnsaltedMessageDigestInMemoryPasswordEncoder("{SHA}",
Base64PasswordEncoderOutputFormatter.getInstance(),
sha1Digest),
new UnsaltedMessageDigestInMemoryPasswordEncoder("{SHA256}",
Base64PasswordEncoderOutputFormatter.getInstance(),
sha256Digest));
config.addAdditionalBindCredentials(ldapConfig.sLoginDN,
ldapConfig.sPwd);
config.setSchema(null);
final SSLUtil clientSslUtil = new SSLUtil(new TrustAllTrustManager());
config.setListenerConfigs(
InMemoryListenerConfig.createLDAPConfig("LDAP", // Listener name
InetAddress.getByName("localhost"), // Listen address. (null = listen on all interfaces)
ldapConfig.port, // Listen port (0 = automatically choose an available port)
clientSslUtil.createSSLSocketFactory()));
server = new InMemoryDirectoryServer(config);
server.importFromLDIF(true, ldapConfig.ldif);
server.startListening();
}
public static void startIfNotRunning (String ldapConfigFilename)
throws LDAPException, GeneralSecurityException,
UnknownHostException {
LDAPConfig ldapConfig = new LDAPConfig(ldapConfigFilename);
startIfNotRunning(ldapConfig);
}
public static void stop () {
if (server != null) {
server.shutDown(true);
server = null;
}
}
}