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; } }