Skip to content

Commit 3990e05

Browse files
genussSteKoe
andauthored
Add support for additional paths for HomepageForwardingFilterConfig (#2136)
* Add support for excluding additional paths for HomepageForwardingFilterConfig * chore: checkstyle + imports Co-authored-by: Stephan Köninger <[email protected]>
1 parent 1acf87d commit 3990e05

File tree

7 files changed

+21
-9
lines changed

7 files changed

+21
-9
lines changed

spring-boot-admin-server-ui/src/main/java/de/codecentric/boot/admin/server/ui/config/AdminServerUiAutoConfiguration.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ public HomepageForwardingFilterConfig homepageForwardingFilterConfig() throws IO
160160
.collect(Collectors.toList());
161161
routesIncludes.add("");
162162

163-
List<String> routesExcludes = DEFAULT_UI_ROUTE_EXCLUDES.stream()
163+
List<String> routesExcludes = Stream
164+
.concat(DEFAULT_UI_ROUTE_EXCLUDES.stream(), this.adminUi.getAdditionalRouteExcludes().stream())
164165
.map((path) -> webfluxBasePathSet ? webFluxBasePath + path : this.adminServer.path(path))
165166
.collect(Collectors.toList());
166167

@@ -217,8 +218,9 @@ public HomepageForwardingFilterConfig homepageForwardingFilterConfig() throws IO
217218
.scan(this.adminUi.getExtensionResourceLocations());
218219
List<String> routesIncludes = Stream.concat(DEFAULT_UI_ROUTES.stream(), extensionRoutes.stream())
219220
.map(this.adminServer::path).collect(Collectors.toList());
220-
List<String> routesExcludes = DEFAULT_UI_ROUTE_EXCLUDES.stream().map(this.adminServer::path)
221-
.collect(Collectors.toList());
221+
List<String> routesExcludes = Stream
222+
.concat(DEFAULT_UI_ROUTE_EXCLUDES.stream(), this.adminUi.getAdditionalRouteExcludes().stream())
223+
.map(this.adminServer::path).collect(Collectors.toList());
222224

223225
return new HomepageForwardingFilterConfig(homepage, routesIncludes, routesExcludes);
224226
}

spring-boot-admin-server-ui/src/main/java/de/codecentric/boot/admin/server/ui/config/AdminServerUiProperties.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ public class AdminServerUiProperties {
120120

121121
private PollTimer pollTimer = new PollTimer();
122122

123+
/**
124+
* Additional routes to exclude from home page redirecting filter. Requests to these
125+
* routes will not redirected to home page
126+
*/
127+
private List<String> additionalRouteExcludes = new ArrayList<>();
128+
123129
@lombok.Data
124130
public static class PollTimer {
125131

spring-boot-admin-server-ui/src/test/java/de/codecentric/boot/admin/server/ui/config/ReactiveAdminServerUiAutoConfigurationAdminContextPathTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public class ReactiveAdminServerUiAutoConfigurationAdminContextPathTest
2929
protected ReactiveWebApplicationContextRunner getContextRunner() {
3030
return new ReactiveWebApplicationContextRunner()
3131
.withPropertyValues("--spring.boot.admin.ui.available-languages=de",
32-
"--spring.boot.admin.contextPath=test")
32+
"--spring.boot.admin.contextPath=test",
33+
"--spring.boot.admin.ui.additional-route-excludes[0]=/instances/*/actuator/some-extension/**")
3334
.withBean(AdminServerProperties.class).withBean(WebFluxProperties.class)
3435
.withConfiguration(AutoConfigurations.of(AdminServerUiAutoConfiguration.class));
3536
}

spring-boot-admin-server-ui/src/test/java/de/codecentric/boot/admin/server/ui/config/ReactiveAdminServerUiAutoConfigurationBothPathsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public class ReactiveAdminServerUiAutoConfigurationBothPathsTest extends Reactiv
2828
protected ReactiveWebApplicationContextRunner getContextRunner() {
2929
return new ReactiveWebApplicationContextRunner()
3030
.withPropertyValues("--spring.boot.admin.ui.available-languages=de",
31-
"--spring.boot.admin.contextPath=different", "--spring.webflux.base-path=test")
31+
"--spring.boot.admin.contextPath=different", "--spring.webflux.base-path=test",
32+
"--spring.boot.admin.ui.additional-route-excludes[0]=/instances/*/actuator/some-extension/**")
3233
.withBean(AdminServerProperties.class).withBean(WebFluxProperties.class)
3334
.withConfiguration(AutoConfigurations.of(AdminServerUiAutoConfiguration.class));
3435
}

