aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/web/OverrideFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/web/OverrideFilter.java')
-rw-r--r--src/main/java/org/traccar/web/OverrideFilter.java43
1 files changed, 26 insertions, 17 deletions
diff --git a/src/main/java/org/traccar/web/OverrideFilter.java b/src/main/java/org/traccar/web/OverrideFilter.java
index 303c21253..708632bc1 100644
--- a/src/main/java/org/traccar/web/OverrideFilter.java
+++ b/src/main/java/org/traccar/web/OverrideFilter.java
@@ -27,6 +27,7 @@ import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -44,28 +45,36 @@ public class OverrideFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
- CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);
+ CharResponseWrapper wrappedResponse = new CharResponseWrapper((HttpServletResponse) response);
- chain.doFilter(request, wrapper);
+ chain.doFilter(request, wrappedResponse);
- Server server;
- try {
- server = permissionsServiceProvider.get().getServer();
- } catch (StorageException e) {
- throw new RuntimeException(e);
- }
+ byte[] bytes = wrappedResponse.getCapture();
+ if (wrappedResponse.getContentType().contains("text/html")
+ || ((HttpServletRequest) request).getPathInfo().endsWith("manifest.json")) {
+
+ Server server;
+ try {
+ server = permissionsServiceProvider.get().getServer();
+ } catch (StorageException e) {
+ throw new RuntimeException(e);
+ }
- String title = server.getString("title", "Traccar");
- String description = server.getString("description", "Traccar GPS Tracking System");
- String colorPrimary = server.getString("colorPrimary", "#1a237e");
+ String title = server.getString("title", "Traccar");
+ String description = server.getString("description", "Traccar GPS Tracking System");
+ String colorPrimary = server.getString("colorPrimary", "#1a237e");
- String alteredContent = wrapper.getCaptureAsString()
- .replace("${title}", title)
- .replace("${description}", description)
- .replace("${colorPrimary}", colorPrimary);
+ String alteredContent = new String(wrappedResponse.getCapture())
+ .replace("${title}", title)
+ .replace("${description}", description)
+ .replace("${colorPrimary}", colorPrimary);
- response.setContentLength(alteredContent.length());
- response.getWriter().write(alteredContent);
+ response.setContentLength(alteredContent.length());
+ response.getOutputStream().write(alteredContent.getBytes());
+
+ } else {
+ response.getOutputStream().write(bytes);
+ }
}
}