package com.kidgrow.common.utils;
|
|
import cn.hutool.core.util.StrUtil;
|
import lombok.extern.slf4j.Slf4j;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.net.InetAddress;
|
import java.net.UnknownHostException;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: <br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/21 13:34 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
@Slf4j
|
public class AddrUtil {
|
private final static String UNKNOWN_STR = "unknown";
|
/**
|
* 获取客户端IP地址
|
*/
|
public static String getRemoteAddr(HttpServletRequest request) {
|
String ip = request.getHeader("X-Forwarded-For");
|
if (isEmptyIP(ip)) {
|
ip = request.getHeader("Proxy-Client-IP");
|
if (isEmptyIP(ip)) {
|
ip = request.getHeader("WL-Proxy-Client-IP");
|
if (isEmptyIP(ip)) {
|
ip = request.getHeader("HTTP_CLIENT_IP");
|
if (isEmptyIP(ip)) {
|
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
|
if (isEmptyIP(ip)) {
|
ip = request.getRemoteAddr();
|
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
|
// 根据网卡取本机配置的IP
|
ip = getLocalAddr();
|
}
|
}
|
}
|
}
|
}
|
} else if (ip.length() > 15) {
|
String[] ips = ip.split(",");
|
for (int index = 0; index < ips.length; index++) {
|
String strIp = ips[index];
|
if (!isEmptyIP(ip)) {
|
ip = strIp;
|
break;
|
}
|
}
|
}
|
return ip;
|
}
|
|
private static boolean isEmptyIP(String ip) {
|
if (StrUtil.isEmpty(ip) || UNKNOWN_STR.equalsIgnoreCase(ip)) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* 获取本机的IP地址
|
*/
|
public static String getLocalAddr() {
|
try {
|
return InetAddress.getLocalHost().getHostAddress();
|
} catch (UnknownHostException e) {
|
log.error("InetAddress.getLocalHost()-error", e);
|
}
|
return "";
|
}
|
}
|