提交 77188bfc 编写于 作者: K Kohsuke Kawaguchi

LDAPBindSecurityRealm.groovy> can be now overridden in

$JENKINS_HOME if it exists.

See
http://jenkins.361315.n4.nabble.com/LDAPBindSecurityRealm-groovy-td3584243.html
上级 9075d827
...@@ -68,6 +68,8 @@ Upcoming changes</a> ...@@ -68,6 +68,8 @@ Upcoming changes</a>
<li class=bug> <li class=bug>
Fixed NPE in site generation when building a single Maven module Fixed NPE in site generation when building a single Maven module
(<a href="http://issues.jenkins-ci.org/browse/JENKINS-7577">issue 7577</a>) (<a href="http://issues.jenkins-ci.org/browse/JENKINS-7577">issue 7577</a>)
<li class=rfe>
<tt>LDAPBindSecurityRealm.groovy</tt> can be now overridden in <tt>$JENKINS_HOME</tt> if it exists.
<li class=rfe> <li class=rfe>
AJP port is customizable in RPM/OpenSUSE packages AJP port is customizable in RPM/OpenSUSE packages
(<a href="https://github.com/jenkinsci/jenkins/pull/149">pull request #149</a>) (<a href="https://github.com/jenkinsci/jenkins/pull/149">pull request #149</a>)
......
...@@ -54,6 +54,7 @@ import org.acegisecurity.userdetails.UsernameNotFoundException; ...@@ -54,6 +54,7 @@ import org.acegisecurity.userdetails.UsernameNotFoundException;
import org.acegisecurity.userdetails.ldap.LdapUserDetails; import org.acegisecurity.userdetails.ldap.LdapUserDetails;
import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl; import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
import org.apache.commons.collections.map.LRUMap; import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.io.input.AutoCloseInputStream;
import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.QueryParameter;
import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessException;
...@@ -66,6 +67,9 @@ import javax.naming.directory.Attributes; ...@@ -66,6 +67,9 @@ import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttributes; import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext; import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext; import javax.naming.directory.InitialDirContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
...@@ -349,7 +353,15 @@ public class LDAPSecurityRealm extends AbstractPasswordBasedSecurityRealm { ...@@ -349,7 +353,15 @@ public class LDAPSecurityRealm extends AbstractPasswordBasedSecurityRealm {
binding.setVariable("instance", this); binding.setVariable("instance", this);
BeanBuilder builder = new BeanBuilder(); BeanBuilder builder = new BeanBuilder();
builder.parse(Jenkins.getInstance().servletContext.getResourceAsStream("/WEB-INF/security/LDAPBindSecurityRealm.groovy"),binding); String fileName = "LDAPBindSecurityRealm.groovy";
try {
File override = new File(Jenkins.getInstance().getRootDir(), fileName);
builder.parse(
override.exists() ? new AutoCloseInputStream(new FileInputStream(override)) :
Jenkins.getInstance().servletContext.getResourceAsStream("/WEB-INF/security/"+ fileName),binding);
} catch (FileNotFoundException e) {
throw new Error("Failed to load "+fileName,e);
}
WebApplicationContext appContext = builder.createApplicationContext(); WebApplicationContext appContext = builder.createApplicationContext();
ldapTemplate = new LdapTemplate(findBean(InitialDirContextFactory.class, appContext)); ldapTemplate = new LdapTemplate(findBean(InitialDirContextFactory.class, appContext));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册