Inheritance: INotifyPropertyChanging, INotifyPropertyChanged
示例#1
0
        public ActionResult CreateIPBan(string ip, string expires, string reason, bool? showall, int? page, int? pagesize)
        {
            var retryValues = new { ip, expires, reason };

            if (!ip.HasValue()) return RecoverableError("IP must be set.", retryValues);
            if (!expires.HasValue()) return RecoverableError("Expires must be set.", retryValues);
            if (!reason.HasValue()) return RecoverableError("Reason must be set.", retryValues);

            DateTime expDate;
            if (!DateTime.TryParse(expires, out expDate)) return RecoverableError("Expires not recognized as a date.", retryValues);

            var now = Current.Now;

            if (expDate < now) return RecoverableError("Expiration date must be in the future.", retryValues);

            var newBan =
                new IPBan
                {
                    CreationDate = now,
                    ExpirationDate = expDate,
                    IP = ip,
                    Reason = reason
                };

            var db = Current.WriteDB;
            db.IPBans.InsertOnSubmit(newBan);
            db.SubmitChanges();

            return SafeRedirect(
                (Func<bool?, int?, int?, ActionResult>)IPBans,
                new
                {
                    showall,
                    page,
                    pagesize
                });
        }
示例#2
0
 partial void DeleteIPBan(IPBan instance);
示例#3
0
 partial void InsertIPBan(IPBan instance);
示例#4
0
 partial void UpdateIPBan(IPBan instance);
示例#5
0
        /// <summary>
        /// Create a new ban for the given ip lasting for the given period.
        /// </summary>
        public static void Ban(string ip, TimeSpan @for, string reason)
        {
            // Never ban an internal IP
            if (Current.IsPrivateIP(ip)) return;

            var db = Current.WriteDB;

            var now = Current.Now;

            var newBan =
                new IPBan
                {
                    CreationDate = now,
                    ExpirationDate = now + @for,
                    IP = ip,
                    Reason = reason
                };

            db.IPBans.InsertOnSubmit(newBan);
            db.SubmitChanges();

            var period = new BanPeriod { CreationDate = newBan.CreationDate, ExpirationDate = newBan.ExpirationDate };
            BannedIPCache.AddOrUpdate(ip, period, (string key, BanPeriod old) => period);
        }