|
@@ -11,6 +11,8 @@ package org.cryptomator.frontend.webdav;
|
|
|
import java.io.IOException;
|
|
|
import java.util.EnumSet;
|
|
|
|
|
|
+import javax.inject.Inject;
|
|
|
+import javax.inject.Singleton;
|
|
|
import javax.servlet.DispatcherType;
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServlet;
|
|
@@ -21,12 +23,24 @@ import org.cryptomator.frontend.webdav.filters.LoopbackFilter;
|
|
|
import org.eclipse.jetty.servlet.ServletContextHandler;
|
|
|
import org.eclipse.jetty.servlet.ServletHolder;
|
|
|
|
|
|
-/**
|
|
|
- * The server needs to respond to requests to the root resource, because Windows is stupid.
|
|
|
- */
|
|
|
-public class WindowsCompatibilityServlet extends HttpServlet {
|
|
|
+@Singleton
|
|
|
+class DefaultServlet extends HttpServlet {
|
|
|
|
|
|
private static final String ROOT_PATH = "/";
|
|
|
+ private static final String WILDCARD = "/*";
|
|
|
+
|
|
|
+ private final Tarpit tarpit;
|
|
|
+
|
|
|
+ @Inject
|
|
|
+ public DefaultServlet(Tarpit tarpit) {
|
|
|
+ this.tarpit = tarpit;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
|
+ tarpit.handle(req);
|
|
|
+ super.service(req, resp);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
@@ -36,11 +50,11 @@ public class WindowsCompatibilityServlet extends HttpServlet {
|
|
|
resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
|
|
|
}
|
|
|
|
|
|
- public static ServletContextHandler createServletContextHandler() {
|
|
|
+ public ServletContextHandler createServletContextHandler() {
|
|
|
final ServletContextHandler servletContext = new ServletContextHandler(null, ROOT_PATH, ServletContextHandler.NO_SESSIONS);
|
|
|
- final ServletHolder servletHolder = new ServletHolder(ROOT_PATH, WindowsCompatibilityServlet.class);
|
|
|
+ final ServletHolder servletHolder = new ServletHolder(ROOT_PATH, this);
|
|
|
servletContext.addServlet(servletHolder, ROOT_PATH);
|
|
|
- servletContext.addFilter(LoopbackFilter.class, ROOT_PATH, EnumSet.of(DispatcherType.REQUEST));
|
|
|
+ servletContext.addFilter(LoopbackFilter.class, WILDCARD, EnumSet.of(DispatcherType.REQUEST));
|
|
|
return servletContext;
|
|
|
}
|
|
|
|