blob: 79a946229e1a763513891f111c09c5a45123d0a1 [file] [log] [blame]
package de.ids_mannheim.korap.authentication;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class LDAPConfig {
public final boolean useSSL;
public final String host;
public final int port;
public final String searchBase;
public final String sLoginDN;
public final String searchFilter;
public final String sPwd;
public final String trustStorePath;
public final String additionalCipherSuites;
public final boolean useEmbeddedServer;
public final String emailAttribute;
public final String ldif;
public final String authFilter;
public final String userNotBlockedFilter;
public LDAPConfig (String ldapConfigFilename)
throws LdapConfigurationException {
Map<String, String> ldapConfig = null;
try {
ldapConfig = loadProp(ldapConfigFilename);
}
catch (IOException e) {
System.out.println(
"Error: LDAPAuth.login: cannot load Property file!");
}
useSSL = Boolean
.parseBoolean(ldapConfig.getOrDefault("useSSL", "false"));
host = ldapConfig.getOrDefault("host", "localhost");
port = Integer.parseInt(
ldapConfig.getOrDefault("port", (useSSL ? "636" : "389")));
searchBase = getConfigOrThrow(ldapConfig, "searchBase");
sLoginDN = getConfigOrThrow(ldapConfig, "sLoginDN");
searchFilter = getConfigOrThrow(ldapConfig, "searchFilter");
authFilter = ldapConfig.getOrDefault("authFilter", null);
userNotBlockedFilter = ldapConfig.getOrDefault("userNotBlockedFilter",
null);
sPwd = ldapConfig.getOrDefault("pwd", "");
trustStorePath = ldapConfig.getOrDefault("trustStore", "");
additionalCipherSuites = ldapConfig
.getOrDefault("additionalCipherSuites", "");
useEmbeddedServer = Boolean.parseBoolean(
ldapConfig.getOrDefault("useEmbeddedServer", "false"));
emailAttribute = ldapConfig.getOrDefault("emailAttribute", "mail");
ldif = ldapConfig.getOrDefault("ldifFile", null);
}
static HashMap<String, String> typeCastConvert (Properties prop) {
Map<String, String> step2 = (Map<String, String>) (Map) prop;
return new HashMap<>(step2);
}
public static HashMap<String, String> loadProp (String sConfFile)
throws IOException {
FileInputStream in;
Properties prop;
try {
in = new FileInputStream(sConfFile);
}
catch (IOException ex) {
System.err.printf(
"Error: LDAP.loadProp: cannot load Property file '%s'!\n",
sConfFile);
ex.printStackTrace();
return null;
}
prop = new Properties();
try {
prop.load(in);
return typeCastConvert(prop);
}
catch (IOException ex) {
ex.printStackTrace();
}
return new HashMap<>();
}
private String getConfigOrThrow (Map<String, String> ldapConfig,
String attribute) throws LdapConfigurationException {
String value = ldapConfig.get(attribute);
if (value != null)
return value;
else
throw new LdapConfigurationException(attribute + " is not set");
}
private class LdapConfigurationException extends RuntimeException {
public LdapConfigurationException (String s) {
super(s);
}
}
}