summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/servlet
diff options
context:
space:
mode:
authorJames Moger <james.moger@gmail.com>2016-01-25 11:55:58 -0500
committerJames Moger <james.moger@gmail.com>2016-01-25 11:55:58 -0500
commit252dc07d7f85cc344b5919bb7c6166ef84b2102e (patch)
treed997964fb207d0bb321570ae76ed3a7281f502d2 /src/main/java/com/gitblit/servlet
parent040091508e69df76b1504d10089444e8d6bae2ab (diff)
parent46f33f87750573713509fbdbd0fc2ae51dc12044 (diff)
downloadgitblit-252dc07d7f85cc344b5919bb7c6166ef84b2102e.tar.gz
gitblit-252dc07d7f85cc344b5919bb7c6166ef84b2102e.zip
Merge pull request #988 from gitblit/976-raw-download-filestore-item
Fix for #976 - Filestore links via browser
Diffstat (limited to 'src/main/java/com/gitblit/servlet')
-rw-r--r--src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java7
-rw-r--r--src/main/java/com/gitblit/servlet/DownloadZipServlet.java18
-rw-r--r--src/main/java/com/gitblit/servlet/FilestoreServlet.java5
-rw-r--r--src/main/java/com/gitblit/servlet/GitFilter.java14
-rw-r--r--src/main/java/com/gitblit/servlet/RawServlet.java2
5 files changed, 30 insertions, 16 deletions
diff --git a/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java b/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
index b9cb0885..e1d76db0 100644
--- a/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
+++ b/src/main/java/com/gitblit/servlet/AccessRestrictionFilter.java
@@ -133,10 +133,11 @@ public abstract class AccessRestrictionFilter extends AuthenticationFilter {
/**
* Allows authentication header to be altered based on the action requested
* Default is WWW-Authenticate
+ * @param httpRequest
* @param action
* @return authentication type header
*/
- protected String getAuthenticationHeader(String action) {
+ protected String getAuthenticationHeader(HttpServletRequest httpRequest, String action) {
return "WWW-Authenticate";
}
@@ -192,7 +193,7 @@ public abstract class AccessRestrictionFilter extends AuthenticationFilter {
logger.info(MessageFormat.format("ARF: CREATE CHALLENGE {0}", fullUrl));
}
- httpResponse.setHeader(getAuthenticationHeader(urlRequestType), CHALLENGE);
+ httpResponse.setHeader(getAuthenticationHeader(httpRequest, urlRequestType), CHALLENGE);
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
return;
} else {
@@ -239,7 +240,7 @@ public abstract class AccessRestrictionFilter extends AuthenticationFilter {
if (runtimeManager.isDebugMode()) {
logger.info(MessageFormat.format("ARF: CHALLENGE {0}", fullUrl));
}
- httpResponse.setHeader(getAuthenticationHeader(urlRequestType), CHALLENGE);
+ httpResponse.setHeader(getAuthenticationHeader(httpRequest, urlRequestType), CHALLENGE);
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
return;
} else {
diff --git a/src/main/java/com/gitblit/servlet/DownloadZipServlet.java b/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
index 07562561..319c4f91 100644
--- a/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
+++ b/src/main/java/com/gitblit/servlet/DownloadZipServlet.java
@@ -22,6 +22,7 @@ import java.util.Date;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
@@ -34,6 +35,7 @@ import org.slf4j.LoggerFactory;
import com.gitblit.Constants;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
+import com.gitblit.manager.IFilestoreManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.utils.CompressionUtils;
import com.gitblit.utils.JGitUtils;
@@ -57,6 +59,8 @@ public class DownloadZipServlet extends HttpServlet {
private IStoredSettings settings;
private IRepositoryManager repositoryManager;
+
+ private IFilestoreManager filestoreManager;
public static enum Format {
zip(".zip"), tar(".tar"), gz(".tar.gz"), xz(".tar.xz"), bzip2(".tar.bzip2");
@@ -78,9 +82,10 @@ public class DownloadZipServlet extends HttpServlet {
}
@Inject
- public DownloadZipServlet(IStoredSettings settings, IRepositoryManager repositoryManager) {
+ public DownloadZipServlet(IStoredSettings settings, IRepositoryManager repositoryManager, IFilestoreManager filestoreManager) {
this.settings = settings;
this.repositoryManager = repositoryManager;
+ this.filestoreManager = filestoreManager;
}
/**
@@ -169,22 +174,23 @@ public class DownloadZipServlet extends HttpServlet {
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
+
try {
switch (format) {
case zip:
- CompressionUtils.zip(r, basePath, objectId, response.getOutputStream());
+ CompressionUtils.zip(r, filestoreManager, basePath, objectId, response.getOutputStream());
break;
case tar:
- CompressionUtils.tar(r, basePath, objectId, response.getOutputStream());
+ CompressionUtils.tar(r, filestoreManager, basePath, objectId, response.getOutputStream());
break;
case gz:
- CompressionUtils.gz(r, basePath, objectId, response.getOutputStream());
+ CompressionUtils.gz(r, filestoreManager, basePath, objectId, response.getOutputStream());
break;
case xz:
- CompressionUtils.xz(r, basePath, objectId, response.getOutputStream());
+ CompressionUtils.xz(r, filestoreManager, basePath, objectId, response.getOutputStream());
break;
case bzip2:
- CompressionUtils.bzip2(r, basePath, objectId, response.getOutputStream());
+ CompressionUtils.bzip2(r, filestoreManager, basePath, objectId, response.getOutputStream());
break;
}
diff --git a/src/main/java/com/gitblit/servlet/FilestoreServlet.java b/src/main/java/com/gitblit/servlet/FilestoreServlet.java
index 8f303fcf..4af9084d 100644
--- a/src/main/java/com/gitblit/servlet/FilestoreServlet.java
+++ b/src/main/java/com/gitblit/servlet/FilestoreServlet.java
@@ -238,7 +238,10 @@ public class FilestoreServlet extends HttpServlet {
}
} else {
response.setStatus(responseObject.error.code);
- serialize(response, responseObject.error);
+
+ if (isMetaRequest) {
+ serialize(response, responseObject.error);
+ }
}
};
diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java
index 27408f02..9522893e 100644
--- a/src/main/java/com/gitblit/servlet/GitFilter.java
+++ b/src/main/java/com/gitblit/servlet/GitFilter.java
@@ -102,8 +102,8 @@ public class GitFilter extends AccessRestrictionFilter {
}
/**
- * Analyze the url and returns the action of the request. Return values are
- * either "/git-receive-pack" or "/git-upload-pack".
+ * Analyze the url and returns the action of the request. Return values are:
+ * "/git-receive-pack", "/git-upload-pack" or "/info/lfs".
*
* @param serverUrl
* @return action of the request
@@ -316,18 +316,22 @@ public class GitFilter extends AccessRestrictionFilter {
/**
* Git lfs action uses an alternative authentication header,
+ * dependent on the viewing method.
*
+ * @param httpRequest
* @param action
* @return
*/
@Override
- protected String getAuthenticationHeader(String action) {
+ protected String getAuthenticationHeader(HttpServletRequest httpRequest, String action) {
if (action.equals(gitLfs)) {
- return "LFS-Authenticate";
+ if (hasContentInRequestHeader(httpRequest, "Accept", FilestoreServlet.GIT_LFS_META_MIME)) {
+ return "LFS-Authenticate";
+ }
}
- return super.getAuthenticationHeader(action);
+ return super.getAuthenticationHeader(httpRequest, action);
}
/**
diff --git a/src/main/java/com/gitblit/servlet/RawServlet.java b/src/main/java/com/gitblit/servlet/RawServlet.java
index 897047d8..dca57730 100644
--- a/src/main/java/com/gitblit/servlet/RawServlet.java
+++ b/src/main/java/com/gitblit/servlet/RawServlet.java
@@ -364,7 +364,7 @@ public class RawServlet extends HttpServlet {
if (pathEntries.get(0).path.indexOf('/') > -1) {
// we are in a subdirectory, add parent directory link
String pp = URLEncoder.encode(requestedPath, Constants.ENCODING);
- pathEntries.add(0, new PathModel("..", pp + "/..", 0, FileMode.TREE.getBits(), null, null));
+ pathEntries.add(0, new PathModel("..", pp + "/..", null, 0, FileMode.TREE.getBits(), null, null));
}
}