From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-gateway/src/main/java/jnpf/util/ReactorUtil.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/jnpf-gateway/src/main/java/jnpf/util/ReactorUtil.java b/jnpf-gateway/src/main/java/jnpf/util/ReactorUtil.java
new file mode 100644
index 0000000..962228f
--- /dev/null
+++ b/jnpf-gateway/src/main/java/jnpf/util/ReactorUtil.java
@@ -0,0 +1,43 @@
+package jnpf.util;
+
+import cn.dev33.satoken.context.model.SaRequest;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+
+public class ReactorUtil {
+
+    public static String getIpAddr(SaRequest serverHttpRequest) {
+        String xIp = serverHttpRequest.getHeader("X-Real-IP");
+        String xFor = serverHttpRequest.getHeader("X-Forwarded-For");
+        if (StringUtil.isNotEmpty(xFor) && !"unKnown".equalsIgnoreCase(xFor)) {
+            int index = xFor.indexOf(",");
+            if (index != -1) {
+                return xFor.substring(0, index);
+            } else {
+                return xFor;
+            }
+        }
+        xFor = xIp;
+        if (StringUtil.isNotEmpty(xFor) && !"unKnown".equalsIgnoreCase(xFor)) {
+            return xFor;
+        }
+        if (StringUtil.isBlank(xFor) || "unknown".equalsIgnoreCase(xFor)) {
+            xFor = serverHttpRequest.getHeader("Proxy-Client-IP");
+        }
+        if (StringUtil.isBlank(xFor) || "unknown".equalsIgnoreCase(xFor)) {
+            xFor = serverHttpRequest.getHeader("WL-Proxy-Client-IP");
+        }
+        if (StringUtil.isBlank(xFor) || "unknown".equalsIgnoreCase(xFor)) {
+            xFor = serverHttpRequest.getHeader("HTTP_CLIENT_IP");
+        }
+        if (StringUtil.isBlank(xFor) || "unknown".equalsIgnoreCase(xFor)) {
+            xFor = serverHttpRequest.getHeader("HTTP_X_FORWARDED_FOR");
+        }
+        if (StringUtil.isBlank(xFor) || "unknown".equalsIgnoreCase(xFor)) {
+            if(serverHttpRequest.getSource() instanceof ServerHttpRequest) {
+                xFor = ((ServerHttpRequest)serverHttpRequest.getSource()).getRemoteAddress().getAddress().getHostAddress();
+            }
+        }
+        String ip = "0:0:0:0:0:0:0:1".equals(xFor) ? "127.0.0.1" : xFor;
+        return ip;
+    }
+}

--
Gitblit v1.8.0