From 0e44acbb2fec928a1606dc60f427a148fff405c9 Mon Sep 17 00:00:00 2001
From: Mohamed Ragab <moragab@gmail.com>
Date: Wed, 02 May 2012 11:15:01 -0400
Subject: [PATCH] Added a script to facilitate setting the proxy host and port and no proxy hosts, and then it concatenates all the java system properties for setting the java proxy configurations and puts the resulting string in an environment variable JAVA_PROXY_CONFIG, modified the scirpts gitblit,  gitblit-ubuntu, and gitblit-centos to source the java-proxy-config.sh script and then include the resulting java proxy configuration in the java command

---
 src/com/gitblit/wicket/GitBlitWebApp.java |  197 +++++++++++++++++++++++-------------------------
 1 files changed, 94 insertions(+), 103 deletions(-)

diff --git a/src/com/gitblit/wicket/GitBlitWebApp.java b/src/com/gitblit/wicket/GitBlitWebApp.java
index b869a05..eea17cf 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/com/gitblit/wicket/GitBlitWebApp.java
@@ -1,152 +1,143 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.gitblit.wicket;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Page;
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
 import org.apache.wicket.Session;
+import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.protocol.http.request.urlcompressing.UrlCompressingWebRequestProcessor;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
-import org.apache.wicket.request.IRequestCycleProcessor;
-import org.apache.wicket.request.target.coding.MixedParamUrlCodingStrategy;
-import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.http.server.resolver.FileResolver;
-import org.eclipse.jgit.http.server.resolver.ServiceNotEnabledException;
-import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-import com.gitblit.GitBlitServer;
-import com.gitblit.StoredSettings;
-import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.models.RepositoryModel;
+import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.wicket.pages.ActivityPage;
+import com.gitblit.wicket.pages.BlamePage;
 import com.gitblit.wicket.pages.BlobDiffPage;
 import com.gitblit.wicket.pages.BlobPage;
 import com.gitblit.wicket.pages.BranchesPage;
-import com.gitblit.wicket.pages.CommitPage;
 import com.gitblit.wicket.pages.CommitDiffPage;
+import com.gitblit.wicket.pages.CommitPage;
+import com.gitblit.wicket.pages.DocsPage;
+import com.gitblit.wicket.pages.FederationRegistrationPage;
+import com.gitblit.wicket.pages.GitSearchPage;
+import com.gitblit.wicket.pages.GravatarProfilePage;
+import com.gitblit.wicket.pages.HistoryPage;
 import com.gitblit.wicket.pages.LogPage;
+import com.gitblit.wicket.pages.LuceneSearchPage;
+import com.gitblit.wicket.pages.MarkdownPage;
+import com.gitblit.wicket.pages.MetricsPage;
 import com.gitblit.wicket.pages.PatchPage;
 import com.gitblit.wicket.pages.RawPage;
 import com.gitblit.wicket.pages.RepositoriesPage;
+import com.gitblit.wicket.pages.ReviewProposalPage;
 import com.gitblit.wicket.pages.SummaryPage;
 import com.gitblit.wicket.pages.TagPage;
 import com.gitblit.wicket.pages.TagsPage;
-import com.gitblit.wicket.pages.TicGitPage;
-import com.gitblit.wicket.pages.TicGitTicketPage;
+import com.gitblit.wicket.pages.TicketPage;
+import com.gitblit.wicket.pages.TicketsPage;
 import com.gitblit.wicket.pages.TreePage;
 
