package com.dounine.corgi.utils;
import com.dounine.corgi.request.RequestContext;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* Created by huanghuanlai on 16/6/20.
*/
public final class AddressUtils {
private static final ThreadLocal<HttpServletRequest> REQUEST = new ThreadLocal<>();
private static final String UNKNOWN = "unknown";
private AddressUtils(){}
public static String getRemoteAddr(){
return getRemoteAddr(RequestContext.get());
}
public static String getRemoteAddr(final HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (StringUtils.isBlank(ipAddress) || UNKNOWN.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isBlank(ipAddress) || UNKNOWN.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isBlank(ipAddress) || UNKNOWN.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
if (StringUtils.isBlank(ipAddress)) {
try {
ipAddress = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return ipAddress;
}
}