/**
* This file is part of git-as-svn. It is subject to the license terms
* in the LICENSE file found in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/gpl-2.0.html. No part of git-as-svn,
* including this file, may be copied, modified, propagated, or distributed
* except according to the terms contained in the LICENSE file.
*/
package svnserver.auth.ldap.config;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import svnserver.auth.UserDB;
import svnserver.auth.ldap.LdapUserDB;
import svnserver.config.UserDBConfig;
import svnserver.config.serializer.ConfigType;
import svnserver.context.SharedContext;
/**
* @author Marat Radchenko <marat@slonopotamus.org>
*/
@SuppressWarnings("FieldCanBeLocal")
@ConfigType("ldapUsers")
public final class LdapUserDBConfig implements UserDBConfig {
/**
* This is a URL whose format is defined by the JNDI provider.
* It is usually an LDAP URL that specifies the domain name of the directory server to connect to,
* and optionally the port number and distinguished name (DN) of the required root naming context.
*/
@NotNull
private String connectionUrl = "ldap://localhost:389/ou=groups,dc=mycompany,dc=com";
/**
* Bind configuration.
*/
@Nullable
private LdapBind bind;
/**
* Common part of search filter.
*/
@NotNull
private String searchFilter = "";
/**
* LDAP attribute, containing user login.
*/
@NotNull
private String loginAttribute = "sAMAccountName";
/**
* LDAP attribute, containing user name.
*/
@NotNull
private String nameAttribute = "name";
/**
* LDAP attribute, containing user email.
*/
@NotNull
private String emailAttribute = "mail";
/**
* Certificate for validation LDAP server with SSL connection.
*/
@Nullable
private String ldapCertPem;
/**
* Email addresses suffix for users without LDAP email.
* If empty - don't generate emails.
*/
@NotNull
private String fakeMailSuffix = "";
/**
* Maximum LDAP connections.
*/
private int maxConnections = 10;
@NotNull
public String getLoginAttribute() {
return loginAttribute;
}
public void setLoginAttribute(@NotNull String loginAttribute) {
this.loginAttribute = loginAttribute;
}
@NotNull
public String getEmailAttribute() {
return emailAttribute;
}
public void setEmailAttribute(@NotNull String emailAttribute) {
this.emailAttribute = emailAttribute;
}
@NotNull
public String getNameAttribute() {
return nameAttribute;
}
public void setNameAttribute(@NotNull String nameAttribute) {
this.nameAttribute = nameAttribute;
}
@NotNull
public String getSearchFilter() {
return searchFilter;
}
public void setSearchFilter(@NotNull String searchFilter) {
this.searchFilter = searchFilter;
}
@Nullable
public LdapBind getBind() {
return bind;
}
public void setBind(@Nullable LdapBind bind) {
this.bind = bind;
}
@NotNull
public String getConnectionUrl() {
return connectionUrl;
}
public void setConnectionUrl(@NotNull String connectionUrl) {
this.connectionUrl = connectionUrl;
}
@Nullable
public String getLdapCertPem() {
return ldapCertPem;
}
public void setLdapCertPem(@Nullable String ldapCertPem) {
this.ldapCertPem = ldapCertPem;
}
public int getMaxConnections() {
return maxConnections;
}
public void setMaxConnections(int maxConnections) {
this.maxConnections = maxConnections;
}
@NotNull
public String getFakeMailSuffix() {
return fakeMailSuffix;
}
public void setFakeMailSuffix(@NotNull String fakeMailSuffix) {
this.fakeMailSuffix = fakeMailSuffix;
}
@NotNull
@Override
public UserDB create(@NotNull SharedContext context) {
return new LdapUserDB(context, this);
}
}