From cacf8bff097fbb66a7be1bfe267b5da2605145f8 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:46 -0500 Subject: [PATCH] Use Dagger to inject managers into all filters and servlets --- src/main/java/com/gitblit/git/GitblitReceivePack.java | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gitblit/git/GitblitReceivePack.java b/src/main/java/com/gitblit/git/GitblitReceivePack.java index 090e541..44e2bef 100644 --- a/src/main/java/com/gitblit/git/GitblitReceivePack.java +++ b/src/main/java/com/gitblit/git/GitblitReceivePack.java @@ -45,8 +45,11 @@ import com.gitblit.Constants; import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.GitBlit; +import com.gitblit.IStoredSettings; import com.gitblit.Keys; import com.gitblit.client.Translation; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.ArrayUtils; @@ -88,14 +91,26 @@ protected GroovyScriptEngine gse; - public GitblitReceivePack(Repository db, RepositoryModel repository, UserModel user) { + private final IStoredSettings settings; + + private final IRepositoryManager repositoryManager; + + public GitblitReceivePack( + IRuntimeManager runtimeManager, + IRepositoryManager repositoryManager, + Repository db, + RepositoryModel repository, + UserModel user) { + super(db); + this.settings = runtimeManager.getSettings(); + this.repositoryManager = repositoryManager; this.repository = repository; this.user = user == null ? UserModel.ANONYMOUS : user; - this.groovyDir = GitBlit.getGroovyScriptsFolder(); + this.groovyDir = repositoryManager.getHooksFolder(); try { // set Grape root - File grapeRoot = GitBlit.getFileOrFolder(Keys.groovy.grapeFolder, "${baseFolder}/groovy/grape").getAbsoluteFile(); + File grapeRoot = repositoryManager.getGrapesFolder(); grapeRoot.mkdirs(); System.setProperty("grape.root", grapeRoot.getAbsolutePath()); this.gse = new GroovyScriptEngine(groovyDir.getAbsolutePath()); @@ -119,6 +134,14 @@ */ @Override public void onPreReceive(ReceivePack rp, Collection<ReceiveCommand> commands) { + + if (repository.isMirror) { + // repository is a mirror + for (ReceiveCommand cmd : commands) { + sendRejection(cmd, "Gitblit does not allow pushes to \"{0}\" because it is a mirror!", repository.name); + } + return; + } if (repository.isFrozen) { // repository is frozen/readonly @@ -226,7 +249,7 @@ } Set<String> scripts = new LinkedHashSet<String>(); - scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository)); + scripts.addAll(repositoryManager.getPreReceiveScriptsInherited(repository)); if (!ArrayUtils.isEmpty(repository.preReceiveScripts)) { scripts.addAll(repository.preReceiveScripts); } @@ -295,7 +318,7 @@ String msg = MessageFormat.format(template, branch); String prefix; if (StringUtils.isEmpty(repository.incrementalPushTagPrefix)) { - prefix = GitBlit.getString(Keys.git.defaultIncrementalPushTagPrefix, "r"); + prefix = settings.getString(Keys.git.defaultIncrementalPushTagPrefix, "r"); } else { prefix = repository.incrementalPushTagPrefix; } @@ -321,7 +344,7 @@ // run Groovy hook scripts Set<String> scripts = new LinkedHashSet<String>(); - scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository)); + scripts.addAll(repositoryManager.getPostReceiveScriptsInherited(repository)); if (!ArrayUtils.isEmpty(repository.postReceiveScripts)) { scripts.addAll(repository.postReceiveScripts); } @@ -389,14 +412,22 @@ LOGGER.error(text + " (" + user.username + ")"); } + protected void sendHeader(String msg, Object... objects) { + sendMessage("--->", msg, objects); + } + protected void sendMessage(String msg, Object... objects) { + sendMessage(" ", msg, objects); + } + + protected void sendMessage(String prefix, String msg, Object... objects) { String text; if (ArrayUtils.isEmpty(objects)) { text = msg; - super.sendMessage(msg); + super.sendMessage(prefix + msg); } else { text = MessageFormat.format(msg, objects); - super.sendMessage(text); + super.sendMessage(prefix + text); } LOGGER.info(text + " (" + user.username + ")"); } @@ -421,7 +452,7 @@ * @param commands * @param scripts */ - protected void runGroovy(Collection<ReceiveCommand> commands, Set<String> scripts) { + private void runGroovy(Collection<ReceiveCommand> commands, Set<String> scripts) { if (scripts == null || scripts.size() == 0) { // no Groovy scripts to execute return; -- Gitblit v1.9.1