spring-boot-admin-server-ui/src/test/java/de/codecentric/boot/admin/server/ui/config/ReactiveAdminServerUiAutoConfigurationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public abstract class ReactiveAdminServerUiAutoConfigurationTest {
4747

4848
@ParameterizedTest
4949
@CsvSource({ "/test/extensions/myextension", "/test/instances/1/actuator/heapdump",
50-
"/test/instances/1/actuator/logfile" })
50+
"/test/instances/1/actuator/logfile", "/test/instances/1/actuator/some-extension/file.html" })
5151
public void contextPathIsRespectedInExcludedRoutes(String routeExcludes) {
5252
MockServerHttpRequest serverHttpRequest = MockServerHttpRequest.get(routeExcludes)
5353
.header(HttpHeaders.ACCEPT, MediaType.TEXT_HTML_VALUE).build();

spring-boot-admin-server-ui/src/test/java/de/codecentric/boot/admin/server/ui/config/ReactiveAdminServerUiAutoConfigurationWebfluxBasePathTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public class ReactiveAdminServerUiAutoConfigurationWebfluxBasePathTest
2828
@Override
2929
protected ReactiveWebApplicationContextRunner getContextRunner() {
3030
return new ReactiveWebApplicationContextRunner()
31-
.withPropertyValues("--spring.boot.admin.ui.available-languages=de", "--spring.webflux.base-path=test")
31+
.withPropertyValues("--spring.boot.admin.ui.available-languages=de", "--spring.webflux.base-path=test",
32+
"--spring.boot.admin.ui.additional-route-excludes[0]=/instances/*/actuator/some-extension/**")
3233
.withBean(AdminServerProperties.class).withBean(WebFluxProperties.class)
3334
.withConfiguration(AutoConfigurations.of(AdminServerUiAutoConfiguration.class));
3435
}

spring-boot-admin-server-ui/src/test/java/de/codecentric/boot/admin/server/ui/config/ServletAdminServerUiAutoConfigurationTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@
4545
public class ServletAdminServerUiAutoConfigurationTest implements WithAssertions {
4646

4747
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
48-
.withPropertyValues("--spring.boot.admin.ui.available-languages=de", "--spring.boot.admin.contextPath=test")
48+
.withPropertyValues("--spring.boot.admin.ui.available-languages=de", "--spring.boot.admin.contextPath=test",
49+
"--spring.boot.admin.ui.additional-route-excludes[0]=/instances/*/actuator/some-extension/**")
4950
.withBean(AdminServerProperties.class)
5051
.withConfiguration(AutoConfigurations.of(AdminServerUiAutoConfiguration.class));
5152

5253
@ParameterizedTest
5354
@CsvSource({ "/test/extensions/myextension", "/test/instances/1/actuator/heapdump",
54-
"/test/instances/1/actuator/logfile" })
55+
"/test/instances/1/actuator/logfile", "/test/instances/1/actuator/some-extension/file.html" })
5556
public void contextPathIsRespectedInExcludedRoutes(String routeExcludes) {
5657
MockHttpServletRequest httpServletRequest = spy(new MockHttpServletRequest("GET", routeExcludes));
5758
httpServletRequest.addHeader(HttpHeaders.ACCEPT, MediaType.TEXT_HTML_VALUE);

0 commit comments

Comments
 (0)