From 67ba8f57e15ddf8d8dece57a276e37a4b3ef7f01 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 31 Oct 2014 10:36:52 -0400
Subject: [PATCH] Allow finer-grained determination of available transport preferences

---
 src/main/java/com/gitblit/manager/ServicesManager.java |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/gitblit/manager/ServicesManager.java b/src/main/java/com/gitblit/manager/ServicesManager.java
index 7185854..69e5e40 100644
--- a/src/main/java/com/gitblit/manager/ServicesManager.java
+++ b/src/main/java/com/gitblit/manager/ServicesManager.java
@@ -166,7 +166,7 @@
 			AccessPermission permission = user.getRepositoryPermission(repository).permission;
 			if (permission.exceeds(AccessPermission.NONE)) {
 				Transport transport = Transport.fromString(request.getScheme());
-				if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(transport)) {
+				if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(transport)) {
 					// downgrade the repo permission for this transport
 					// because it is not an acceptable PUSH transport
 					permission = AccessPermission.CLONE;
@@ -180,7 +180,7 @@
 		if (!StringUtils.isEmpty(sshDaemonUrl)) {
 			AccessPermission permission = user.getRepositoryPermission(repository).permission;
 			if (permission.exceeds(AccessPermission.NONE)) {
-				if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(Transport.SSH)) {
+				if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(Transport.SSH)) {
 					// downgrade the repo permission for this transport
 					// because it is not an acceptable PUSH transport
 					permission = AccessPermission.CLONE;
@@ -195,7 +195,7 @@
 		if (!StringUtils.isEmpty(gitDaemonUrl)) {
 			AccessPermission permission = getGitDaemonAccessPermission(user, repository);
 			if (permission.exceeds(AccessPermission.NONE)) {
-				if (permission.atLeast(AccessPermission.PUSH) && !acceptPush(Transport.GIT)) {
+				if (permission.atLeast(AccessPermission.PUSH) && !acceptsPush(Transport.GIT)) {
 					// downgrade the repo permission for this transport
 					// because it is not an acceptable PUSH transport
 					permission = AccessPermission.CLONE;
@@ -272,7 +272,8 @@
 	 */
 	@Override
 	public boolean isServingRepositories() {
-		return isServingHTTP()
+		return isServingHTTPS()
+				|| isServingHTTP()
 				|| isServingGIT()
 				|| isServingSSH();
 	}
@@ -282,7 +283,19 @@
 	 */
 	@Override
 	public boolean isServingHTTP() {
-		return settings.getBoolean(Keys.git.enableGitServlet, true);
+		return settings.getBoolean(Keys.git.enableGitServlet, true)
+				&& ((gitblit.getStatus().isGO && settings.getInteger(Keys.server.httpPort, 0) > 0)
+						|| !gitblit.getStatus().isGO);
+	}
+
+	/* (non-Javadoc)
+	 * @see com.gitblit.manager.IServicesManager#isServingHTTPS()
+	 */
+	@Override
+	public boolean isServingHTTPS() {
+		return settings.getBoolean(Keys.git.enableGitServlet, true)
+				&& ((gitblit.getStatus().isGO && settings.getInteger(Keys.server.httpsPort, 0) > 0)
+						|| !gitblit.getStatus().isGO);
 	}
 
 	/* (non-Javadoc)
@@ -330,7 +343,8 @@
 		}
 	}
 
-	protected boolean acceptPush(Transport byTransport) {
+	@Override
+	public boolean acceptsPush(Transport byTransport) {
 		if (byTransport == null) {
 			logger.info("Unknown transport, push rejected!");
 			return false;

--
Gitblit v1.9.1