/** * Copyright (c) 2008, MTV Networks */ package com.mtvi.plateng.hudson.ldap; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; /** * Class to store configuration for the plugin. * * @author justinedelson * */ public class Configuration { /** * Default value for the initialContextFactoryName property. Assumes a Sun * JDK. */ public static final String DEFAULT_INITIAL_CONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory"; /** * The base String for building distinguised name references. */ private String baseDN; /** * The distinguised name with which to bind to LDAP. Optional. */ private String bindDN; /** * The password to use when binding to LDAP. Optional. */ private String bindPassword; /** * The LDAP attribute which stores the user's email address. Typically * 'mail' or something similar to that. */ private String emailAttribute; /** * The class name of the InitialContextFactory implementation to use when * connecting to LDAP. */ private String initialContextFactoryName; /** * If true, the user's LDAP account will be found by searching through the * baseDN */ private boolean performSearch = false; /** * The LDAP attribute to use for searching. Usually 'uid' */ private String searchAttribute; /** * The LDAP server's URL. */ private String server; public String getBaseDN() { return baseDN; } public String getBindDN() { return bindDN; } public String getBindPassword() { return bindPassword; } public String getEmailAttribute() { return emailAttribute; } public String getInitialContextFactoryName() { return initialContextFactoryName != null ? initialContextFactoryName : DEFAULT_INITIAL_CONTEXT_FACTORY; } public String getSearchAttribute() { return searchAttribute; } public String getServer() { return server; } public boolean isBindCredentialsProvided() { return (bindDN != null) && (bindPassword != null); } public boolean isPerformSearch() { return performSearch; } public boolean isValid() { return (server != null) && (baseDN != null) && (searchAttribute != null) && (emailAttribute != null); } /** * Construct a user's distinguised name (DN) from their username. * * @param userName the user's username * @return the DN */ public String makeUserDN(String userName) { StringBuilder builder = new StringBuilder(); builder.append(getSearchAttribute()).append("=").append(userName); builder.append(",").append(getBaseDN()); return builder.toString(); } public void setBaseDN(String baseDN) { this.baseDN = baseDN; } public void setBindDN(String bindDN) { this.bindDN = bindDN; } public void setBindPassword(String bindPassword) { this.bindPassword = bindPassword; } public void setEmailAttribute(String emailAttribute) { this.emailAttribute = emailAttribute; } public void setInitialContextFactoryName(String initialContextFactoryName) { this.initialContextFactoryName = initialContextFactoryName; } public void setPerformSearch(boolean performSearch) { this.performSearch = performSearch; } public void setSearchAttribute(String searchAttribute) { this.searchAttribute = searchAttribute; } public void setServer(String server) { this.server = server; } /** * {@inheritDoc} */ @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("baseDN", baseDN) .append("bindDN", bindDN).append("bindPassword", bindPassword != null ? "xxxx" : null).append("emailAttribute", emailAttribute).append("initialContextFactoryName", initialContextFactoryName).append("performSearch", performSearch).append( "server", server).toString(); } }