Handle Git LFS requests, with error message
We don't support Git LFS. This change adds a handler for POST requests to "<project>.git/info/lfs/objects/batch", and sends back a 406 response, with json data that the client can use to print a nice error message.
This commit is contained in:
@@ -130,6 +130,7 @@ public class GitBridgeServer {
|
||||
HandlerCollection handlers = new HandlerList();
|
||||
handlers.addHandler(new StatusHandler(bridge));
|
||||
handlers.addHandler(new HealthCheckHandler(bridge));
|
||||
handlers.addHandler(new GitLfsHandler(bridge));
|
||||
base.setHandler(handlers);
|
||||
return base;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package uk.ac.ic.wlgitbridge.server;
|
||||
|
||||
import org.eclipse.jetty.server.HttpConnection;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
import org.eclipse.jetty.server.handler.AbstractHandler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import uk.ac.ic.wlgitbridge.bridge.Bridge;
|
||||
import uk.ac.ic.wlgitbridge.util.Log;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class GitLfsHandler extends AbstractHandler {
|
||||
|
||||
private final Bridge bridge;
|
||||
|
||||
public GitLfsHandler(Bridge bridge) {
|
||||
this.bridge = bridge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(
|
||||
String target,
|
||||
Request baseRequest,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response
|
||||
) throws IOException {
|
||||
String method = baseRequest.getMethod();
|
||||
if (
|
||||
("POST".equals(method))
|
||||
&& target != null
|
||||
&& target.matches("^/[0-9a-z]+\\.git/info/lfs/objects/batch/?$")
|
||||
) {
|
||||
Log.info(method + " <- /<project>.git/info/lfs/objects/batch");
|
||||
response.setContentType("application/vnd.git-lfs+json");
|
||||
response.setStatus(406);
|
||||
response.getWriter().println("{\"message\": \"ERROR: Git LFS is not supported on Overleaf\"}");
|
||||
baseRequest.setHandled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user