diff options
author | Anton Tananaev <anton@traccar.org> | 2023-05-15 12:06:14 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2023-05-15 12:06:14 -0700 |
commit | e44e9f860b11a50b3e39e3895ea9ea5624282b78 (patch) | |
tree | 1fffb07d2b006243bf8f86e9f3c2cc0a25d20a6b /src/main/java/org/traccar/web/OverrideFilter.java | |
parent | 553527d9fbe689be243acbf219bed432f15c25e3 (diff) | |
download | trackermap-server-e44e9f860b11a50b3e39e3895ea9ea5624282b78.tar.gz trackermap-server-e44e9f860b11a50b3e39e3895ea9ea5624282b78.tar.bz2 trackermap-server-e44e9f860b11a50b3e39e3895ea9ea5624282b78.zip |
Add HTML branding overrides
Diffstat (limited to 'src/main/java/org/traccar/web/OverrideFilter.java')
-rw-r--r-- | src/main/java/org/traccar/web/OverrideFilter.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/web/OverrideFilter.java b/src/main/java/org/traccar/web/OverrideFilter.java new file mode 100644 index 000000000..cb69dfbfa --- /dev/null +++ b/src/main/java/org/traccar/web/OverrideFilter.java @@ -0,0 +1,71 @@ +/* + * Copyright 2023 Anton Tananaev (anton@traccar.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.web; + +import com.google.inject.Provider; +import org.traccar.api.security.PermissionsService; +import org.traccar.model.Server; +import org.traccar.storage.StorageException; + +import javax.inject.Inject; +import javax.inject.Singleton; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Singleton +public class OverrideFilter implements Filter { + + private final Provider<PermissionsService> permissionsServiceProvider; + + @Inject + public OverrideFilter(Provider<PermissionsService> permissionsServiceProvider) { + this.permissionsServiceProvider = permissionsServiceProvider; + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + + CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response); + + chain.doFilter(request, wrapper); + + Server server; + try { + server = permissionsServiceProvider.get().getServer(); + } catch (StorageException e) { + throw new RuntimeException(e); + } + + String title = server.getString("serverTitle", "Traccar"); + String description = server.getString("serverDescription", "Traccar GPS Tracking System"); + String colorPrimary = server.getString("serverColorPrimary", "#1a237e"); + + String alteredContent = wrapper.getCaptureAsString() + .replace("${title}", title) + .replace("${description}", description) + .replace("${colorPrimary}", colorPrimary); + + response.setContentLength(alteredContent.length()); + response.getWriter().write(alteredContent); + } + +} |