From d65a6baca9a20461f976a2455d70eecc7faf2db5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 26 Nov 2013 16:07:04 -0500 Subject: [PATCH] Update to Jetty 8.1.13 for Servlet 3 --- src/main/java/com/gitblit/GitFilter.java | 57 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/gitblit/GitFilter.java b/src/main/java/com/gitblit/GitFilter.java index 474fefa..f52963f 100644 --- a/src/main/java/com/gitblit/GitFilter.java +++ b/src/main/java/com/gitblit/GitFilter.java @@ -19,6 +19,8 @@ import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -27,9 +29,9 @@ * The GitFilter is an AccessRestrictionFilter which ensures that Git client * requests for push, clone, or view restricted repositories are authenticated * and authorized. - * + * * @author James Moger - * + * */ public class GitFilter extends AccessRestrictionFilter { @@ -42,8 +44,8 @@ /** * Extract the repository name from the url. - * - * @param url + * + * @param cloneUrl * @return repository name */ public static String getRepositoryName(String value) { @@ -59,7 +61,7 @@ /** * Extract the repository name from the url. - * + * * @param url * @return repository name */ @@ -71,7 +73,7 @@ /** * Analyze the url and returns the action of the request. Return values are * either "/git-receive-pack" or "/git-upload-pack". - * + * * @param serverUrl * @return action of the request */ @@ -92,20 +94,21 @@ } return null; } - + /** * Determine if a non-existing repository can be created using this filter. - * + * * @return true if the server allows repository creation on-push */ @Override protected boolean isCreationAllowed() { - return GitBlit.getBoolean(Keys.git.allowCreateOnPush, true); + IStoredSettings settings = GitBlit.getManager(IRuntimeManager.class).getSettings(); + return settings.getBoolean(Keys.git.allowCreateOnPush, true); } - + /** * Determine if the repository can receive pushes. - * + * * @param repository * @param action * @return true if the action may be performed @@ -119,12 +122,13 @@ @Override protected boolean requiresClientCertificate() { - return GitBlit.getBoolean(Keys.git.requiresClientCertificate, false); + IStoredSettings settings = GitBlit.getManager(IRuntimeManager.class).getSettings(); + return settings.getBoolean(Keys.git.requiresClientCertificate, false); } /** * Determine if the repository requires authentication. - * + * * @param repository * @param action * @return true if authentication required @@ -133,7 +137,7 @@ protected boolean requiresAuthentication(RepositoryModel repository, String action) { if (gitUploadPack.equals(action)) { // send to client - return repository.accessRestriction.atLeast(AccessRestrictionType.CLONE); + return repository.accessRestriction.atLeast(AccessRestrictionType.CLONE); } else if (gitReceivePack.equals(action)) { // receive from client return repository.accessRestriction.atLeast(AccessRestrictionType.PUSH); @@ -144,7 +148,7 @@ /** * Determine if the user can access the repository and perform the specified * action. - * + * * @param repository * @param user * @param action @@ -152,10 +156,11 @@ */ @Override protected boolean canAccess(RepositoryModel repository, UserModel user, String action) { - if (!GitBlit.getBoolean(Keys.git.enableGitServlet, true)) { + IStoredSettings settings = GitBlit.getManager(IRuntimeManager.class).getSettings(); + if (!settings.getBoolean(Keys.git.enableGitServlet, true)) { // Git Servlet disabled return false; - } + } if (action.equals(gitReceivePack)) { // Push request if (user.canPush(repository)) { @@ -179,11 +184,11 @@ } return true; } - + /** * An authenticated user with the CREATE role can create a repository on * push. - * + * * @param user * @param repository * @param action @@ -203,7 +208,7 @@ if (repository.contains("/../")) { logger.error(MessageFormat.format("Illegal relative path in repository name! {0}", repository)); return null; - } + } // confirm valid characters in repository name Character c = StringUtils.findInvalidCharacter(repository); @@ -223,15 +228,17 @@ model.accessRestriction = AccessRestrictionType.VIEW; } else { // common repository, user default server settings - model.authorizationControl = AuthorizationControl.fromName(GitBlit.getString(Keys.git.defaultAuthorizationControl, "")); - model.accessRestriction = AccessRestrictionType.fromName(GitBlit.getString(Keys.git.defaultAccessRestriction, "")); + IStoredSettings settings = GitBlit.getManager(IRuntimeManager.class).getSettings(); + model.authorizationControl = AuthorizationControl.fromName(settings.getString(Keys.git.defaultAuthorizationControl, "")); + model.accessRestriction = AccessRestrictionType.fromName(settings.getString(Keys.git.defaultAccessRestriction, "PUSH")); } // create the repository try { - GitBlit.self().updateRepositoryModel(model.name, model, true); + IRepositoryManager repositoryManager = GitBlit.getManager(IRepositoryManager.class); + repositoryManager.updateRepositoryModel(model.name, model, true); logger.info(MessageFormat.format("{0} created {1} ON-PUSH", user.username, model.name)); - return GitBlit.self().getRepositoryModel(model.name); + return repositoryManager.getRepositoryModel(model.name); } catch (GitBlitException e) { logger.error(MessageFormat.format("{0} failed to create repository {1} ON-PUSH!", user.username, model.name), e); } @@ -239,7 +246,7 @@ logger.warn(MessageFormat.format("{0} is not permitted to create repository {1} ON-PUSH!", user.username, repository)); } } - + // repository could not be created or action was not a push return null; } -- Gitblit v1.9.1