Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. private String getClientIP() {
  2. String xfHeader = request.getRemoteAddr();
  3. if (StringUtils.isBlank(xfHeader) || xfHeader.equals("127.0.0.1")) {
  4. return request.getHeader("X-Forwarded-For");
  5. }
  6. return xfHeader.split(",")[0];
  7. }
  8.  
  9. zuul:
  10. ignoreSecurityHeaders: false
  11. routes:
  12. app:
  13. path: /app/**
  14. sensitiveHeaders:
  15. url: http://localhost:8082/app/
  16. server:
  17. compression:
  18. enabled: true
  19. port: 80
  20.  
  21. package smartHomeWebsite;
  22.  
  23. import java.util.Optional;
  24.  
  25. import org.springframework.cloud.netflix.zuul.filters.Route;
  26. import org.springframework.cloud.netflix.zuul.filters.RouteLocator;
  27. import org.springframework.stereotype.Component;
  28. import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
  29. import org.springframework.web.util.UrlPathHelper;
  30.  
  31. import com.netflix.util.Pair;
  32. import com.netflix.zuul.ZuulFilter;
  33. import com.netflix.zuul.context.RequestContext;
  34.  
  35. @Component
  36. public class LocationHeaderRewritingFilter extends ZuulFilter {
  37.  
  38. private final UrlPathHelper urlPathHelper = new UrlPathHelper();
  39. private final RouteLocator routeLocator;
  40.  
  41. public LocationHeaderRewritingFilter(RouteLocator routeLocator) {
  42. this.routeLocator = routeLocator;
  43. }
  44.  
  45. @Override
  46. public String filterType() {
  47. return "post";
  48. }
  49.  
  50. @Override
  51. public int filterOrder() {
  52. return 100;
  53. }
  54.  
  55. public boolean shouldFilter() {
  56. return extractLocationHeader(RequestContext.getCurrentContext()).isPresent();
  57. }
  58.  
  59. public Object run() {
  60. RequestContext ctx = RequestContext.getCurrentContext();
  61. Route route = routeLocator.getMatchingRoute(urlPathHelper.getPathWithinApplication(ctx.getRequest()));
  62. if (route != null) {
  63. Pair<String, String> lh = extractLocationHeader(ctx).get();
  64. lh.setSecond(lh.second().replace(route.getLocation(),
  65. ServletUriComponentsBuilder.fromCurrentContextPath().path(route.getPrefix()).build().toUriString()));
  66. }
  67. return null;
  68. }
  69.  
  70.  
  71. private Optional<Pair<String, String>> extractLocationHeader(RequestContext ctx) {
  72.  
  73. return ctx.getZuulResponseHeaders()
  74. .stream()
  75. .filter(p -> "Location".equals(p.first()))
  76. .findFirst();
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement