aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.cs
diff options
context:
space:
mode:
authorTeravus Ovares2008-05-31 12:18:29 +0000
committerTeravus Ovares2008-05-31 12:18:29 +0000
commitfebe78d06249cd4d36a86e97610dd45ab518a757 (patch)
tree7b9733fc14045f09e874440b923cfe443b781b6a /OpenSim/Region/Environment/Scenes/Scene.cs
parentMantis#1425. Thank you kindly, Melanie for a patch that: (diff)
downloadopensim-SC-febe78d06249cd4d36a86e97610dd45ab518a757.zip
opensim-SC-febe78d06249cd4d36a86e97610dd45ab518a757.tar.gz
opensim-SC-febe78d06249cd4d36a86e97610dd45ab518a757.tar.bz2
opensim-SC-febe78d06249cd4d36a86e97610dd45ab518a757.tar.xz
* Implements UserServer logoff in a few situations
* User tries to log-in but is already logged in. Userserver will send message to simulator user was in to log the user out there. * From the UserServer, admin types 'logoff-user firstname lastname message'. * Some regions may not get the message because they're not updated yet.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs34
1 files changed, 32 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 6916c6d..c74dca4 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -2003,8 +2003,8 @@ namespace OpenSim.Region.Environment.Scenes
2003 m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; 2003 m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate;
2004 m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; 2004 m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup;
2005 m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; 2005 m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar;
2006 2006 m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid;
2007 m_sceneGridService.KillObject = SendKillObject; 2007 m_sceneGridService.KillObject += SendKillObject;
2008 } 2008 }
2009 2009
2010 /// <summary> 2010 /// <summary>
@@ -2012,6 +2012,8 @@ namespace OpenSim.Region.Environment.Scenes
2012 /// </summary> 2012 /// </summary>
2013 public void UnRegisterReginWithComms() 2013 public void UnRegisterReginWithComms()
2014 { 2014 {
2015 m_sceneGridService.KillObject -= SendKillObject;
2016 m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid;
2015 m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; 2017 m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar;
2016 m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; 2018 m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup;
2017 m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; 2019 m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
@@ -2064,6 +2066,34 @@ namespace OpenSim.Region.Environment.Scenes
2064 } 2066 }
2065 } 2067 }
2066 2068
2069 protected void HandleLogOffUserFromGrid(ulong regionHandle, LLUUID AvatarID, LLUUID RegionSecret, string message)
2070 {
2071 if (RegionInfo.RegionHandle == regionHandle)
2072 {
2073 ScenePresence loggingOffUser = null;
2074 loggingOffUser = GetScenePresence(AvatarID);
2075 if (loggingOffUser != null)
2076 {
2077 if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId)
2078 {
2079 loggingOffUser.ControllingClient.Kick(message);
2080 // Give them a second to receive the message!
2081 System.Threading.Thread.Sleep(1000);
2082 loggingOffUser.ControllingClient.Close(true);
2083 }
2084 else
2085 {
2086 m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate");
2087 }
2088 }
2089 else
2090 {
2091 m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString());
2092 }
2093 }
2094
2095
2096 }
2067 /// <summary> 2097 /// <summary>
2068 /// Add a caps handler for the given agent. If the CAPS handler already exists for this agent, 2098 /// Add a caps handler for the given agent. If the CAPS handler already exists for this agent,
2069 /// then it is replaced by a new CAPS handler. 2099 /// then it is replaced by a new CAPS handler.