From 7ba0ec1e871a1f7b5a40b3272e860ade13038e95 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 06 Apr 2011 17:25:23 -0400
Subject: [PATCH] Added placeholder for Admin links on main page.

---
 src/com/gitblit/GitBlitServer.java |   98 ++++++++++++++++++++++++++-----------------------
 1 files changed, 52 insertions(+), 46 deletions(-)

diff --git a/src/com/gitblit/GitBlitServer.java b/src/com/gitblit/GitBlitServer.java
index ae542e8..9991a75 100644
--- a/src/com/gitblit/GitBlitServer.java
+++ b/src/com/gitblit/GitBlitServer.java
@@ -40,7 +40,6 @@
 import org.eclipse.jetty.webapp.WebAppContext;
 import org.eclipse.jgit.http.server.GitServlet;
 
-
 import com.beust.jcommander.JCommander;
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.ParameterException;
@@ -134,7 +133,7 @@
 			Connector httpConnector = createConnector(params.useNIO, params.port);
 			connectors.add(httpConnector);
 		}
-		
+
 		if (params.securePort > 0) {
 			if (new File("keystore").exists()) {
 				Connector secureConnector = createSSLConnector(params.useNIO, params.securePort, params.storePassword);
@@ -176,51 +175,58 @@
 		wicketFilter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, wicketPathSpec);
 		rootContext.addFilter(wicketFilter, wicketPathSpec, FilterMapping.DEFAULT);
 
-		// GIT Servlet
-		String gitServletPathSpec = "/git/*";
-		ServletHolder gitServlet = rootContext.addServlet(GitServlet.class, gitServletPathSpec);
-		gitServlet.setInitParameter("base-path", params.repositoriesFolder);
-		gitServlet.setInitParameter("export-all", params.exportAll ? "1" : "0");
-
-		String realmUsers = params.realmFile;
-
-		// Authentication Realm
 		Handler handler;
-		if (realmUsers != null && new File(realmUsers).exists() && params.authenticateAccess) {
-			List<String> list = StoredSettings.getStrings("gitRoles");
-			String[] roles;
-			if (list.size() == 0) {
-				roles = new String[] { "*" };
+
+		// Git Servlet
+		ServletHolder gitServlet = null;
+		String gitServletPathSpec = "/git/*";
+		if (StoredSettings.getBoolean("allowPushPull", true)) {
+			gitServlet = rootContext.addServlet(GitServlet.class, gitServletPathSpec);
+			gitServlet.setInitParameter("base-path", params.repositoriesFolder);
+			gitServlet.setInitParameter("export-all", params.exportAll ? "1" : "0");
+			String realmUsers = params.realmFile;
+
+			if (realmUsers != null && new File(realmUsers).exists() && params.authenticatePushPull) {
+				// Authenticate Pull/Push
+				List<String> list = StoredSettings.getStrings("gitRoles");
+				String[] roles;
+				if (list.size() == 0) {
+					roles = new String[] { "*" };
+				} else {
+					roles = list.toArray(new String[list.size()]);
+				}
+				logger.info("Authentication required for git servlet pull/push access");
+				logger.info("Setting up realm from " + realmUsers);
+				HashLoginService loginService = new HashLoginService(Constants.NAME, realmUsers);
+
+				Constraint constraint = new Constraint();
+				constraint.setName("auth");
+				constraint.setAuthenticate(true);
+				constraint.setRoles(roles);
+
+				ConstraintMapping mapping = new ConstraintMapping();
+				mapping.setPathSpec(gitServletPathSpec);
+				mapping.setConstraint(constraint);
+
+				ConstraintSecurityHandler security = new ConstraintSecurityHandler();
+				security.addConstraintMapping(mapping);
+				for (String role : roles) {
+					security.addRole(role);
+				}
+				security.setAuthenticator(new BasicAuthenticator());
+				security.setLoginService(loginService);
+				security.setStrict(false);
+
+				security.setHandler(rootContext);
+
+				handler = security;
 			} else {
-				roles = list.toArray(new String[list.size()]);
+				// Anonymous Pull/Push
+				logger.info("Setting up anonymous git servlet pull/push access");
+				handler = rootContext;
 			}
-			logger.info("Authentication required for GIT access");
-			logger.info("Setting up realm from " + realmUsers);
-			HashLoginService loginService = new HashLoginService(Constants.NAME, realmUsers);
-
-			Constraint constraint = new Constraint();
-			constraint.setName("auth");
-			constraint.setAuthenticate(true);
-			constraint.setRoles(roles);
-
-			ConstraintMapping mapping = new ConstraintMapping();
-			mapping.setPathSpec(gitServletPathSpec);
-			mapping.setConstraint(constraint);
-
-			ConstraintSecurityHandler security = new ConstraintSecurityHandler();
-			security.addConstraintMapping(mapping);
-			for (String role : roles) {
-				security.addRole(role);
-			}
-			security.setAuthenticator(new BasicAuthenticator());
-			security.setLoginService(loginService);
-			security.setStrict(false);
-
-			security.setHandler(rootContext);
-
-			handler = security;
 		} else {
-			logger.info("Setting up anonymous access");
+			logger.info("Git servlet pull/push disabled");
 			handler = rootContext;
 		}
 
@@ -356,7 +362,7 @@
 		/*
 		 * GIT Servlet Parameters
 		 */
-		@Parameter(names = { "--repos" }, description = "GIT Repositories Folder")
+		@Parameter(names = { "--repos" }, description = "Git Repositories Folder")
 		public String repositoriesFolder = StoredSettings.getString("repositoriesFolder", "repos");
 
 		@Parameter(names = { "--exportAll" }, description = "Export All Found Repositories")
@@ -365,8 +371,8 @@
 		/*
 		 * Authentication Parameters
 		 */
-		@Parameter(names = { "--authenticateAccess" }, description = "Authenticate GIT access")
-		public Boolean authenticateAccess = StoredSettings.getBoolean("authenticateAccess", true);
+		@Parameter(names = { "--authenticatePushPull" }, description = "Authenticate Git Push/Pull access")
+		public Boolean authenticatePushPull = StoredSettings.getBoolean("authenticatePushPull", true);
 
 		@Parameter(names = { "--realm" }, description = "Users Realm Hash File")
 		public String realmFile = StoredSettings.getString("realmFile", "users.properties");

--
Gitblit v1.9.1