From 23c416f30f4a1e69e76b70d71f6a9a7da4a020f1 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 18:58:09 -0400 Subject: [PATCH] Hook-up comprensive command cleanup (destroy) --- src/main/java/com/gitblit/git/GitblitReceivePackFactory.java | 64 +++++++++++++++++--------------- 1 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java index 2cdb985..41e348b 100644 --- a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java +++ b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java @@ -28,11 +28,11 @@ import com.gitblit.IStoredSettings; import com.gitblit.Keys; -import com.gitblit.manager.IRepositoryManager; -import com.gitblit.manager.IRuntimeManager; -import com.gitblit.manager.IUserManager; +import com.gitblit.manager.IGitblit; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.transport.git.GitDaemonClient; +import com.gitblit.transport.ssh.SshDaemonClient; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.StringUtils; @@ -49,23 +49,12 @@ private final IStoredSettings settings; - private final IRuntimeManager runtimeManager; + private final IGitblit gitblit; - private final IUserManager userManager; - - private final IRepositoryManager repositoryManager; - - public GitblitReceivePackFactory( - IRuntimeManager runtimeManager, - IUserManager userManager, - IRepositoryManager repositoryManager) { - + public GitblitReceivePackFactory(IGitblit gitblit) { super(); - this.settings = runtimeManager.getSettings(); - this.runtimeManager = runtimeManager; - this.userManager = userManager; - this.repositoryManager = repositoryManager; - + this.settings = gitblit.getSettings(); + this.gitblit = gitblit; } @Override @@ -76,21 +65,19 @@ String repositoryName = ""; String origin = ""; String gitblitUrl = ""; - String repositoryUrl = ""; int timeout = 0; if (req instanceof HttpServletRequest) { // http/https request may or may not be authenticated - HttpServletRequest request = (HttpServletRequest) req; - repositoryName = request.getAttribute("gitblitRepositoryName").toString(); - origin = request.getRemoteHost(); - gitblitUrl = HttpUtils.getGitblitURL(request); - repositoryUrl = request.getRequestURI(); + HttpServletRequest client = (HttpServletRequest) req; + repositoryName = client.getAttribute("gitblitRepositoryName").toString(); + origin = client.getRemoteHost(); + gitblitUrl = HttpUtils.getGitblitURL(client); // determine pushing user - String username = request.getRemoteUser(); + String username = client.getRemoteUser(); if (!StringUtils.isEmpty(username)) { - UserModel u = userManager.getUserModel(username); + UserModel u = gitblit.getUserModel(username); if (u != null) { user = u; } @@ -103,6 +90,12 @@ // set timeout from Git daemon timeout = client.getDaemon().getTimeout(); + } else if (req instanceof SshDaemonClient) { + // SSH request is always authenticated + SshDaemonClient client = (SshDaemonClient) req; + repositoryName = client.getRepositoryName(); + origin = client.getRemoteAddress().toString(); + user = client.getUser(); } boolean allowAnonymousPushes = settings.getBoolean(Keys.git.allowAnonymousPushes, false); @@ -111,11 +104,22 @@ throw new ServiceNotEnabledException(); } - final RepositoryModel repository = repositoryManager.getRepositoryModel(repositoryName); + String url = settings.getString(Keys.web.canonicalUrl, null); + if (StringUtils.isEmpty(url)) { + url = gitblitUrl; + } - final GitblitReceivePack rp = new GitblitReceivePack(runtimeManager, repositoryManager, db, repository, user); - rp.setGitblitUrl(gitblitUrl); - rp.setRepositoryUrl(repositoryUrl); + final RepositoryModel repository = gitblit.getRepositoryModel(repositoryName); + + // Determine which receive pack to use for pushes + final GitblitReceivePack rp; + if (gitblit.getTicketService().isAcceptingNewPatchsets(repository)) { + rp = new PatchsetReceivePack(gitblit, db, repository, user); + } else { + rp = new GitblitReceivePack(gitblit, db, repository, user); + } + + rp.setGitblitUrl(url); rp.setRefLogIdent(new PersonIdent(user.username, user.username + "@" + origin)); rp.setTimeout(timeout); -- Gitblit v1.9.1