extreact ldap cofig
This commit is contained in:
parent
565913903a
commit
0d15cbf294
108
src/main/java/de/jalin/ldapadmin/ldap/LDAPConfig.java
Normal file
108
src/main/java/de/jalin/ldapadmin/ldap/LDAPConfig.java
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
package de.jalin.ldapadmin.ldap;
|
||||||
|
|
||||||
|
import de.jalin.ldapadmin.server.LDAPUriParser;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
public class LDAPConfig {
|
||||||
|
|
||||||
|
private static LDAPConfig config = null;
|
||||||
|
|
||||||
|
private String ldapProviderUrl;
|
||||||
|
private String ldapSecurityPrincipal;
|
||||||
|
private String ldapSecurityPassword;
|
||||||
|
private String ldapDistinguishedName;
|
||||||
|
private String ldapHost;
|
||||||
|
private String ldapPort;
|
||||||
|
private boolean ldapUseTLS;
|
||||||
|
private String smtpFromAddress;
|
||||||
|
private String smtpHost;
|
||||||
|
private String smtpPort;
|
||||||
|
|
||||||
|
private LDAPConfig() {
|
||||||
|
ldapProviderUrl = "ldap://localhost:10389/dc=domain,dc=example,dc=com";
|
||||||
|
ldapDistinguishedName = "dc=domain,dc=example,dc=com";
|
||||||
|
ldapHost = "localhost";
|
||||||
|
ldapPort = "10389";
|
||||||
|
ldapUseTLS = false;
|
||||||
|
ldapSecurityPrincipal = "uid=admin,ou=system";
|
||||||
|
ldapSecurityPassword = "secret";
|
||||||
|
smtpHost = "localhost";
|
||||||
|
smtpPort = "25";
|
||||||
|
smtpFromAddress = "nobody@example.com";
|
||||||
|
try {
|
||||||
|
final Properties props = loadConfig();
|
||||||
|
ldapProviderUrl = props.getProperty("provider.url", ldapProviderUrl);
|
||||||
|
ldapSecurityPrincipal = props.getProperty("security.principal", ldapSecurityPrincipal);
|
||||||
|
ldapSecurityPassword = props.getProperty("security.password", ldapSecurityPassword);
|
||||||
|
smtpHost = props.getProperty("smtp.host", smtpHost);
|
||||||
|
smtpPort = props.getProperty("smtp.port", smtpPort);
|
||||||
|
smtpFromAddress = props.getProperty("smtp.from", smtpFromAddress);
|
||||||
|
final LDAPUriParser uriParser = new LDAPUriParser(ldapProviderUrl);
|
||||||
|
ldapDistinguishedName = uriParser.getDn();
|
||||||
|
ldapHost = uriParser.getHost();
|
||||||
|
ldapPort = uriParser.getPort();
|
||||||
|
ldapUseTLS = uriParser.isUseTLS();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
Logger.getLogger(LDAPConfig.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LDAPConfig getConfig() {
|
||||||
|
if (config == null) {
|
||||||
|
config = new LDAPConfig();
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapProviderUrl() {
|
||||||
|
return ldapProviderUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapSecurityPrincipal() {
|
||||||
|
return ldapSecurityPrincipal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapSecurityPassword() {
|
||||||
|
return ldapSecurityPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapDistinguishedName() {
|
||||||
|
return ldapDistinguishedName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapHost() {
|
||||||
|
return ldapHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLdapPort() {
|
||||||
|
return ldapPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLdapUseTLS() {
|
||||||
|
return ldapUseTLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpHost() {
|
||||||
|
return smtpHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpPort() {
|
||||||
|
return smtpPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpFromAddress() {
|
||||||
|
return smtpFromAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadConfig() throws IOException {
|
||||||
|
final InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config.properties");
|
||||||
|
Properties config = new Properties();
|
||||||
|
config.load(inputStream);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,8 +13,10 @@ import javax.servlet.http.HttpSession;
|
|||||||
|
|
||||||
import de.jalin.ldapadmin.beans.Group;
|
import de.jalin.ldapadmin.beans.Group;
|
||||||
import de.jalin.ldapadmin.beans.User;
|
import de.jalin.ldapadmin.beans.User;
|
||||||
|
import de.jalin.ldapadmin.ldap.LDAPConfig;
|
||||||
import de.jalin.ldapadmin.ldap.LDAPSession;
|
import de.jalin.ldapadmin.ldap.LDAPSession;
|
||||||
import de.jalin.ldapadmin.ldap.LDAPSessionException;
|
import de.jalin.ldapadmin.ldap.LDAPSessionException;
|
||||||
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class AbstractLDAPServlet extends HttpServlet {
|
public class AbstractLDAPServlet extends HttpServlet {
|
||||||
@ -27,7 +29,7 @@ public class AbstractLDAPServlet extends HttpServlet {
|
|||||||
private SortedMap<String, Group> groups;
|
private SortedMap<String, Group> groups;
|
||||||
|
|
||||||
protected LDAPSession ldapSession;
|
protected LDAPSession ldapSession;
|
||||||
protected Properties config;
|
protected LDAPConfig config;
|
||||||
|
|
||||||
protected void loadData() {
|
protected void loadData() {
|
||||||
users = new TreeMap<>();
|
users = new TreeMap<>();
|
||||||
@ -45,14 +47,11 @@ public class AbstractLDAPServlet extends HttpServlet {
|
|||||||
@Override
|
@Override
|
||||||
public void init() throws ServletException {
|
public void init() throws ServletException {
|
||||||
super.init();
|
super.init();
|
||||||
final InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config.properties");
|
|
||||||
config = new Properties();
|
|
||||||
try {
|
try {
|
||||||
config.load(inputStream);
|
config = LDAPConfig.getConfig();
|
||||||
ldapSession = new LDAPSession(config.getProperty("provider.url"), config.getProperty("security.principal"), config.getProperty("security.password"));
|
ldapSession = new LDAPSession(config.getLdapProviderUrl(), config.getLdapSecurityPrincipal(), config.getLdapSecurityPassword());
|
||||||
} catch (IOException | LDAPSessionException e) {
|
} catch (LDAPSessionException ex) {
|
||||||
LOG.severe(e.getMessage());
|
Logger.getLogger(AbstractLDAPServlet.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
throw new ServletException(e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
package de.jalin.ldapadmin.web;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.security.KeyManagementException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.cert.CertificateException;
|
|
||||||
import java.security.cert.X509Certificate;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
|
||||||
import javax.net.ssl.TrustManager;
|
|
||||||
import javax.net.ssl.X509TrustManager;
|
|
||||||
|
|
||||||
public class NaiveTrustManager implements X509TrustManager {
|
|
||||||
|
|
||||||
private static final SSLContext SSL_CONTEXT;
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
SSL_CONTEXT = SSLContext.getInstance("TLSv1.2");
|
|
||||||
SSL_CONTEXT.init(null, new TrustManager[]{new NaiveTrustManager()}, null);
|
|
||||||
SSLContext.setDefault(SSL_CONTEXT);
|
|
||||||
} catch (NoSuchAlgorithmException | KeyManagementException e) {
|
|
||||||
throw new RuntimeException("Unable to initialise SSL context", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
|
|
||||||
return SSL_CONTEXT.getSocketFactory().createSocket(host, port);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
|
|
||||||
throws CertificateException {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
|
|
||||||
throws CertificateException {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public X509Certificate[] getAcceptedIssuers() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -25,6 +25,7 @@ import de.jalin.ldapadmin.beans.User;
|
|||||||
import de.jalin.ldapadmin.ldap.LDAPSessionException;
|
import de.jalin.ldapadmin.ldap.LDAPSessionException;
|
||||||
import de.jalin.ldapadmin.ldap.SimplePasswordException;
|
import de.jalin.ldapadmin.ldap.SimplePasswordException;
|
||||||
import de.jalin.ldapadmin.ldap.UsersDAO;
|
import de.jalin.ldapadmin.ldap.UsersDAO;
|
||||||
|
import org.apache.commons.lang.CharEncoding;
|
||||||
|
|
||||||
@WebServlet(name = "ResetPassword", urlPatterns = {"/passwordreset"}, loadOnStartup = 1)
|
@WebServlet(name = "ResetPassword", urlPatterns = {"/passwordreset"}, loadOnStartup = 1)
|
||||||
public class ResetPasswordServlet extends AbstractLDAPServlet {
|
public class ResetPasswordServlet extends AbstractLDAPServlet {
|
||||||
@ -38,9 +39,9 @@ public class ResetPasswordServlet extends AbstractLDAPServlet {
|
|||||||
@Override
|
@Override
|
||||||
public void init() throws ServletException {
|
public void init() throws ServletException {
|
||||||
super.init();
|
super.init();
|
||||||
smtpHost = config.getProperty("smtp.host", "localhost");
|
smtpHost = config.getSmtpHost();
|
||||||
smtpPort = config.getProperty("smtp.port", "25");
|
smtpPort = config.getSmtpPort();
|
||||||
smtpFrom = config.getProperty("smtp.from", "nobody@localhost");
|
smtpFrom = config.getSmtpFromAddress();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -164,7 +165,7 @@ public class ResetPasswordServlet extends AbstractLDAPServlet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void smtpSend(final String smtpHost, final String smtpPort, final Messages messages, final String fromAddress, final String toAddress, final String subject, final String text) throws IOException {
|
private static void smtpSend(final String smtpHost, final String smtpPort, final Messages messages, final String fromAddress, final String toAddress, final String subject, final String text) throws IOException {
|
||||||
final SMTPClient client = new SMTPClient();
|
final SMTPClient client = new SMTPClient(CharEncoding.ISO_8859_1);
|
||||||
final String canonicalHostName = InetAddress.getLocalHost().getHostName();
|
final String canonicalHostName = InetAddress.getLocalHost().getHostName();
|
||||||
client.connect(smtpHost, Integer.parseInt(smtpPort));
|
client.connect(smtpHost, Integer.parseInt(smtpPort));
|
||||||
int reply = client.getReplyCode();
|
int reply = client.getReplyCode();
|
||||||
@ -180,7 +181,7 @@ public class ResetPasswordServlet extends AbstractLDAPServlet {
|
|||||||
}
|
}
|
||||||
try (PrintWriter wr = new PrintWriter(sendMessageData)) {
|
try (PrintWriter wr = new PrintWriter(sendMessageData)) {
|
||||||
final SimpleSMTPHeader header = new SimpleSMTPHeader(fromAddress, toAddress, subject);
|
final SimpleSMTPHeader header = new SimpleSMTPHeader(fromAddress, toAddress, subject);
|
||||||
header.addHeaderField("Content-Type", "text/plain; charset=ISO-8859-15");
|
header.addHeaderField("Content-Type", "text/plain; charset=ISO-8859-1");
|
||||||
header.addHeaderField("Content-Transfer-Encoding", "8bit");
|
header.addHeaderField("Content-Transfer-Encoding", "8bit");
|
||||||
wr.write(header.toString());
|
wr.write(header.toString());
|
||||||
wr.write(text);
|
wr.write(text);
|
||||||
|
@ -2,3 +2,4 @@ provider.url=ldap://localhost:10389/dc=domain,dc=example,dc=com
|
|||||||
security.principal=uid=admin,ou=system
|
security.principal=uid=admin,ou=system
|
||||||
security.password=streng-geheim
|
security.password=streng-geheim
|
||||||
smtp.host=localhost
|
smtp.host=localhost
|
||||||
|
smtp.from=nobody@example.com
|
||||||
|
@ -3,10 +3,6 @@
|
|||||||
<session-config>
|
<session-config>
|
||||||
<tracking-mode>COOKIE</tracking-mode>
|
<tracking-mode>COOKIE</tracking-mode>
|
||||||
</session-config>
|
</session-config>
|
||||||
<context-param>
|
|
||||||
<param-name>uri</param-name>
|
|
||||||
<param-value>ldap://localhost:10389/dc=domain,dc=example,dc=com</param-value>
|
|
||||||
</context-param>
|
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>default</servlet-name>
|
<servlet-name>default</servlet-name>
|
||||||
<url-pattern>/css/*</url-pattern>
|
<url-pattern>/css/*</url-pattern>
|
||||||
|
Loading…
Reference in New Issue
Block a user