예제 #1
0
        protected void Session_Start()
        {
            string sessionId = Session.SessionID;
            string userIP    = HttpContext.Current.Request.UserHostAddress;
            string userAgent = HttpContext.Current.Request.UserAgent;

            SessionManager.Instant.Add(Session, sessionId, userIP, userAgent);

            new Action <object>(o =>
            {
                var ctx  = o.Cast(new { SessionID = "", UserHostAddress = "", UserAgent = "" });
                var ctx2 = new PTFReportsContext();
                var ip   = ctx2.IPs.FirstOrCreate(
                    n => n.IP1 == ctx.UserHostAddress,
                    () => new IP()
                {
                    IP1 = ctx.UserHostAddress
                });
                ctx2.AddToSessions(new Session()
                {
                    Begin            = DateTime.Now,
                    BrowserSessionID = ctx.SessionID,
                    UserAgent        = ctx.UserAgent,
                    IP = ip
                });
                ctx2.SaveChanges();
            }).FireAndForgetSafe(
                new
            {
                SessionID       = sessionId,
                UserHostAddress = userIP,
                UserAgent       = userAgent,
            });
        }
예제 #2
0
 public static void SaveErrorAsynch(Exception ex)
 {
     new Action <Exception>((err) =>
     {
         var ctx = new PTFReportsContext();
         ctx.SaveError(err);
     }).FireAndForgetSafe(ex);
 }
예제 #3
0
 public static void LoadBlockedIPsAsynch()
 {
     new Action(() =>
     {
         PTFReportsContext.BlockedIPsTable.Clear();
         var ctx = new PTFReportsContext();
         foreach (var ip in ctx.IPs)
         {
             PTFReportsContext.BlockedIPsTable[ip.IP1] = ip.BlockedAt;
         }
     }).FireAndForgetSafe();
 }
예제 #4
0
        protected void Session_End()
        {
            SessionManager.Instant.Remove(Session.SessionID);

            new Action <string>(id =>
            {
                var ctx2    = new PTFReportsContext();
                var session = ctx2.Sessions.First(s => s.BrowserSessionID == id);
                session.End = DateTime.Now;
                ctx2.SaveChanges();
            }).FireAndForgetSafe(Session.SessionID);
        }
예제 #5
0
 public static void ResetLoginAttemptsAsynch(string loginName)
 {
     new Action <string>((name) =>
     {
         var ctx  = new PTFReportsContext();
         var user = ctx.UserDetails.FirstOrDefault(s => s.Ud_loginName == name);
         if (user != null)
         {
             user.LoginTries = null;
             ctx.SaveChanges();
         }
     }).FireAndForgetSafe(loginName);
 }
예제 #6
0
 public static void SaveSessionAsynch(string sessionId, UserDetail user)
 {
     new Action <string>((ssid) =>
     {
         var ctx     = new PTFReportsContext();
         var session = ctx.Sessions.First(s => s.BrowserSessionID == ssid);
         if (session != null)
         {
             session.UserID = user.Ud_id;
             ctx.SaveChanges();
         }
     }).FireAndForgetSafe(sessionId);
 }
예제 #7
0
 public static void SaveLoginFailAsynch(string loginName, int maxLoginTries)
 {
     new Action <string, int>((name, count) =>
     {
         var ctx  = new PTFReportsContext();
         var user = ctx.UserDetails.FirstOrDefault(s => s.Ud_loginName == name);
         if (user != null)
         {
             user.LoginTries = user.LoginTries.GetValueOrDefault() + 1;
             if (user.LoginTries > count)
             {
                 user.BlockedAt = DateTime.Now;
             }
             ctx.SaveChanges();
         }
     }).FireAndForgetSafe(loginName, maxLoginTries);
 }
예제 #8
0
        public static void SaveIPBlockedAsynch(string ipAddr)
        {
            new Action <string>((ip) =>
            {
                PTFReportsContext.BlockedIPsTable[ip] = DateTime.Now;

                var ctx = new PTFReportsContext();
                var ipa = ctx.IPs.FirstOrDefault(i => i.IP1 == ip);
                if (ipa == null)
                {
                    ctx.AddToIPs(new IP()
                    {
                        IP1 = ip, BlockedAt = DateTime.Now
                    });
                }
                else
                {
                    ipa.BlockedAt = DateTime.Now;
                }
                ctx.SaveChanges();
            }).FireAndForgetSafe(ipAddr);
        }