diff options
Diffstat (limited to 'OpenSim/Grid/UserServer/UserLoginService.cs')
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 9b9360d..0eb2db1 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -29,16 +29,15 @@ | |||
29 | using System; | 29 | using System; |
30 | using System.Collections; | 30 | using System.Collections; |
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using System.Net; | ||
33 | using System.Threading; | 32 | using System.Threading; |
34 | using Nwc.XmlRpc; | ||
35 | using libsecondlife; | 33 | using libsecondlife; |
34 | using Nwc.XmlRpc; | ||
36 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
37 | using OpenSim.Framework.Console; | 36 | using OpenSim.Framework.Console; |
38 | using OpenSim.Framework.Servers; | ||
39 | using OpenSim.Framework.Data; | 37 | using OpenSim.Framework.Data; |
38 | using OpenSim.Framework.Servers; | ||
40 | using OpenSim.Framework.UserManagement; | 39 | using OpenSim.Framework.UserManagement; |
41 | using InventoryFolder = OpenSim.Framework.InventoryFolder; | 40 | using InventoryFolder=OpenSim.Framework.InventoryFolder; |
42 | 41 | ||
43 | namespace OpenSim.Grid.UserServer | 42 | namespace OpenSim.Grid.UserServer |
44 | { | 43 | { |
@@ -72,8 +71,8 @@ namespace OpenSim.Grid.UserServer | |||
72 | // Customise the response | 71 | // Customise the response |
73 | //CFK: This is redundant and the next message should always appear. | 72 | //CFK: This is redundant and the next message should always appear. |
74 | //CFK: MainLog.Instance.Verbose("LOGIN", "Home Location"); | 73 | //CFK: MainLog.Instance.Verbose("LOGIN", "Home Location"); |
75 | response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * 256).ToString() + ",r" + | 74 | response.Home = "{'region_handle':[r" + (SimInfo.regionLocX*256).ToString() + ",r" + |
76 | (SimInfo.regionLocY * 256).ToString() + "], " + | 75 | (SimInfo.regionLocY*256).ToString() + "], " + |
77 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + | 76 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + |
78 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + | 77 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + |
79 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + | 78 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + |
@@ -106,7 +105,7 @@ namespace OpenSim.Grid.UserServer | |||
106 | SimParams["firstname"] = theUser.username; | 105 | SimParams["firstname"] = theUser.username; |
107 | SimParams["lastname"] = theUser.surname; | 106 | SimParams["lastname"] = theUser.surname; |
108 | SimParams["agent_id"] = theUser.UUID.ToString(); | 107 | SimParams["agent_id"] = theUser.UUID.ToString(); |
109 | SimParams["circuit_code"] = (Int32)Convert.ToUInt32(response.CircuitCode); | 108 | SimParams["circuit_code"] = (Int32) Convert.ToUInt32(response.CircuitCode); |
110 | SimParams["startpos_x"] = theUser.currentAgent.currentPos.X.ToString(); | 109 | SimParams["startpos_x"] = theUser.currentAgent.currentPos.X.ToString(); |
111 | SimParams["startpos_y"] = theUser.currentAgent.currentPos.Y.ToString(); | 110 | SimParams["startpos_y"] = theUser.currentAgent.currentPos.Y.ToString(); |
112 | SimParams["startpos_z"] = theUser.currentAgent.currentPos.Z.ToString(); | 111 | SimParams["startpos_z"] = theUser.currentAgent.currentPos.Z.ToString(); |
@@ -119,9 +118,9 @@ namespace OpenSim.Grid.UserServer | |||
119 | theUser.currentAgent.currentRegion = SimInfo.UUID; | 118 | theUser.currentAgent.currentRegion = SimInfo.UUID; |
120 | theUser.currentAgent.currentHandle = SimInfo.regionHandle; | 119 | theUser.currentAgent.currentHandle = SimInfo.regionHandle; |
121 | 120 | ||
122 | MainLog.Instance.Verbose("LOGIN", SimInfo.regionName + " @ " + SimInfo.httpServerURI + " " + | 121 | MainLog.Instance.Verbose("LOGIN", SimInfo.regionName + " @ " + SimInfo.httpServerURI + " " + |
123 | SimInfo.regionLocX + "," + SimInfo.regionLocY); | 122 | SimInfo.regionLocX + "," + SimInfo.regionLocY); |
124 | 123 | ||
125 | XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams); | 124 | XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams); |
126 | XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000); | 125 | XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000); |
127 | } | 126 | } |
@@ -129,17 +128,17 @@ namespace OpenSim.Grid.UserServer | |||
129 | { | 128 | { |
130 | tryDefault = true; | 129 | tryDefault = true; |
131 | } | 130 | } |
132 | if(tryDefault) | 131 | if (tryDefault) |
133 | { | 132 | { |
134 | // Send him to default region instead | 133 | // Send him to default region instead |
135 | // Load information from the gridserver | 134 | // Load information from the gridserver |
136 | 135 | ||
137 | ulong defaultHandle = (((ulong)m_config.DefaultX * 256) << 32) | ((ulong) m_config.DefaultY * 256); | 136 | ulong defaultHandle = (((ulong) m_config.DefaultX*256) << 32) | ((ulong) m_config.DefaultY*256); |
138 | 137 | ||
139 | MainLog.Instance.Warn( | 138 | MainLog.Instance.Warn( |
140 | "LOGIN", | 139 | "LOGIN", |
141 | "Home region not available: sending to default " + defaultHandle.ToString()); | 140 | "Home region not available: sending to default " + defaultHandle.ToString()); |
142 | 141 | ||
143 | SimInfo = new RegionProfileData(); | 142 | SimInfo = new RegionProfileData(); |
144 | try | 143 | try |
145 | { | 144 | { |
@@ -149,15 +148,16 @@ namespace OpenSim.Grid.UserServer | |||
149 | 148 | ||
150 | // Customise the response | 149 | // Customise the response |
151 | MainLog.Instance.Verbose("LOGIN", "Home Location"); | 150 | MainLog.Instance.Verbose("LOGIN", "Home Location"); |
152 | response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * 256).ToString() + ",r" + | 151 | response.Home = "{'region_handle':[r" + (SimInfo.regionLocX*256).ToString() + ",r" + |
153 | (SimInfo.regionLocY * 256).ToString() + "], " + | 152 | (SimInfo.regionLocY*256).ToString() + "], " + |
154 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + | 153 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + |
155 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + | 154 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + |
156 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + | 155 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + |
157 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; | 156 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; |
158 | 157 | ||
159 | // Destination | 158 | // Destination |
160 | MainLog.Instance.Verbose("LOGIN", "CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + | 159 | MainLog.Instance.Verbose("LOGIN", |
160 | "CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + | ||
161 | SimInfo.regionLocY); | 161 | SimInfo.regionLocY); |
162 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverIP).ToString(); | 162 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverIP).ToString(); |
163 | response.SimPort = (uint) SimInfo.serverPort; | 163 | response.SimPort = (uint) SimInfo.serverPort; |
@@ -182,7 +182,7 @@ namespace OpenSim.Grid.UserServer | |||
182 | SimParams["firstname"] = theUser.username; | 182 | SimParams["firstname"] = theUser.username; |
183 | SimParams["lastname"] = theUser.surname; | 183 | SimParams["lastname"] = theUser.surname; |
184 | SimParams["agent_id"] = theUser.UUID.ToString(); | 184 | SimParams["agent_id"] = theUser.UUID.ToString(); |
185 | SimParams["circuit_code"] = (Int32)Convert.ToUInt32(response.CircuitCode); | 185 | SimParams["circuit_code"] = (Int32) Convert.ToUInt32(response.CircuitCode); |
186 | SimParams["startpos_x"] = theUser.currentAgent.currentPos.X.ToString(); | 186 | SimParams["startpos_x"] = theUser.currentAgent.currentPos.X.ToString(); |
187 | SimParams["startpos_y"] = theUser.currentAgent.currentPos.Y.ToString(); | 187 | SimParams["startpos_y"] = theUser.currentAgent.currentPos.Y.ToString(); |
188 | SimParams["startpos_z"] = theUser.currentAgent.currentPos.Z.ToString(); | 188 | SimParams["startpos_z"] = theUser.currentAgent.currentPos.Z.ToString(); |
@@ -202,35 +202,34 @@ namespace OpenSim.Grid.UserServer | |||
202 | MainLog.Instance.Warn("LOGIN", "Default region also not available"); | 202 | MainLog.Instance.Warn("LOGIN", "Default region also not available"); |
203 | MainLog.Instance.Warn("LOGIN", e.ToString()); | 203 | MainLog.Instance.Warn("LOGIN", e.ToString()); |
204 | } | 204 | } |
205 | |||
206 | } | 205 | } |
207 | } | 206 | } |
208 | 207 | ||
209 | protected override InventoryData CreateInventoryData(LLUUID userID) | 208 | protected override InventoryData CreateInventoryData(LLUUID userID) |
210 | { | 209 | { |
211 | List<InventoryFolderBase> folders | 210 | List<InventoryFolderBase> folders |
212 | = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>( | 211 | = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>( |
213 | "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID); | 212 | "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID); |
214 | 213 | ||
215 | // In theory, the user will only ever be missing a root folder in situations where a grid | 214 | // In theory, the user will only ever be missing a root folder in situations where a grid |
216 | // which didn't previously run a grid wide inventory server is being transitioned to one | 215 | // which didn't previously run a grid wide inventory server is being transitioned to one |
217 | // which does. | 216 | // which does. |
218 | if (null == folders | folders.Count == 0) | 217 | if (null == folders | folders.Count == 0) |
219 | { | 218 | { |
220 | MainLog.Instance.Warn( | 219 | MainLog.Instance.Warn( |
221 | "LOGIN", | 220 | "LOGIN", |
222 | "A root inventory folder for user ID " + userID + " was not found. A new set" | 221 | "A root inventory folder for user ID " + userID + " was not found. A new set" |
223 | + " of empty inventory folders is being created."); | 222 | + " of empty inventory folders is being created."); |
224 | 223 | ||
225 | RestObjectPoster.BeginPostObject<Guid>( | 224 | RestObjectPoster.BeginPostObject<Guid>( |
226 | m_config.InventoryUrl + "CreateInventory/", userID.UUID); | 225 | m_config.InventoryUrl + "CreateInventory/", userID.UUID); |
227 | 226 | ||
228 | // A big delay should be okay here since the recreation of the user's root folders should | 227 | // A big delay should be okay here since the recreation of the user's root folders should |
229 | // only ever happen once. We need to sleep to let the inventory server do its work - | 228 | // only ever happen once. We need to sleep to let the inventory server do its work - |
230 | // previously 1000ms has been found to be too short. | 229 | // previously 1000ms has been found to be too short. |
231 | Thread.Sleep(10000); | 230 | Thread.Sleep(10000); |
232 | folders = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>( | 231 | folders = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>( |
233 | "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID); | 232 | "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID); |
234 | } | 233 | } |
235 | 234 | ||
236 | if (folders.Count > 0) | 235 | if (folders.Count > 0) |
@@ -247,8 +246,8 @@ namespace OpenSim.Grid.UserServer | |||
247 | TempHash = new Hashtable(); | 246 | TempHash = new Hashtable(); |
248 | TempHash["name"] = InvFolder.name; | 247 | TempHash["name"] = InvFolder.name; |
249 | TempHash["parent_id"] = InvFolder.parentID.ToString(); | 248 | TempHash["parent_id"] = InvFolder.parentID.ToString(); |
250 | TempHash["version"] = (Int32)InvFolder.version; | 249 | TempHash["version"] = (Int32) InvFolder.version; |
251 | TempHash["type_default"] = (Int32)InvFolder.type; | 250 | TempHash["type_default"] = (Int32) InvFolder.type; |
252 | TempHash["folder_id"] = InvFolder.folderID.ToString(); | 251 | TempHash["folder_id"] = InvFolder.folderID.ToString(); |
253 | AgentInventoryArray.Add(TempHash); | 252 | AgentInventoryArray.Add(TempHash); |
254 | } | 253 | } |
@@ -257,8 +256,8 @@ namespace OpenSim.Grid.UserServer | |||
257 | else | 256 | else |
258 | { | 257 | { |
259 | MainLog.Instance.Warn("LOGIN", "The root inventory folder could still not be retrieved" + | 258 | MainLog.Instance.Warn("LOGIN", "The root inventory folder could still not be retrieved" + |
260 | " for user ID " + userID); | 259 | " for user ID " + userID); |
261 | 260 | ||
262 | AgentInventory userInventory = new AgentInventory(); | 261 | AgentInventory userInventory = new AgentInventory(); |
263 | userInventory.CreateRootFolder(userID, false); | 262 | userInventory.CreateRootFolder(userID, false); |
264 | 263 | ||
@@ -269,8 +268,8 @@ namespace OpenSim.Grid.UserServer | |||
269 | TempHash = new Hashtable(); | 268 | TempHash = new Hashtable(); |
270 | TempHash["name"] = InvFolder.FolderName; | 269 | TempHash["name"] = InvFolder.FolderName; |
271 | TempHash["parent_id"] = InvFolder.ParentID.ToString(); | 270 | TempHash["parent_id"] = InvFolder.ParentID.ToString(); |
272 | TempHash["version"] = (Int32)InvFolder.Version; | 271 | TempHash["version"] = (Int32) InvFolder.Version; |
273 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | 272 | TempHash["type_default"] = (Int32) InvFolder.DefaultType; |
274 | TempHash["folder_id"] = InvFolder.FolderID.ToString(); | 273 | TempHash["folder_id"] = InvFolder.FolderID.ToString(); |
275 | AgentInventoryArray.Add(TempHash); | 274 | AgentInventoryArray.Add(TempHash); |
276 | } | 275 | } |
@@ -279,4 +278,4 @@ namespace OpenSim.Grid.UserServer | |||
279 | } | 278 | } |
280 | } | 279 | } |
281 | } | 280 | } |
282 | } | 281 | } \ No newline at end of file |