Parcourir la source

Add ManagementServiceConfiguration

StrayWarrior il y a 6 mois
Parent
commit
ab6e74e8c1

+ 22 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/config/ManagementServiceConfiguration.java

@@ -0,0 +1,22 @@
+package com.tzld.longarticle.recommend.server.config;
+
+
+import org.apache.catalina.connector.Connector;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ManagementServiceConfiguration implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
+    @Value("${server.management.port:8081}")
+    private Integer port;
+
+    @Override
+    public void customize(TomcatServletWebServerFactory factory) {
+        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
+        connector.setScheme("http");
+        connector.setPort(port);
+        factory.addAdditionalTomcatConnectors(connector);
+    }
+}

+ 32 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/InternalApiFilter.java

@@ -0,0 +1,32 @@
+package com.tzld.longarticle.recommend.server.web;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class InternalApiFilter extends OncePerRequestFilter {
+    @Value("${server.management.port:8081}")
+    private Integer port;
+
+    private static final String INTERNAL_API_PATH = "/internal";
+
+    @Override
+    protected void doFilterInternal(HttpServletRequest request,
+                                    HttpServletResponse response,
+                                    FilterChain filterChain) throws ServletException, IOException {
+        if (request.getServletPath().startsWith(INTERNAL_API_PATH)) {
+            if (request.getServerPort() != port) {
+                response.sendError(HttpServletResponse.SC_FORBIDDEN);
+                return;
+            }
+        }
+        filterChain.doFilter(request, response);
+    }
+}