Ejemplo n.º 1
0
        private void Handle(BanIPMessage message)
        {
            var ipBan = Managers.AccountManager.Instance.FindIpBan(message.IPRange);
            var ip    = IPAddressRange.Parse(message.IPRange);

            if (ipBan != null)
            {
                ipBan.BanReason = message.BanReason;
                ipBan.BannedBy  = message.BannerAccountId;
                ipBan.Duration  = message.BanEndDate.HasValue ? (int?)(message.BanEndDate - DateTime.Now).Value.TotalMinutes : null;
                ipBan.Date      = DateTime.Now;

                Database.Update(ipBan);
            }
            else
            {
                var record = new IpBan
                {
                    IP        = ip,
                    BanReason = message.BanReason,
                    BannedBy  = message.BannerAccountId,
                    Duration  = message.BanEndDate.HasValue ? (int?)(message.BanEndDate - DateTime.Now).Value.TotalMinutes : null,
                    Date      = DateTime.Now
                };

                Database.Insert(record);
                Managers.AccountManager.Instance.AddIPBan(record);
            }

            Client.ReplyRequest(new CommonOKMessage(), message);
        }
Ejemplo n.º 2
0
        private void Handle(BanIPMessage message)
        {
            IpBan          ipBan = AccountManager.FindIpBan(message.IPRange);
            IPAddressRange iP    = IPAddressRange.Parse(message.IPRange);

            if (ipBan != null)
            {
                ipBan.BanReason = message.BanReason;
                ipBan.BannedBy  = message.BannerAccountId;
                ipBan.Duration  = (message.BanEndDate.HasValue ? (message.BanEndDate - DateTime.Now) : null);
                ipBan.Date      = DateTime.Now;
                Database.Update(ipBan);
            }
            else
            {
                IpBan poco = new IpBan
                {
                    IP        = iP,
                    BanReason = message.BanReason,
                    BannedBy  = message.BannerAccountId,
                    Duration  = message.BanEndDate.HasValue ? (message.BanEndDate - DateTime.Now) : null,
                    Date      = DateTime.Now
                };
                Database.Insert(poco);
            }
            Client.ReplyRequest(new CommonOKMessage(), message);
        }
Ejemplo n.º 3
0
        public override void Execute(TriggerBase trigger)
        {
            var ip     = trigger.Get <string>("ip");
            var reason = trigger.Get <string>("reason");

            if (!IPCAccessor.Instance.IsConnected)
            {
                trigger.ReplyError("IPC service not operational !");
                return;
            }

            try
            {
                IPAddressRange.Parse(ip);
            }
            catch
            {
                trigger.ReplyError("IP format '{0}' incorrect", ip);
                return;
            }

            var message = new BanIPMessage
            {
                IPRange   = ip,
                BanReason = reason,
            };

            var source = trigger.GetSource() as WorldClient;

            if (source != null)
            {
                message.BannerAccountId = source.Account.Id;
            }

            if (trigger.IsArgumentDefined("time"))
            {
                message.BanEndDate = DateTime.Now + TimeSpan.FromMinutes(trigger.Get <int>("time"));
            }
            else if (trigger.IsArgumentDefined("life"))
            {
                message.BanEndDate = null;
            }
            else
            {
                trigger.ReplyError("No ban duration given");
                return;
            }

            IPCAccessor.Instance.SendRequest(message,
                                             ok => trigger.Reply("IP {0} banned", ip),
                                             error => trigger.ReplyError("IP {0} not banned : {1}", ip, error.Message));
        }
Ejemplo n.º 4
0
        public override void Execute(TriggerBase trigger)
        {
            string reason = trigger.Get <string>("reason");

            if (!IPCAccessor.Instance.IsConnected)
            {
                trigger.ReplyError("IPC service not operational !");
            }
            else
            {
                Character[] targets = base.GetTargets(trigger);
                for (int i = 0; i < targets.Length; i++)
                {
                    Character         target            = targets[i];
                    BanAccountMessage banAccountMessage = new BanAccountMessage
                    {
                        AccountId = new int?(target.Account.Id),
                        BanReason = reason
                    };
                    WorldClient worldClient = trigger.GetSource() as WorldClient;
                    if (worldClient != null)
                    {
                        banAccountMessage.BannerAccountId = new int?(worldClient.Account.Id);
                    }

                    else
                    {
                        if (!trigger.IsArgumentDefined("life") || trigger.UserRole == RoleEnum.GameMaster_Padawan)
                        {
                            trigger.ReplyError("Ajoute le temps du Ban");
                            break;
                        }
                        banAccountMessage.BanEndDate = null;
                    }
                    banAccountMessage.Jailed = false;
                    target.Client.Disconnect();
                    IPCAccessor.Instance.SendRequest(banAccountMessage, delegate(CommonOKMessage ok)
                    {
                        World.Instance.SendAnnounce(String.Format("Le joueur {0} a été banni.", target.Name), System.Drawing.Color.Red);
                    }, delegate(IPCErrorMessage error)
                    {
                        trigger.ReplyError("Account {0} not banned : {1}", new object[]
                        {
                            target.Account.Login,
                            error.Message
                        });
                    });
                    if (!trigger.IsArgumentDefined("ip"))
                    {
                        break;
                    }
                    BanIPMessage message = new BanIPMessage
                    {
                        IPRange         = target.Client.IP,
                        BanReason       = reason,
                        BannerAccountId = banAccountMessage.BannerAccountId
                    };
                    IPCAccessor.Instance.SendRequest(message, delegate(CommonOKMessage ok)
                    {
                        trigger.Reply("IP {0} banned", new object[]
                        {
                            target.Client.IP
                        });
                    }, delegate(IPCErrorMessage error)
                    {
                        trigger.ReplyError("IP {0} not banned : {1}", new object[]
                        {
                            target.Client.IP,
                            error.Message
                        });
                    });
                }
            }
        }
