mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 09:45:47 +08:00
Temporary fix for the region crossing crash, Although we need to start to change and improve how we handle caps.
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Net;
|
||||
@@ -41,6 +42,7 @@ namespace OpenSim.Framework.Utilities
|
||||
private static Random randomClass = new Random();
|
||||
private static uint nextXferID = 5000;
|
||||
private static object XferLock = new object();
|
||||
private static Dictionary<LLUUID, string> capsURLS = new Dictionary<LLUUID, string>();
|
||||
|
||||
public static ulong UIntsToLong(uint X, uint Y)
|
||||
{
|
||||
@@ -66,6 +68,11 @@ namespace OpenSim.Framework.Utilities
|
||||
return id;
|
||||
}
|
||||
|
||||
public Util()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static string GetFileName(string file)
|
||||
{
|
||||
// Return just the filename on UNIX platforms
|
||||
@@ -311,9 +318,25 @@ namespace OpenSim.Framework.Utilities
|
||||
return temp;
|
||||
}
|
||||
|
||||
public Util()
|
||||
public static string GetCapsURL(LLUUID userID)
|
||||
{
|
||||
if (capsURLS.ContainsKey(userID))
|
||||
{
|
||||
return capsURLS[userID];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void SetCapsURL(LLUUID userID, string url)
|
||||
{
|
||||
if (capsURLS.ContainsKey(userID))
|
||||
{
|
||||
capsURLS[userID] = url;
|
||||
}
|
||||
else
|
||||
{
|
||||
capsURLS.Add(userID, url);
|
||||
}
|
||||
}
|
||||
|
||||
// Nini (config) related Methods
|
||||
|
||||
@@ -47,6 +47,11 @@ namespace OpenSim.Framework.Servers
|
||||
protected int m_port;
|
||||
protected bool m_firstcaps = true;
|
||||
|
||||
public int Port
|
||||
{
|
||||
get { return m_port; }
|
||||
}
|
||||
|
||||
public BaseHttpServer(int port)
|
||||
{
|
||||
m_port = port;
|
||||
|
||||
@@ -369,124 +369,6 @@ namespace OpenSim.Framework.UserManagement
|
||||
}
|
||||
}
|
||||
|
||||
// Rest and XML-RPC methods. (could move them to a sub class in the user server?)
|
||||
|
||||
/// <summary>
|
||||
/// Deletes an active agent session
|
||||
/// </summary>
|
||||
/// <param name="request">The request</param>
|
||||
/// <param name="path">The path (eg /bork/narf/test)</param>
|
||||
/// <param name="param">Parameters sent</param>
|
||||
/// <returns>Success "OK" else error</returns>
|
||||
public string RestDeleteUserSessionMethod(string request, string path, string param)
|
||||
{
|
||||
// TODO! Important!
|
||||
|
||||
return "OK";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns an error message that the user could not be found in the database
|
||||
/// </summary>
|
||||
/// <returns>XML string consisting of a error element containing individual error(s)</returns>
|
||||
public XmlRpcResponse CreateUnknownUserErrorResponse()
|
||||
{
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
Hashtable responseData = new Hashtable();
|
||||
responseData["error_type"] = "unknown_user";
|
||||
responseData["error_desc"] = "The user requested is not in the database";
|
||||
|
||||
response.Value = responseData;
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a user profile to an XML element which can be returned
|
||||
/// </summary>
|
||||
/// <param name="profile">The user profile</param>
|
||||
/// <returns>A string containing an XML Document of the user profile</returns>
|
||||
public XmlRpcResponse ProfileToXmlRPCResponse(UserProfileData profile)
|
||||
{
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
Hashtable responseData = new Hashtable();
|
||||
|
||||
// Account information
|
||||
responseData["firstname"] = profile.username;
|
||||
responseData["lastname"] = profile.surname;
|
||||
responseData["uuid"] = profile.UUID.ToStringHyphenated();
|
||||
// Server Information
|
||||
responseData["server_inventory"] = profile.userInventoryURI;
|
||||
responseData["server_asset"] = profile.userAssetURI;
|
||||
// Profile Information
|
||||
responseData["profile_about"] = profile.profileAboutText;
|
||||
responseData["profile_firstlife_about"] = profile.profileFirstText;
|
||||
responseData["profile_firstlife_image"] = profile.profileFirstImage.ToStringHyphenated();
|
||||
responseData["profile_can_do"] = profile.profileCanDoMask.ToString();
|
||||
responseData["profile_want_do"] = profile.profileWantDoMask.ToString();
|
||||
responseData["profile_image"] = profile.profileImage.ToStringHyphenated();
|
||||
responseData["profile_created"] = profile.created.ToString();
|
||||
responseData["profile_lastlogin"] = profile.lastLogin.ToString();
|
||||
// Home region information
|
||||
responseData["home_coordinates_x"] = profile.homeLocation.X.ToString();
|
||||
responseData["home_coordinates_y"] = profile.homeLocation.Y.ToString();
|
||||
responseData["home_coordinates_z"] = profile.homeLocation.Z.ToString();
|
||||
|
||||
responseData["home_region"] = profile.homeRegion.ToString();
|
||||
|
||||
responseData["home_look_x"] = profile.homeLookAt.X.ToString();
|
||||
responseData["home_look_y"] = profile.homeLookAt.Y.ToString();
|
||||
responseData["home_look_z"] = profile.homeLookAt.Z.ToString();
|
||||
response.Value = responseData;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
#region XMLRPC User Methods
|
||||
//should most likely move out of here and into the grid's userserver sub class
|
||||
public XmlRpcResponse XmlRPCGetUserMethodName(XmlRpcRequest request)
|
||||
{
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
Hashtable requestData = (Hashtable)request.Params[0];
|
||||
UserProfileData userProfile;
|
||||
if (requestData.Contains("avatar_name"))
|
||||
{
|
||||
userProfile = getUserProfile((string)requestData["avatar_name"]);
|
||||
if (userProfile == null)
|
||||
{
|
||||
return CreateUnknownUserErrorResponse();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return CreateUnknownUserErrorResponse();
|
||||
}
|
||||
|
||||
return ProfileToXmlRPCResponse(userProfile);
|
||||
}
|
||||
|
||||
public XmlRpcResponse XmlRPCGetUserMethodUUID(XmlRpcRequest request)
|
||||
{
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
Hashtable requestData = (Hashtable)request.Params[0];
|
||||
UserProfileData userProfile;
|
||||
System.Console.WriteLine("METHOD BY UUID CALLED");
|
||||
if (requestData.Contains("avatar_uuid"))
|
||||
{
|
||||
userProfile = getUserProfile((LLUUID)(string)requestData["avatar_uuid"]);
|
||||
if (userProfile == null)
|
||||
{
|
||||
return CreateUnknownUserErrorResponse();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return CreateUnknownUserErrorResponse();
|
||||
}
|
||||
|
||||
|
||||
return ProfileToXmlRPCResponse(userProfile);
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Rest and XML-RPC methods. (have moved them to a sub class in the user server)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user