Merge branch 'develop' into feature/gitlab-webhook
# Conflicts: # src/main/java/com/onixbyte/deltaforceguide/config/AppConfig.java
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.deltaforceguide.config;
|
||||||
|
|
||||||
|
import com.onixbyte.deltaforceguide.interceptor.TrafficInterceptor;
|
||||||
import com.onixbyte.deltaforceguide.interceptor.GitLabWebhookInterceptor;
|
import com.onixbyte.deltaforceguide.interceptor.GitLabWebhookInterceptor;
|
||||||
import com.onixbyte.deltaforceguide.properties.AppProperties;
|
import com.onixbyte.deltaforceguide.properties.AppProperties;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -12,17 +13,22 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||||||
@EnableConfigurationProperties(AppProperties.class)
|
@EnableConfigurationProperties(AppProperties.class)
|
||||||
public class AppConfig implements WebMvcConfigurer {
|
public class AppConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
|
private final TrafficInterceptor trafficInterceptor;
|
||||||
|
|
||||||
private final GitLabWebhookInterceptor gitLabWebhookInterceptor;
|
private final GitLabWebhookInterceptor gitLabWebhookInterceptor;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public AppConfig(
|
public AppConfig(
|
||||||
|
TrafficInterceptor trafficInterceptor,
|
||||||
GitLabWebhookInterceptor gitLabWebhookInterceptor
|
GitLabWebhookInterceptor gitLabWebhookInterceptor
|
||||||
) {
|
) {
|
||||||
|
this.trafficInterceptor = trafficInterceptor;
|
||||||
this.gitLabWebhookInterceptor = gitLabWebhookInterceptor;
|
this.gitLabWebhookInterceptor = gitLabWebhookInterceptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
|
registry.addInterceptor(trafficInterceptor);
|
||||||
registry.addInterceptor(gitLabWebhookInterceptor)
|
registry.addInterceptor(gitLabWebhookInterceptor)
|
||||||
.addPathPatterns("/webhook/gitlab");
|
.addPathPatterns("/webhook/gitlab");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.onixbyte.deltaforceguide.interceptor;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.jspecify.annotations.NonNull;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.servlet.HandlerInterceptor;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class TrafficInterceptor implements HandlerInterceptor {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(TrafficInterceptor.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean preHandle(
|
||||||
|
@NonNull HttpServletRequest request,
|
||||||
|
@NonNull HttpServletResponse response,
|
||||||
|
@NonNull Object handler
|
||||||
|
) {
|
||||||
|
var ip = resolveClientIp(request);
|
||||||
|
var method = request.getMethod();
|
||||||
|
var uri = request.getRequestURI();
|
||||||
|
var query = request.getQueryString();
|
||||||
|
var contentType = request.getContentType();
|
||||||
|
var contentLength = request.getContentLength();
|
||||||
|
var userAgent = request.getHeader("User-Agent");
|
||||||
|
|
||||||
|
log.info("Request method={}, uri={}, query={}, ip={}, content-type={}, content-length={}, user-agent={}",
|
||||||
|
method, uri, query, ip, contentType, contentLength, userAgent);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveClientIp(HttpServletRequest request) {
|
||||||
|
var xForwardedFor = request.getHeader("X-Forwarded-For");
|
||||||
|
if (xForwardedFor != null && !xForwardedFor.isBlank()) {
|
||||||
|
return xForwardedFor.split(",")[0].trim();
|
||||||
|
}
|
||||||
|
var xRealIp = request.getHeader("X-Real-IP");
|
||||||
|
if (xRealIp != null && !xRealIp.isBlank()) {
|
||||||
|
return xRealIp.trim();
|
||||||
|
}
|
||||||
|
return request.getRemoteAddr();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user