public void LoadLists() { PathWhiteList = Path.Combine(SanyaPlugin.Instance.Config.DataDirectory, "VPN-Whitelist.txt"); PathBlackList = Path.Combine(SanyaPlugin.Instance.Config.DataDirectory, "VPN-Blacklist.txt"); IPWhiteList.Clear(); IPBlackList.Clear(); if (!File.Exists(PathWhiteList)) { File.WriteAllText(PathWhiteList, null); } if (!File.Exists(PathBlackList)) { File.WriteAllText(PathBlackList, null); } foreach (var line in File.ReadAllLines(PathWhiteList)) { if (IPAddress.TryParse(line, out var address)) { IPWhiteList.Add(address); } } foreach (var line2 in File.ReadAllLines(PathBlackList)) { if (IPAddress.TryParse(line2, out var address2)) { IPBlackList.Add(address2); } } }
/// <summary> /// 判断IP地址是否被黑名单 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static bool IsDenyIpAddress(this string ip) { if (IPWhiteList.Contains(ip)) { return(false); } return(DenyAreaIP.SelectMany(x => x.Value).Union(DenyIP.Split(',')).Contains(ip) || DenyIPRange.Any(kv => kv.Key.StartsWith(ip.Split('.')[0]) && ip.IpAddressInRange(kv.Key, kv.Value))); }
public void AddWhiteList(IPAddress address) { IPWhiteList.Add(address); using (StreamWriter writer = File.AppendText(PathWhiteList)) { writer.WriteLine(address); } }
/// <summary> /// 判断IP地址是否被黑名单 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static bool IsDenyIpAddress(this string ip) { if (IPWhiteList.Contains(ip)) { return(false); } return(DenyIP.Contains(ip) || DenyIPRange.AsParallel().Any(kv => kv.Key.StartsWith(ip.Split('.')[0]) && ip.IpAddressInRange(kv.Key, kv.Value))); }
public override void OnActionExecuting(ActionExecutingContext context) { if (!HttpContext.Current.User.Identity.IsAuthenticated && context.ActionDescriptor.ControllerDescriptor.ControllerName != "ScheduledPublish")//'ScheduledPublish' fix for Umbraco 7.1.8 { if (!context.ActionDescriptor.GetCustomAttributes(typeof(AllowAllFilterAttribute), false).Any()) { IPWhiteList whiteList = new IPWhiteList(); //string ipAddress = HttpContext.Current.Request.UserHostAddress; string ipAddress = HttpContext.Current.Request["HTTP_CF_CONNECTING_IP"]; //string szXForwardedFor = HttpContext.Current.Request.ServerVariables["X_FORWARDED_FOR"]; if (!whiteList.Contains(ipAddress)) { context.Result = new RedirectResult("/Login"); } } } base.OnActionExecuting(context); }
public bool IsWhiteListed(IPAddress address) => IPWhiteList.Contains(address);