From 11201762a7accf468b6479c10018d3ced6f54389 Mon Sep 17 00:00:00 2001 From: Julien Roy Date: Mon, 29 Dec 2014 23:35:35 +0100 Subject: [PATCH] Eureka dashboard controller path mapping can be configured or disabled --- .../eureka/server/EurekaController.java | 10 ++- .../server/EurekaServerConfiguration.java | 4 +- .../resources/templates/eureka/header.ftl | 7 +- .../src/main/wro/wro.xml | 2 +- .../server/ApplicationContextTests.java | 7 ++ .../ApplicationDashboardDisabledTests.java | 44 ++++++++++++ .../server/ApplicationDashboardPathTests.java | 72 +++++++++++++++++++ .../server/ApplicationServletPathTests.java | 7 ++ 8 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationDashboardDisabledTests.java create mode 100644 spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationDashboardPathTests.java diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java index 8fa5921b6..70a1d11f0 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java @@ -12,6 +12,7 @@ import com.netflix.eureka.resources.StatusResource; import com.netflix.eureka.util.StatusInfo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -26,12 +27,16 @@ import java.util.*; * @author Spencer Gibb */ @Controller +@RequestMapping("${eureka.dashboard.path:/}") public class EurekaController { - @Autowired + @Value("${eureka.dashboard.path:/}") + private String dashboardPath = ""; + + @Autowired ServerProperties serverProperties; - @RequestMapping(value = "/", method = RequestMethod.GET) + @RequestMapping(method = RequestMethod.GET) public String status(HttpServletRequest request, Map model) { populateBase(request, model); @@ -86,6 +91,7 @@ public class EurekaController { model.put("time", new Date()); model.put("basePath", basePath); + model.put("dashboardPath", dashboardPath); populateHeader(model); diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerConfiguration.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerConfiguration.java index f2daa4dfb..d4c4bb61a 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerConfiguration.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerConfiguration.java @@ -3,6 +3,7 @@ package org.springframework.cloud.netflix.eureka.server; import javax.servlet.Filter; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.embedded.FilterRegistrationBean; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EurekaServerConfigBean; @@ -26,6 +27,7 @@ import com.sun.jersey.spi.container.servlet.ServletContainer; public class EurekaServerConfiguration extends WebMvcConfigurerAdapter { @Bean + @ConditionalOnProperty(prefix = "eureka.dashboard", name = "enabled", matchIfMissing = true) public EurekaController eurekaController() { return new EurekaController(); } @@ -36,7 +38,7 @@ public class EurekaServerConfiguration extends WebMvcConfigurerAdapter { bean.setFilter(new ServletContainer()); bean.setOrder(Ordered.LOWEST_PRECEDENCE); bean.addInitParameter("com.sun.jersey.config.property.WebPageContentRegex", - EurekaServerConfigBean.DEFAULT_PREFIX + "/(fonts|images|css)/.*"); + EurekaServerConfigBean.DEFAULT_PREFIX + "/(fonts|images|css|js)/.*"); bean.addInitParameter("com.sun.jersey.config.property.packages", "com.netflix.discovery;com.netflix.eureka"); bean.setUrlPatterns(Lists.newArrayList(EurekaServerConfigBean.DEFAULT_PREFIX diff --git a/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/header.ftl b/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/header.ftl index bafe98bf9..b1be17c2e 100644 --- a/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/header.ftl +++ b/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/header.ftl @@ -1,7 +1,8 @@ +<#import "/spring.ftl" as spring />