From 944b118c622159c87e7f89c05892458d88797d58 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 24 Nov 2007 03:28:42 +0000 Subject: * Added a way for the Region master user to kick individual users from their sim with a custom message. Their client says, "You've been logged off of secondlife, and logs them off. * Added a way for the Region master user to kick *ALL* users from *ALL* their regions in the estate with a custom message. --- OpenSim/Region/ClientStack/ClientView.API.cs | 1 + OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | 17 ++++++++++++----- OpenSim/Region/ClientStack/ClientView.cs | 13 +++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/ClientStack') diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index b046f0a..80111d9 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs @@ -66,6 +66,7 @@ namespace OpenSim.Region.ClientStack public event MoveObject OnGrabUpdate; public event AddNewPrim OnAddPrim; public event RequestGodlikePowers OnRequestGodlikePowers; + public event GodKickUser OnGodKickUser; public event ObjectExtraParams OnUpdateExtraParams; public event UpdateShape OnUpdatePrimShape; public event ObjectSelect OnObjectSelect; diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index ca7ba7f..f46c199 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs @@ -1075,11 +1075,18 @@ namespace OpenSim.Region.ClientStack break; case PacketType.GodKickUser: - //GodKickUserPacket gkupack = (GodKickUserPacket) Pack; - //gkupack.UserInfo.GodID; - //gkupack.UserInfo.AgentID; - //gkupack.UserInfo.KickFlags; - //gkupack.UserInfo.Reason; + OpenSim.Framework.Console.MainLog.Instance.Verbose("CLIENT", "unhandled packet " + Pack.ToString()); + + GodKickUserPacket gkupack = (GodKickUserPacket) Pack; + + if (gkupack.UserInfo.GodSessionID == SessionId && this.AgentId == gkupack.UserInfo.GodID) + { + OnGodKickUser(gkupack.UserInfo.GodID, gkupack.UserInfo.GodSessionID, gkupack.UserInfo.AgentID, (uint) 0, gkupack.UserInfo.Reason); + } + else + { + SendAgentAlertMessage("Kick request denied", false); + } //KickUserPacket kupack = new KickUserPacket(); //KickUserPacket.UserInfoBlock kupackib = kupack.UserInfo; diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index e6712fe..fbe66db 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -308,7 +308,20 @@ namespace OpenSim.Region.ClientStack ClientThread.Abort(); } + public void Kick(string message) + { + KickUserPacket kupack = new KickUserPacket(); + + kupack.UserInfo.AgentID = AgentId; + kupack.UserInfo.SessionID = SessionId; + + kupack.TargetBlock.TargetIP = (uint)0; + kupack.TargetBlock.TargetPort = (ushort)0; + kupack.UserInfo.Reason = Helpers.StringToField(message); + OutPacket(kupack, ThrottleOutPacketType.Task); + + } public void Stop() { clientPingTimer.Stop(); -- cgit v1.1