diff options
author | Teravus Ovares | 2008-05-31 12:18:29 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-05-31 12:18:29 +0000 |
commit | febe78d06249cd4d36a86e97610dd45ab518a757 (patch) | |
tree | 7b9733fc14045f09e874440b923cfe443b781b6a /OpenSim/Region/Environment | |
parent | Mantis#1425. Thank you kindly, Melanie for a patch that: (diff) | |
download | opensim-SC_OLD-febe78d06249cd4d36a86e97610dd45ab518a757.zip opensim-SC_OLD-febe78d06249cd4d36a86e97610dd45ab518a757.tar.gz opensim-SC_OLD-febe78d06249cd4d36a86e97610dd45ab518a757.tar.bz2 opensim-SC_OLD-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')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 34 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | 13 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 1 |
3 files changed, 46 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. |
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index d2d75e8..e841ad4 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -58,6 +58,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
58 | public event RegionUp OnRegionUp; | 58 | public event RegionUp OnRegionUp; |
59 | public event ChildAgentUpdate OnChildAgentUpdate; | 59 | public event ChildAgentUpdate OnChildAgentUpdate; |
60 | public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar; | 60 | public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar; |
61 | public event LogOffUser OnLogOffUser; | ||
61 | 62 | ||
62 | private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion; | 63 | private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion; |
63 | private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser; | 64 | private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser; |
@@ -67,6 +68,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
67 | private RegionUp handlerRegionUp = null; // OnRegionUp; | 68 | private RegionUp handlerRegionUp = null; // OnRegionUp; |
68 | private ChildAgentUpdate handlerChildAgentUpdate = null; // OnChildAgentUpdate; | 69 | private ChildAgentUpdate handlerChildAgentUpdate = null; // OnChildAgentUpdate; |
69 | private RemoveKnownRegionsFromAvatarList handlerRemoveKnownRegionFromAvatar = null; // OnRemoveKnownRegionFromAvatar; | 70 | private RemoveKnownRegionsFromAvatarList handlerRemoveKnownRegionFromAvatar = null; // OnRemoveKnownRegionFromAvatar; |
71 | private LogOffUser handlerLogOffUser = null; | ||
70 | 72 | ||
71 | public KillObjectDelegate KillObject; | 73 | public KillObjectDelegate KillObject; |
72 | public string _debugRegionName = String.Empty; | 74 | public string _debugRegionName = String.Empty; |
@@ -105,6 +107,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
105 | regionCommsHost.OnCloseAgentConnection += CloseConnection; | 107 | regionCommsHost.OnCloseAgentConnection += CloseConnection; |
106 | regionCommsHost.OnRegionUp += newRegionUp; | 108 | regionCommsHost.OnRegionUp += newRegionUp; |
107 | regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate; | 109 | regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate; |
110 | regionCommsHost.OnLogOffUser += GridLogOffUser; | ||
108 | } | 111 | } |
109 | else | 112 | else |
110 | { | 113 | { |
@@ -121,6 +124,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
121 | { | 124 | { |
122 | if (regionCommsHost != null) | 125 | if (regionCommsHost != null) |
123 | { | 126 | { |
127 | regionCommsHost.OnLogOffUser -= GridLogOffUser; | ||
124 | regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate; | 128 | regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate; |
125 | regionCommsHost.OnRegionUp -= newRegionUp; | 129 | regionCommsHost.OnRegionUp -= newRegionUp; |
126 | regionCommsHost.OnExpectUser -= NewUserConnection; | 130 | regionCommsHost.OnExpectUser -= NewUserConnection; |
@@ -150,6 +154,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
150 | } | 154 | } |
151 | } | 155 | } |
152 | 156 | ||
157 | protected void GridLogOffUser(ulong regionHandle, LLUUID AgentID, LLUUID RegionSecret, string message) | ||
158 | { | ||
159 | handlerLogOffUser = OnLogOffUser; | ||
160 | if (handlerLogOffUser != null) | ||
161 | { | ||
162 | handlerLogOffUser(regionHandle, AgentID, RegionSecret, message); | ||
163 | } | ||
164 | } | ||
165 | |||
153 | protected bool newRegionUp(RegionInfo region) | 166 | protected bool newRegionUp(RegionInfo region) |
154 | { | 167 | { |
155 | handlerRegionUp = OnRegionUp; | 168 | handlerRegionUp = OnRegionUp; |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 30075da..0fdd720 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -596,6 +596,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
596 | m_scene.SendAllSceneObjectsToClient(this); | 596 | m_scene.SendAllSceneObjectsToClient(this); |
597 | 597 | ||
598 | m_scene.EventManager.TriggerOnMakeRootAgent(this); | 598 | m_scene.EventManager.TriggerOnMakeRootAgent(this); |
599 | m_scene.CommsManager.UserService.UpdateUserCurrentRegion(UUID, m_scene.RegionInfo.RegionID, m_scene.RegionInfo.RegionHandle); | ||
599 | 600 | ||
600 | //m_gotAllObjectsInScene = true; | 601 | //m_gotAllObjectsInScene = true; |
601 | //} | 602 | //} |