From b77abcbc0f17070a2a970e0c4aa5837e90f28e1f Mon Sep 17 00:00:00 2001 From: shikeying <pxzsky@163.com> Date: 星期三, 03 四月 2024 14:02:49 +0800 Subject: [PATCH] 提供ip转地区离线查询(未完成) --- walker-web/src/main/java/com/walker/web/util/IpUtils.java | 72 ++++++++++++++++++++++++++---------- 1 files changed, 52 insertions(+), 20 deletions(-) diff --git a/walker-web/src/main/java/com/walker/web/util/IpUtils.java b/walker-web/src/main/java/com/walker/web/util/IpUtils.java index d438d55..122f43c 100644 --- a/walker-web/src/main/java/com/walker/web/util/IpUtils.java +++ b/walker-web/src/main/java/com/walker/web/util/IpUtils.java @@ -32,37 +32,69 @@ * * @param request 璇锋眰瀵硅薄 * @return IP鍦板潃 + * @date 2023-10-21 + * @date 2024-04-02 澧炲姞鑾峰彇璇锋眰澶翠腑鍙傛暟锛堣ˉ鍏咃級 */ - public static String getIpAddr(HttpServletRequest request) - { - if (request == null) - { + public static String getIpAddr(HttpServletRequest request) { + if (request == null) { return "unknown"; } - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) - { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) - { + + String ip = null; + + // 浠ヤ笅涓や釜鑾峰彇鍦╧8s涓紝灏嗙湡瀹炵殑瀹㈡埛绔疘P锛屾斁鍒颁簡x-Original-Forwarded-For銆傝�屽皢WAF鐨勫洖婧愬湴鍧�鏀惧埌浜� x-Forwarded-For浜嗐�� + ip = request.getHeader("X-Original-Forwarded-For"); + if (ip == null || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { ip = request.getHeader("X-Forwarded-For"); } - if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) - { + + //鑾峰彇nginx绛変唬鐞嗙殑ip + if (ip == null || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { + ip = request.getHeader("x-forwarded-for"); + } + + if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } - if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) - { + if (ip == null || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { + ip = request.getHeader("HTTP_CLIENT_IP"); + } + if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { ip = request.getHeader("X-Real-IP"); } - - if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) - { - ip = request.getRemoteAddr(); + if (ip == null || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { + ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } - return "0:0:0:0:0:0:0:1".equals(ip) ? LOCALHOST : getMultistageReverseProxyIp(ip); + // 2.濡傛灉娌℃湁杞彂鐨刬p锛屽垯鍙栧綋鍓嶉�氫俊鐨勮姹傜鐨刬p(鍏煎k8s闆嗙兢鑾峰彇ip) + if (ip == null || ip.length() == 0 || UNKNOWN_TEXT.equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + // 濡傛灉鏄�127.0.0.1锛屽垯鍙栨湰鍦扮湡瀹瀒p + if (LOCALHOST.equals(ip)) { + // 鏍规嵁缃戝崱鍙栨湰鏈洪厤缃殑IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + ip = inet.getHostAddress(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } + } + + // 瀵逛簬閫氳繃澶氫釜浠g悊鐨勬儏鍐碉紝绗竴涓狪P涓哄鎴风鐪熷疄IP,澶氫釜IP鎸夌収','鍒嗗壊 + if (ip != null && ip.length() > 15) { + // = 15 + if (ip.indexOf(StringUtils.DEFAULT_SPLIT_SEPARATOR) > 0) { + ip = ip.substring(0, ip.indexOf(StringUtils.DEFAULT_SPLIT_SEPARATOR)); + } + } + +// return "0:0:0:0:0:0:0:1".equals(ip) ? LOCALHOST : getMultistageReverseProxyIp(ip); + return "0:0:0:0:0:0:0:1".equals(ip) ? LOCALHOST : ip; } /** -- Gitblit v1.9.1