Ejemplo n.º 1
0
        private void Handle(BanAccountMessage message)
        {
            Account account;

            if (message.AccountId.HasValue)
            {
                account = AccountManager.FindAccountById(message.AccountId.Value);
            }
            else
            {
                if (string.IsNullOrEmpty(message.AccountName))
                {
                    Client.SendError("AccoundId and AccountName are null or empty");
                    return;
                }
                account = AccountManager.FindAccountByLogin(message.AccountName);
            }
            if (account == null)
            {
                Client.SendError(string.Format("Account {0}{1} not found", message.AccountId, message.AccountName));
            }
            else
            {
                account.IsBanned        = true;
                account.BanReason       = message.BanReason;
                account.BanEndDate      = message.BanEndDate;
                account.BannerAccountId = message.BannerAccountId;
                Database.Update(account);
                Client.ReplyRequest(new CommonOKMessage(), message);
            }
        }
Ejemplo n.º 2
0
        private void Handle(BanAccountMessage message)
        {
            Account victimAccount;

            if (message.AccountId != null)
            {
                victimAccount = AccountManager.FindAccountById((int)message.AccountId);
            }
            else if (!string.IsNullOrEmpty(message.AccountName))
            {
                victimAccount = AccountManager.FindAccountByLogin(message.AccountName);
            }
            else
            {
                Client.SendError("AccoundId and AccountName are null or empty", message);
                return;
            }

            if (victimAccount == null)
            {
                Client.SendError(string.Format("Account {0}{1} not found", message.AccountId, message.AccountName), message);
                return;
            }

            victimAccount.IsBanned = !message.Jailed;
            victimAccount.IsJailed = message.Jailed;

            victimAccount.BanReason       = message.BanReason;
            victimAccount.BanEndDate      = message.BanEndDate;
            victimAccount.BannerAccountId = message.BannerAccountId;

            Database.Update(victimAccount);
            Client.ReplyRequest(new CommonOKMessage(), message);
        }
Ejemplo n.º 3
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"))
                {
                    trigger.ReplyError("No ban duration given");
                    return;
                }

                var time = trigger.Get <int>("time");

                message.BanEndDate = DateTime.Now + TimeSpan.FromMinutes(time);
                message.Jailed     = true;

                IPCAccessor.Instance.SendRequest(message,
                                                 ok =>
                {
                    target.Area.ExecuteInContext(() => target.TeleportToJail());
                    target.Account.IsJailed = true;

                    target.Mute(TimeSpan.FromMinutes(time), source.Character);
                    target.OpenPopup(string.Format("Vous avez été emprisonné et muté pendant {0} minutes par {1}", time, source.Character.Name));

                    trigger.Reply("Account {0} jailed for {1} minutes. Reason : {2}", target.Account.Login,
                                  trigger.Get <int>("time"), reason);
                },
                                                 error => trigger.ReplyError("Account {0} not jailed : {1}", target.Account.Login, error.Message));
            }
        }
Ejemplo n.º 4
0
        public override void Execute(TriggerBase trigger)
        {
            var accountName = trigger.Get <string>("account");
            var reason      = trigger.Get <string>("reason");

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

            var message = new BanAccountMessage
            {
                AccountName = accountName,
                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("Account {0} banned", accountName),
                                             error => trigger.ReplyError("Account {0} not banned : {1}", accountName, error.Message));
        }
Ejemplo n.º 5
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);
                    }
                    if (trigger.IsArgumentDefined("time"))
                    {
                        int num = trigger.Get <int>("time");
                        if (num > 1440 && trigger.UserRole == RoleEnum.GameMaster_Padawan)
                        {
                            num = 1440;
                        }
                        banAccountMessage.BanEndDate = new System.DateTime?(System.DateTime.Now + System.TimeSpan.FromMinutes((double)num));
                    }
                    else
                    {
                        if (!trigger.IsArgumentDefined("life") || trigger.UserRole == RoleEnum.GameMaster_Padawan)
                        {
                            trigger.ReplyError("No ban duration given");
                            break;
                        }
                        banAccountMessage.BanEndDate = null;
                    }
                    target.TeleportToJail();
                    target.Account.IsJailed  = true;
                    banAccountMessage.Jailed = true;
                    IPCAccessor.Instance.SendRequest(banAccountMessage, delegate(CommonOKMessage ok)
                    {
                        trigger.Reply("Account {0} jailed for {1} minutes. Reason : {2}", new object[]
                        {
                            target.Account.Login,
                            trigger.Get <int>("time"),
                            reason
                        });
                    }, delegate(IPCErrorMessage error)
                    {
                        trigger.ReplyError("Account {0} not jailed : {1}", new object[]
                        {
                            target.Account.Login,
                            error.Message
                        });
                    });
                }
            }
        }
Ejemplo n.º 6
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.º 7
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));
            }
        }