Skip to content

Commit 4fd6ad0

Browse files
committed
new: check for client IP address also in X-Forwarded-For header
1 parent 75f1486 commit 4fd6ad0

File tree

1 file changed

+18
-7
lines changed
  • server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/util

1 file changed

+18
-7
lines changed

server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/util/NetworkUtils.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,37 @@
1010
import java.net.InetAddress;
1111
import java.net.InetSocketAddress;
1212
import java.util.Optional;
13+
import java.util.Set;
1314

1415
@Slf4j
1516
public class NetworkUtils {
1617

18+
private static final String[] CLIENT_IP_HEADERS = { "X-Forwarded-For", "X-Real-IP" };
1719
public static String getRemoteIp(ServerWebExchange serverWebExchange) {
1820
ServerHttpRequest request = serverWebExchange.getRequest();
1921
HttpHeaders headers = request.getHeaders();
20-
String xRealIp = headers.getFirst("X-Real-IP");
21-
if (StringUtils.isNotBlank(xRealIp)) {
22-
return xRealIp;
23-
}
24-
String remoteIp = headers.getFirst("RemoteIp");
25-
if (StringUtils.isNotBlank(remoteIp)) {
26-
return remoteIp;
22+
23+
/** Try to find remote id in headers **/
24+
String foundHeader;
25+
for (String header : CLIENT_IP_HEADERS) {
26+
foundHeader = getMatchingKey(header, headers.keySet());
27+
if (foundHeader != null) {
28+
log.debug("Found client IP in header: {}", foundHeader);
29+
return headers.getFirst(foundHeader);
30+
}
2731
}
32+
2833
log.debug("get remote ip from remoteAddress , header {}", JsonUtils.toJson(headers));
2934
return Optional.ofNullable(serverWebExchange.getRequest().getRemoteAddress())
3035
.map(InetSocketAddress::getAddress)
3136
.map(InetAddress::getHostAddress)
3237
.orElse("");
3338
}
3439

40+
private static String getMatchingKey(String key, Set<String> keys) {
41+
return keys.stream()
42+
.filter(headerKey -> StringUtils.equalsIgnoreCase(key, headerKey))
43+
.findFirst()
44+
.orElse(null);
45+
}
3546
}

0 commit comments

Comments
 (0)