-
 public class GitBlitWebApp extends WebApplication {
-
-	public static int PAGING_ITEM_COUNT = 50;
-
-	Logger logger = LoggerFactory.getLogger(GitBlitWebApp.class);
-
-	FileResolver repositoryResolver;
-
-	private File repositories;
-
-	private boolean exportAll;
 
 	@Override
 	public void init() {
 		super.init();
 
+		// Setup page authorization mechanism
+		boolean useAuthentication = GitBlit.getBoolean(Keys.web.authenticateViewPages, false)
+				|| GitBlit.getBoolean(Keys.web.authenticateAdminPages, false);
+		if (useAuthentication) {
+			AuthorizationStrategy authStrategy = new AuthorizationStrategy();
+			getSecuritySettings().setAuthorizationStrategy(authStrategy);
+			getSecuritySettings().setUnauthorizedComponentInstantiationListener(authStrategy);
+		}
+
 		// Grab Browser info (like timezone, etc)
-		getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
+		if (GitBlit.getBoolean(Keys.web.useClientTimezone, false)) {
+			getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
+		}
+
+		// configure the resource cache duration to 90 days for deployment
+		if (!GitBlit.isDebugMode()) {
+			getResourceSettings().setDefaultCacheDuration(90 * 86400);
+		}
 
 		// setup the standard gitweb-ish urls
-		mount(new MixedParamUrlCodingStrategy("/summary", SummaryPage.class, new String[] { "r" }));
-		mount(new MixedParamUrlCodingStrategy("/log", LogPage.class, new String[] { "r", "h" }));
-		mount(new MixedParamUrlCodingStrategy("/tags", TagsPage.class, new String[] { "r" }));
-		mount(new MixedParamUrlCodingStrategy("/branches", BranchesPage.class, new String[] { "r" }));
-		mount(new MixedParamUrlCodingStrategy("/commit", CommitPage.class, new String[] { "r", "h" }));
-		mount(new MixedParamUrlCodingStrategy("/tag", TagPage.class, new String[] { "r", "h" }));
-		mount(new MixedParamUrlCodingStrategy("/tree", TreePage.class, new String[] { "r", "h", "f" }));
-		mount(new MixedParamUrlCodingStrategy("/blob", BlobPage.class, new String[] { "r", "h", "f" }));
-		mount(new MixedParamUrlCodingStrategy("/raw", RawPage.class, new String[] { "r", "h", "f" }));
-		mount(new MixedParamUrlCodingStrategy("/blobdiff", BlobDiffPage.class, new String[] { "r", "h", "f" }));
-		mount(new MixedParamUrlCodingStrategy("/commitdiff", CommitDiffPage.class, new String[] { "r", "h" }));
-		mount(new MixedParamUrlCodingStrategy("/patch", PatchPage.class, new String[] { "r", "h", "f" }));
-		
-		// setup extended urls
-		mount(new MixedParamUrlCodingStrategy("/ticgit", TicGitPage.class, new String[] { "p" }));
-		mount(new MixedParamUrlCodingStrategy("/ticgittkt", TicGitTicketPage.class, new String[] { "p", "f" }));
-		
-		repositories = new File(StoredSettings.getString("repositoriesFolder", "repos"));
-		exportAll = StoredSettings.getBoolean("exportAll", true);
-		repositoryResolver = new FileResolver(repositories, exportAll);
+		mount("/summary", SummaryPage.class, "r");
+		mount("/log", LogPage.class, "r", "h");
+		mount("/tags", TagsPage.class, "r");
+		mount("/branches", BranchesPage.class, "r");
+		mount("/commit", CommitPage.class, "r", "h");
+		mount("/tag", TagPage.class, "r", "h");
+		mount("/tree", TreePage.class, "r", "h", "f");
+		mount("/blob", BlobPage.class, "r", "h", "f");
+		mount("/raw", RawPage.class, "r", "h", "f");
+		mount("/blobdiff", BlobDiffPage.class, "r", "h", "f");
+		mount("/commitdiff", CommitDiffPage.class, "r", "h");
+		mount("/patch", PatchPage.class, "r", "h", "f");
+		mount("/history", HistoryPage.class, "r", "h", "f");
+		mount("/search", GitSearchPage.class);
+		mount("/metrics", MetricsPage.class, "r");
+		mount("/blame", BlamePage.class, "r", "h", "f");
+
+		// setup ticket urls
+		mount("/tickets", TicketsPage.class, "r");
+		mount("/ticket", TicketPage.class, "r", "h", "f");
+
+		// setup the markdown urls
+		mount("/docs", DocsPage.class, "r");
+		mount("/markdown", MarkdownPage.class, "r", "h", "f");
+
+		// federation urls
+		mount("/proposal", ReviewProposalPage.class, "t");
+		mount("/registration", FederationRegistrationPage.class, "u", "n");
+
+		mount("/activity", ActivityPage.class, "r", "h");
+		mount("/gravatar", GravatarProfilePage.class, "h");
+		mount("/lucene", LuceneSearchPage.class);
+	}
+
+	private void mount(String location, Class<? extends WebPage> clazz, String... parameters) {
+		if (parameters == null) {
+			parameters = new String[] {};
+		}
+		if (!GitBlit.getBoolean(Keys.web.mountParameters, true)) {
+			parameters = new String[] {};
+		}
+		mount(new GitblitParamUrlCodingStrategy(location, clazz, parameters));
 	}
 
 	@Override
 	public Class<? extends Page> getHomePage() {
 		return RepositoriesPage.class;
 	}
-
+	
 	@Override
 	public final Session newSession(Request request, Response response) {
 		return new GitBlitWebSession(request);
 	}
 
 	@Override
-	protected final IRequestCycleProcessor newRequestCycleProcessor() {
-		return new UrlCompressingWebRequestProcessor();
-	}
-
-	@Override
 	public final String getConfigurationType() {
-		if (GitBlitServer.isDebugMode())
+		if (GitBlit.isDebugMode()) {
 			return Application.DEVELOPMENT;
+		}
 		return Application.DEPLOYMENT;
-	}
-
-	public List<String> getRepositoryList() {
-		return JGitUtils.getRepositoryList(repositories, exportAll, StoredSettings.getBoolean("nestedRepositories", true));
-	}
-
-	public List<RepositoryModel> getRepositories(Request request) {
-		List<String> list = getRepositoryList();
-		ServletWebRequest servletWebRequest = (ServletWebRequest) request;
-		HttpServletRequest req = servletWebRequest.getHttpServletRequest();
-
-		List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
-		for (String repo : list) {
-			Repository r = getRepository(req, repo);
-			String description = JGitUtils.getRepositoryDescription(r);
-			String owner = JGitUtils.getRepositoryOwner(r);
-			Date lastchange = JGitUtils.getLastChange(r);
-			r.close();
-			repositories.add(new RepositoryModel(repo, description, owner, lastchange));
-		}
-		return repositories;
-	}
-
-	public Repository getRepository(HttpServletRequest req, String repositoryName) {
-		Repository r = null;
-		try {
-			r = repositoryResolver.open(req, repositoryName);
-		} catch (RepositoryNotFoundException e) {
-			r = null;
-			logger.error("Failed to find repository " + repositoryName);
-			e.printStackTrace();
-		} catch (ServiceNotEnabledException e) {
-			r = null;
-			e.printStackTrace();
-		}
-		return r;
-	}
-
-	public String getCloneUrl(String repositoryName) {
-		return StoredSettings.getString("cloneUrl", "https://localhost/git/") + repositoryName;
 	}
 
 	public static GitBlitWebApp get() {

--
Gitblit v1.9.1