|
@ -18,25 +18,27 @@ import java.util.regex.Pattern; |
|
|
* @author shuili |
|
|
* @author shuili |
|
|
*/ |
|
|
*/ |
|
|
public class IpUtils { |
|
|
public class IpUtils { |
|
|
|
|
|
public final static String UNKNOWN = "unknown"; |
|
|
|
|
|
|
|
|
public static String getIpAddr(HttpServletRequest request) { |
|
|
public static String getIpAddr(HttpServletRequest request) { |
|
|
if (request == null) { |
|
|
if (request == null) { |
|
|
return "unknown"; |
|
|
return UNKNOWN; |
|
|
} |
|
|
} |
|
|
String ip = request.getHeader("x-forwarded-for"); |
|
|
String ip = request.getHeader("x-forwarded-for"); |
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
|
|
if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { |
|
|
ip = request.getHeader("Proxy-Client-IP"); |
|
|
ip = request.getHeader("Proxy-Client-IP"); |
|
|
} |
|
|
} |
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
|
|
if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { |
|
|
ip = request.getHeader("X-Forwarded-For"); |
|
|
ip = request.getHeader("X-Forwarded-For"); |
|
|
} |
|
|
} |
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
|
|
if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { |
|
|
ip = request.getHeader("WL-Proxy-Client-IP"); |
|
|
ip = request.getHeader("WL-Proxy-Client-IP"); |
|
|
} |
|
|
} |
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
|
|
if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { |
|
|
ip = request.getHeader("X-Real-IP"); |
|
|
ip = request.getHeader("X-Real-IP"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { |
|
|
if (ip == null || ip.isEmpty() || UNKNOWN.equalsIgnoreCase(ip)) { |
|
|
ip = request.getRemoteAddr(); |
|
|
ip = request.getRemoteAddr(); |
|
|
} |
|
|
} |
|
|
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip); |
|
|
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip); |
|
|