123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.IO;
- namespace CB.Common
- {
- public class BlackIpHttpModule : IHttpModule
- {
- public void Dispose() { }
- public void Init(HttpApplication application)
- {
- application.BeginRequest += new EventHandler(Application_BeginRequest);
- }
- private void Application_BeginRequest(object sender, EventArgs e)
- {
- HttpApplication application = (HttpApplication)sender;
- //using (var sw = new StreamWriter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ipaddress.txt"), true, System.Text.Encoding.Default))
- //{
- // sw.WriteLine("Ip => " + IPAddress);
- // sw.Flush();
- //}
- if (BlackIPs.Any(ip => ip == IPAddress))
- {
- application.Context.Response.Write("禁止访问");
- application.Context.Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
- application.CompleteRequest();
- }
- }
- public static string IPAddress
- {
- get
- {
- string userIP;
- // HttpRequest Request = HttpContext.Current.Request;
- HttpRequest Request = HttpContext.Current.Request; // ForumContext.Current.Context.Request;
- // 如果使用代理,获取真实IP
- if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
- userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
- else
- userIP = Request.ServerVariables["REMOTE_ADDR"];
- if (userIP == null || userIP == "")
- userIP = Request.UserHostAddress;
- return userIP;
- }
- }
- private volatile static List<string> _blacklist = null;
- public List<string> BlackIPs
- {
- get
- {
- if (_blacklist == null)
- {
- _blacklist = new List<string>();
- string s = System.Configuration.ConfigurationManager.AppSettings["blackips"];
- if (!string.IsNullOrEmpty(s))
- {
- _blacklist.AddRange(s.Trim().Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries));
- }
- }
- return _blacklist;
- }
- }
- }
- }
|