Ejemplo n.º 5
0
        public override void Execute(TriggerBase trigger)
        {
            var reason = trigger.Get <string>("reason");

            if (!IPCAccessor.Instance.IsConnected)
            {
                trigger.ReplyError("IPC service not operational !");
                return;
            }


            foreach (var target in GetTargets(trigger))
            {
                var message = new BanAccountMessage
                {
                    AccountId = target.Account.Id,
                    BanReason = reason,
                };

                var source = trigger.GetSource() as WorldClient;
                if (source != null)
                {
                    message.BannerAccountId = source.Account.Id;
                }

                if (trigger.IsArgumentDefined("time"))
                {
                    var time = trigger.Get <int>("time");
                    if (time > 60 * 24 && trigger.UserRole == RoleEnum.GameMaster_Padawan)
                    {
                        // max ban time for padawan == 24h
                        time = 60 * 24;
                    }
                    message.BanEndDate = DateTime.Now + TimeSpan.FromMinutes(time);
                }
                else if (trigger.IsArgumentDefined("life") && trigger.UserRole != RoleEnum.GameMaster_Padawan)
                {
                    message.BanEndDate = null;
                }
                else
                {
                    trigger.ReplyError("No ban duration given");
                    return;
                }

                message.Jailed = false;
                target.Client.Disconnect();

                IPCAccessor.Instance.SendRequest(message,
                                                 ok => trigger.Reply("Account {0} banned for {1} minutes. Reason : {2}", target.Account.Login,
                                                                     trigger.Get <int>("time"), reason),
                                                 error => trigger.ReplyError("Account {0} not banned : {1}", target.Account.Login, error.Message));


                if (!trigger.IsArgumentDefined("ip"))
                {
                    return;
                }

                var banIPMessage = new BanIPMessage
                {
                    IPRange         = target.Client.IP,
                    BanReason       = reason,
                    BanEndDate      = message.BanEndDate,
                    BannerAccountId = message.BannerAccountId
                };

                IPCAccessor.Instance.SendRequest(banIPMessage,
                                                 ok => trigger.Reply("IP {0} banned", target.Client.IP),
                                                 error => trigger.ReplyError("IP {0} not banned : {1}", target.Client.IP, error.Message));
            }
        }
Ejemplo n.º 6
0
        public override void Execute(TriggerBase trigger)
        {
            string ip        = trigger.Get <string>("ip");
            string banReason = trigger.Get <string>("reason");

            if (!IPCAccessor.Instance.IsConnected)
            {
                trigger.ReplyError("IPC service not operational !");
            }
            else
            {
                try
                {
                    IPAddressRange.Parse(ip);
                }
                catch
                {
                    trigger.ReplyError("IP format '{0}' incorrect", new object[]
                    {
                        ip
                    });
                    return;
                }
                BanIPMessage banIPMessage = new BanIPMessage
                {
                    IPRange   = ip,
                    BanReason = banReason
                };
                WorldClient worldClient = trigger.GetSource() as WorldClient;
                if (worldClient != null)
                {
                    banIPMessage.BannerAccountId = new int?(worldClient.Account.Id);
                }
                if (trigger.IsArgumentDefined("time"))
                {
                    banIPMessage.BanEndDate = new System.DateTime?(System.DateTime.Now + System.TimeSpan.FromMinutes((double)trigger.Get <int>("time")));
                }
                else
                {
                    if (!trigger.IsArgumentDefined("life"))
                    {
                        trigger.ReplyError("No ban duration given");
                        return;
                    }
                    banIPMessage.BanEndDate = null;
                }
                IPCAccessor.Instance.SendRequest(banIPMessage, delegate(CommonOKMessage ok)
                {
                    trigger.Reply("IP {0} banned", new object[]
                    {
                        ip
                    });
                }, delegate(IPCErrorMessage error)
                {
                    trigger.ReplyError("IP {0} not banned : {1}", new object[]
                    {
                        ip,
                        error.Message
                    });
                });
            }
        }