diff options
author | Anton Tananaev <anton@traccar.org> | 2023-05-15 15:41:55 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2023-05-15 15:41:55 -0700 |
commit | d5717272c664b6e09408f31a8448c80a0f380ddb (patch) | |
tree | a1e4f34b30d33795fb8cc9b92b7802ad1e4707bb /src/main/java/org/traccar/web/OverrideFilter.java | |
parent | 599abc3523b93f83281d44b109676b1b0ed602f5 (diff) | |
download | trackermap-server-d5717272c664b6e09408f31a8448c80a0f380ddb.tar.gz trackermap-server-d5717272c664b6e09408f31a8448c80a0f380ddb.tar.bz2 trackermap-server-d5717272c664b6e09408f31a8448c80a0f380ddb.zip |
Handle modern paths
Diffstat (limited to 'src/main/java/org/traccar/web/OverrideFilter.java')
-rw-r--r-- | src/main/java/org/traccar/web/OverrideFilter.java | 43 |
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); + } } } |