diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Util.cs | 10 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 61 |
2 files changed, 37 insertions, 34 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 2a21221..09bf029 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -362,6 +362,16 @@ namespace OpenSim.Framework | |||
362 | } | 362 | } |
363 | 363 | ||
364 | /// <summary> | 364 | /// <summary> |
365 | /// Converts a URL to a IPAddress | ||
366 | /// </summary> | ||
367 | /// <param name="url">URL Standard Format</param> | ||
368 | /// <returns>A resolved IP Address</returns> | ||
369 | public static IPAddress GetHostFromURL(string url) | ||
370 | { | ||
371 | return GetHostFromDNS(url.Split(new char[] {'/', ':'})[3]); | ||
372 | } | ||
373 | |||
374 | /// <summary> | ||
365 | /// Returns a IP address from a specified DNS, favouring IPv4 addresses. | 375 | /// Returns a IP address from a specified DNS, favouring IPv4 addresses. |
366 | /// </summary> | 376 | /// </summary> |
367 | /// <param name="dnsAddress">DNS Hostname</param> | 377 | /// <param name="dnsAddress">DNS Hostname</param> |
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index e897787..972f363 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -36,7 +36,6 @@ using OpenSim.Data; | |||
36 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
37 | using OpenSim.Framework.Communications; | 37 | using OpenSim.Framework.Communications; |
38 | using OpenSim.Framework.Communications.Cache; | 38 | using OpenSim.Framework.Communications.Cache; |
39 | using OpenSim.Framework.Servers; | ||
40 | 39 | ||
41 | namespace OpenSim.Grid.UserServer | 40 | namespace OpenSim.Grid.UserServer |
42 | { | 41 | { |
@@ -51,7 +50,7 @@ namespace OpenSim.Grid.UserServer | |||
51 | 50 | ||
52 | public event UserLoggedInAtLocation OnUserLoggedInAtLocation; | 51 | public event UserLoggedInAtLocation OnUserLoggedInAtLocation; |
53 | 52 | ||
54 | private UserLoggedInAtLocation handlerUserLoggedInAtLocation = null; | 53 | private UserLoggedInAtLocation handlerUserLoggedInAtLocation; |
55 | 54 | ||
56 | public UserConfig m_config; | 55 | public UserConfig m_config; |
57 | 56 | ||
@@ -66,7 +65,7 @@ namespace OpenSim.Grid.UserServer | |||
66 | 65 | ||
67 | public override void LogOffUser(UserProfileData theUser, string message) | 66 | public override void LogOffUser(UserProfileData theUser, string message) |
68 | { | 67 | { |
69 | RegionProfileData SimInfo = null; | 68 | RegionProfileData SimInfo; |
70 | try | 69 | try |
71 | { | 70 | { |
72 | SimInfo = RegionProfileData.RequestSimProfileData( | 71 | SimInfo = RegionProfileData.RequestSimProfileData( |
@@ -131,6 +130,7 @@ namespace OpenSim.Grid.UserServer | |||
131 | /// </summary> | 130 | /// </summary> |
132 | /// <param name="response">The existing response</param> | 131 | /// <param name="response">The existing response</param> |
133 | /// <param name="theUser">The user profile</param> | 132 | /// <param name="theUser">The user profile</param> |
133 | /// <param name="startLocationRequest">Destination of the user</param> | ||
134 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) | 134 | public override void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) |
135 | { | 135 | { |
136 | bool tryDefault = false; | 136 | bool tryDefault = false; |
@@ -139,8 +139,8 @@ namespace OpenSim.Grid.UserServer | |||
139 | 139 | ||
140 | try | 140 | try |
141 | { | 141 | { |
142 | RegionProfileData SimInfo = null; | 142 | RegionProfileData SimInfo; |
143 | RegionProfileData HomeInfo = null; | 143 | RegionProfileData HomeInfo; |
144 | int start_x = -1; | 144 | int start_x = -1; |
145 | int start_y = -1; | 145 | int start_y = -1; |
146 | int start_z = -1; | 146 | int start_z = -1; |
@@ -178,7 +178,6 @@ namespace OpenSim.Grid.UserServer | |||
178 | m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" + startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]); | 178 | m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" + startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]); |
179 | if (startLocationRequestParsed[0] == "last") | 179 | if (startLocationRequestParsed[0] == "last") |
180 | { | 180 | { |
181 | // TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z' | ||
182 | SimInfo = | 181 | SimInfo = |
183 | RegionProfileData.RequestSimProfileData( | 182 | RegionProfileData.RequestSimProfileData( |
184 | theUser.CurrentAgent.Handle, m_config.GridServerURL, | 183 | theUser.CurrentAgent.Handle, m_config.GridServerURL, |
@@ -209,19 +208,18 @@ namespace OpenSim.Grid.UserServer | |||
209 | // Customise the response | 208 | // Customise the response |
210 | //CFK: This is redundant and the next message should always appear. | 209 | //CFK: This is redundant and the next message should always appear. |
211 | //CFK: m_log.Info("[LOGIN]: Home Location"); | 210 | //CFK: m_log.Info("[LOGIN]: Home Location"); |
212 | response.Home = "{'region_handle':[r" + (HomeInfo.regionLocX * Constants.RegionSize).ToString() + ",r" + | 211 | response.Home = string.Format("{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", |
213 | (HomeInfo.regionLocY * Constants.RegionSize).ToString() + "], " + | 212 | (HomeInfo.regionLocX * Constants.RegionSize), |
214 | "'position':[r" + theUser.HomeLocation.X.ToString() + ",r" + | 213 | (HomeInfo.regionLocY * Constants.RegionSize), |
215 | theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " + | 214 | theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z, |
216 | "'look_at':[r" + theUser.HomeLookAt.X.ToString() + ",r" + | 215 | theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z); |
217 | theUser.HomeLookAt.Y.ToString() + ",r" + theUser.HomeLookAt.Z.ToString() + "]}"; | ||
218 | 216 | ||
219 | // Destination | 217 | // Destination |
220 | //CFK: The "Notifying" message always seems to appear, so subsume the data from this message into | 218 | //CFK: The "Notifying" message always seems to appear, so subsume the data from this message into |
221 | //CFK: the next one for X & Y and comment this one. | 219 | //CFK: the next one for X & Y and comment this one. |
222 | //CFK: m_log.Info("[LOGIN]: CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + | 220 | //CFK: m_log.Info("[LOGIN]: CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + |
223 | //CFK: "; Region Y: " + SimInfo.regionLocY); | 221 | //CFK: "; Region Y: " + SimInfo.regionLocY); |
224 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString(); | 222 | response.SimAddress = Util.GetHostFromURL(SimInfo.serverURI).ToString(); |
225 | response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]); | 223 | response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]); |
226 | response.RegionX = SimInfo.regionLocX; | 224 | response.RegionX = SimInfo.regionLocX; |
227 | response.RegionY = SimInfo.regionLocY; | 225 | response.RegionY = SimInfo.regionLocY; |
@@ -323,7 +321,7 @@ namespace OpenSim.Grid.UserServer | |||
323 | ulong defaultHandle = (((ulong)m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong)m_config.DefaultY * Constants.RegionSize); | 321 | ulong defaultHandle = (((ulong)m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong)m_config.DefaultY * Constants.RegionSize); |
324 | 322 | ||
325 | m_log.Warn( | 323 | m_log.Warn( |
326 | "[LOGIN]: Home region not available: sending to default " + defaultHandle.ToString()); | 324 | "[LOGIN]: Home region not available: sending to default " + defaultHandle); |
327 | 325 | ||
328 | try | 326 | try |
329 | { | 327 | { |
@@ -333,18 +331,20 @@ namespace OpenSim.Grid.UserServer | |||
333 | 331 | ||
334 | // Customise the response | 332 | // Customise the response |
335 | m_log.Info("[LOGIN]: Home Location"); | 333 | m_log.Info("[LOGIN]: Home Location"); |
336 | response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize).ToString() + ",r" + | 334 | response.Home = |
337 | (SimInfo.regionLocY * Constants.RegionSize).ToString() + "], " + | 335 | string.Format( |
338 | "'position':[r" + theUser.HomeLocation.X.ToString() + ",r" + | 336 | "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", |
339 | theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " + | 337 | (SimInfo.regionLocX*Constants.RegionSize), |
340 | "'look_at':[r" + theUser.HomeLocation.X.ToString() + ",r" + | 338 | (SimInfo.regionLocY*Constants.RegionSize), |
341 | theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "]}"; | 339 | theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z, |
340 | theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z); | ||
341 | |||
342 | 342 | ||
343 | // Destination | 343 | // Destination |
344 | m_log.Info("[LOGIN]: " + | 344 | m_log.Info("[LOGIN]: " + |
345 | "CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + | 345 | "CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + |
346 | SimInfo.regionLocY); | 346 | SimInfo.regionLocY); |
347 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString(); | 347 | response.SimAddress = Util.GetHostFromURL(SimInfo.serverURI).ToString(); |
348 | response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]); | 348 | response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]); |
349 | response.RegionX = SimInfo.regionLocX; | 349 | response.RegionX = SimInfo.regionLocX; |
350 | response.RegionY = SimInfo.regionLocY; | 350 | response.RegionY = SimInfo.regionLocY; |
@@ -394,7 +394,6 @@ namespace OpenSim.Grid.UserServer | |||
394 | if ((string)resp["success"] == "FALSE") | 394 | if ((string)resp["success"] == "FALSE") |
395 | { | 395 | { |
396 | responseSuccess = false; | 396 | responseSuccess = false; |
397 | tryDefault = true; | ||
398 | } | 397 | } |
399 | } | 398 | } |
400 | } | 399 | } |
@@ -424,7 +423,7 @@ namespace OpenSim.Grid.UserServer | |||
424 | catch (Exception e) | 423 | catch (Exception e) |
425 | { | 424 | { |
426 | m_log.Warn("[LOGIN]: Default region also not available"); | 425 | m_log.Warn("[LOGIN]: Default region also not available"); |
427 | m_log.Warn("[LOGIN]: " + e.ToString()); | 426 | m_log.Warn("[LOGIN]: " + e); |
428 | } | 427 | } |
429 | } | 428 | } |
430 | } | 429 | } |
@@ -455,10 +454,7 @@ namespace OpenSim.Grid.UserServer | |||
455 | + " Please contact your inventory service provider for more information.", | 454 | + " Please contact your inventory service provider for more information.", |
456 | userID)); | 455 | userID)); |
457 | } | 456 | } |
458 | else | 457 | m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID); |
459 | { | ||
460 | m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID); | ||
461 | } | ||
462 | 458 | ||
463 | folders = m_inventoryService.GetInventorySkeleton(userID); | 459 | folders = m_inventoryService.GetInventorySkeleton(userID); |
464 | } | 460 | } |
@@ -488,13 +484,10 @@ namespace OpenSim.Grid.UserServer | |||
488 | 484 | ||
489 | return new InventoryData(AgentInventoryArray, rootID); | 485 | return new InventoryData(AgentInventoryArray, rootID); |
490 | } | 486 | } |
491 | else | 487 | throw new Exception( |
492 | { | 488 | String.Format( |
493 | throw new Exception( | 489 | "A root inventory folder for user {0} could not be retrieved from the inventory service", |
494 | String.Format( | 490 | userID)); |
495 | "A root inventory folder for user {0} could not be retrieved from the inventory service", | ||
496 | userID)); | ||
497 | } | ||
498 | } | 491 | } |
499 | } | 492 | } |
500 | } | 493 | } |