From 4e84166db5c5538e3984d9d2d6bb1f9902e65ee0 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 04 Nov 2014 17:38:17 -0500 Subject: [PATCH] Merged #217 "Exclude SSLv3 from Gitblit GO https protocols" --- src/main/java/com/gitblit/servlet/GitFilter.java | 52 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java index c44f7ef..b29fdb6 100644 --- a/src/main/java/com/gitblit/servlet/GitFilter.java +++ b/src/main/java/com/gitblit/servlet/GitFilter.java @@ -17,19 +17,19 @@ import java.text.MessageFormat; -import javax.inject.Inject; -import javax.inject.Singleton; +import com.google.inject.Inject; +import com.google.inject.Singleton; +import javax.servlet.http.HttpServletRequest; -import com.gitblit.Constants; +import com.gitblit.Constants.AccessRestrictionType; +import com.gitblit.Constants.AuthorizationControl; import com.gitblit.GitBlitException; import com.gitblit.IStoredSettings; import com.gitblit.Keys; -import com.gitblit.Constants.AccessRestrictionType; -import com.gitblit.Constants.AuthorizationControl; -import com.gitblit.Keys.git; +import com.gitblit.manager.IAuthenticationManager; +import com.gitblit.manager.IFederationManager; import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; -import com.gitblit.manager.IAuthenticationManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -52,16 +52,22 @@ protected static final String[] suffixes = { gitReceivePack, gitUploadPack, "/info/refs", "/HEAD", "/objects" }; - private final IStoredSettings settings; + private IStoredSettings settings; + + private IFederationManager federationManager; @Inject public GitFilter( + IStoredSettings settings, IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager) { + IRepositoryManager repositoryManager, + IFederationManager federationManager) { super(runtimeManager, authenticationManager, repositoryManager); - this.settings = runtimeManager.getSettings(); + + this.settings = settings; + this.federationManager = federationManager; } /** @@ -115,6 +121,21 @@ } } return null; + } + + /** + * Returns the user making the request, if the user has authenticated. + * + * @param httpRequest + * @return user + */ + @Override + protected UserModel getUser(HttpServletRequest httpRequest) { + UserModel user = authenticationManager.authenticate(httpRequest, requiresClientCertificate()); + if (user == null) { + user = federationManager.authenticate(httpRequest); + } + return user; } /** @@ -181,15 +202,8 @@ return false; } if (action.equals(gitReceivePack)) { - // Push request - if (user.canPush(repository)) { - return true; - } else { - // user is unauthorized to push to this repository - logger.warn(MessageFormat.format("user {0} is not authorized to push to {1}", - user.username, repository)); - return false; - } + // push permissions are enforced in the receive pack + return true; } else if (action.equals(gitUploadPack)) { // Clone request if (user.canClone(repository)) { -- Gitblit v1.9.1