blob: 92ae6d6190bdffe3d74a766a963c0a49a4d8d244 [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);
}
}
}