package com.dianping.pigeon.console;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import com.dianping.pigeon.config.ConfigManager;
import com.dianping.pigeon.config.ConfigManagerLoader;
public class Utils {
private static final List<String> LOCAL_IP_LIST = new ArrayList<String>();
private static ConfigManager configManager = ConfigManagerLoader.getConfigManager();
private static final String DEFAULT_SIGN = "WQMlgikuPfCFNE8=ZEhN2k8xxJMu";
private static final String SIGN = configManager.getStringValue("pigeon.console.sign", DEFAULT_SIGN);
static {
LOCAL_IP_LIST.add("127.0.0.1");
LOCAL_IP_LIST.add("0:0:0:0:0:0:0:1");
}
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
public static boolean isGranted(HttpServletRequest request) {
boolean isGranted = false;
String ip = Utils.getIpAddr(request);
String sign = request.getParameter("sign");
isGranted = LOCAL_IP_LIST.contains(ip) || ip.equals(configManager.getLocalIp());
if (!isGranted && StringUtils.isNotBlank(sign)) {
isGranted = sign.equals(SIGN);
}
return isGranted;
}
public static String getSign() {
return SIGN;
}
}