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