void Handle(BanHardwareIdMessage message) { var hardwareIdBan = Managers.AccountManager.Instance.FindHardwareIdBan(message.HardwareId); if (hardwareIdBan != null) { hardwareIdBan.BanReason = message.BanReason; hardwareIdBan.BannedBy = message.BannerAccountId; hardwareIdBan.Date = DateTime.Now; Database.Update(hardwareIdBan); } else { var record = new HardwareIdBan { HardwareId = message.HardwareId, BanReason = message.BanReason, BannedBy = message.BannerAccountId, Date = DateTime.Now }; Database.Insert(record); Managers.AccountManager.Instance.AddHardwareIdBan(record); } Client.ReplyRequest(new CommonOKMessage(), message); }
public override void Execute(TriggerBase trigger) { var hardwareId = trigger.Get <string>("hardwareId"); var reason = trigger.Get <string>("reason"); if (!IPCAccessor.Instance.IsConnected) { trigger.ReplyError("IPC service not operational !"); return; } var message = new BanHardwareIdMessage { HardwareId = hardwareId, BanReason = reason }; var source = trigger.GetSource() as WorldClient; if (source != null) { message.BannerAccountId = source.Account.Id; } IPCAccessor.Instance.SendRequest(message, ok => { World.Instance.ForEachCharacter(x => x.Account.LastHardwareId == hardwareId, character => character.Client.Disconnect()); trigger.Reply("HardwareId {0} banned", hardwareId); }, error => trigger.ReplyError("HardwareId {0} not banned : {1}", hardwareId, error.Message)); }