Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
71c0fc10df
|
@ -44,6 +44,8 @@ namespace OpenSim.Framework.Capabilities
|
||||||
string assetName, string description, UUID assetID, UUID inventoryItem, UUID parentFolder,
|
string assetName, string description, UUID assetID, UUID inventoryItem, UUID parentFolder,
|
||||||
byte[] data, string inventoryType, string assetType);
|
byte[] data, string inventoryType, string assetType);
|
||||||
|
|
||||||
|
public delegate void UploadedBakedTexture(UUID assetID, byte[] data);
|
||||||
|
|
||||||
public delegate UUID UpdateItem(UUID itemID, byte[] data);
|
public delegate UUID UpdateItem(UUID itemID, byte[] data);
|
||||||
|
|
||||||
public delegate void UpdateTaskScript(UUID itemID, UUID primID, bool isScriptRunning, byte[] data, ref ArrayList errors);
|
public delegate void UpdateTaskScript(UUID itemID, UUID primID, bool isScriptRunning, byte[] data, ref ArrayList errors);
|
||||||
|
@ -97,6 +99,7 @@ namespace OpenSim.Framework.Capabilities
|
||||||
// private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module.
|
// private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module.
|
||||||
|
|
||||||
// private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule.
|
// private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule.
|
||||||
|
private static readonly string m_uploadBakedTexturePath = "0010/";// This is in the LandManagementModule.
|
||||||
|
|
||||||
//private string eventQueue = "0100/";
|
//private string eventQueue = "0100/";
|
||||||
private IScene m_Scene;
|
private IScene m_Scene;
|
||||||
|
@ -185,6 +188,8 @@ namespace OpenSim.Framework.Capabilities
|
||||||
m_capsHandlers["UpdateScriptTaskInventory"] =
|
m_capsHandlers["UpdateScriptTaskInventory"] =
|
||||||
new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory);
|
new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory);
|
||||||
m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"];
|
m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"];
|
||||||
|
m_capsHandlers["UploadBakedTexture"] =
|
||||||
|
new RestStreamHandler("POST", capsBase + m_uploadBakedTexturePath, UploadBakedTexture);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -742,6 +747,50 @@ namespace OpenSim.Framework.Capabilities
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string UploadBakedTexture(string request, string path,
|
||||||
|
string param, OSHttpRequest httpRequest,
|
||||||
|
OSHttpResponse httpResponse)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_log.Debug("[CAPS]: UploadBakedTexture Request in region: " +
|
||||||
|
m_regionName);
|
||||||
|
|
||||||
|
string capsBase = "/CAPS/" + m_capsObjectPath;
|
||||||
|
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
|
||||||
|
|
||||||
|
BakedTextureUploader uploader =
|
||||||
|
new BakedTextureUploader( capsBase + uploaderPath,
|
||||||
|
m_httpListener);
|
||||||
|
uploader.OnUpLoad += BakedTextureUploaded;
|
||||||
|
|
||||||
|
m_httpListener.AddStreamHandler(
|
||||||
|
new BinaryStreamHandler("POST", capsBase + uploaderPath,
|
||||||
|
uploader.uploaderCaps));
|
||||||
|
|
||||||
|
string protocol = "http://";
|
||||||
|
|
||||||
|
if (m_httpListener.UseSSL)
|
||||||
|
protocol = "https://";
|
||||||
|
|
||||||
|
string uploaderURL = protocol + m_httpListenerHostName + ":" +
|
||||||
|
m_httpListenPort.ToString() + capsBase + uploaderPath;
|
||||||
|
|
||||||
|
LLSDAssetUploadResponse uploadResponse =
|
||||||
|
new LLSDAssetUploadResponse();
|
||||||
|
uploadResponse.uploader = uploaderURL;
|
||||||
|
uploadResponse.state = "upload";
|
||||||
|
|
||||||
|
return LLSDHelpers.SerialiseLLSDReply(uploadResponse);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.Error("[CAPS]: " + e.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called by the notecard update handler. Provides a URL to which the client can upload a new asset.
|
/// Called by the notecard update handler. Provides a URL to which the client can upload a new asset.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -925,6 +974,17 @@ namespace OpenSim.Framework.Capabilities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void BakedTextureUploaded(UUID assetID, byte[] data)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[CAPS]: Received baked texture {0}", assetID.ToString());
|
||||||
|
AssetBase asset;
|
||||||
|
asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString());
|
||||||
|
asset.Data = data;
|
||||||
|
asset.Temporary = true;
|
||||||
|
asset.Local = true;
|
||||||
|
m_assetCache.Store(asset);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when new asset data for an agent inventory item update has been uploaded.
|
/// Called when new asset data for an agent inventory item update has been uploaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1243,5 +1303,50 @@ namespace OpenSim.Framework.Capabilities
|
||||||
fs.Close();
|
fs.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class BakedTextureUploader
|
||||||
|
{
|
||||||
|
public event UploadedBakedTexture OnUpLoad;
|
||||||
|
private UploadedBakedTexture handlerUpLoad = null;
|
||||||
|
|
||||||
|
private string uploaderPath = String.Empty;
|
||||||
|
private UUID newAssetID;
|
||||||
|
private IHttpServer httpListener;
|
||||||
|
|
||||||
|
public BakedTextureUploader(string path, IHttpServer httpServer)
|
||||||
|
{
|
||||||
|
newAssetID = UUID.Random();
|
||||||
|
uploaderPath = path;
|
||||||
|
httpListener = httpServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
/// <param name="param"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string uploaderCaps(byte[] data, string path, string param)
|
||||||
|
{
|
||||||
|
string res = String.Empty;
|
||||||
|
LLSDAssetUploadComplete uploadComplete = new LLSDAssetUploadComplete();
|
||||||
|
uploadComplete.new_asset = newAssetID.ToString();
|
||||||
|
uploadComplete.new_inventory_item = UUID.Zero;
|
||||||
|
uploadComplete.state = "complete";
|
||||||
|
|
||||||
|
res = LLSDHelpers.SerialiseLLSDReply(uploadComplete);
|
||||||
|
|
||||||
|
httpListener.RemoveStreamHandler("POST", uploaderPath);
|
||||||
|
|
||||||
|
handlerUpLoad = OnUpLoad;
|
||||||
|
if (handlerUpLoad != null)
|
||||||
|
{
|
||||||
|
handlerUpLoad(newAssetID, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3408,6 +3408,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
avp.Sender.IsTrial = false;
|
avp.Sender.IsTrial = false;
|
||||||
avp.Sender.ID = agentID;
|
avp.Sender.ID = agentID;
|
||||||
|
m_log.DebugFormat("[CLIENT]: Sending appearance for {0} to {1}", agentID.ToString(), AgentId.ToString());
|
||||||
OutPacket(avp, ThrottleOutPacketType.Task);
|
OutPacket(avp, ThrottleOutPacketType.Task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -252,7 +252,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (!m_part.ParentGroup.Scene.RegionInfo.RegionSettings.DisableScripts)
|
if (!m_part.ParentGroup.Scene.RegionInfo.RegionSettings.DisableScripts)
|
||||||
{
|
{
|
||||||
if (stateSource == 1 && // Prim crossing
|
if (stateSource == 2 && // Prim crossing
|
||||||
m_part.ParentGroup.Scene.m_trustBinaries)
|
m_part.ParentGroup.Scene.m_trustBinaries)
|
||||||
{
|
{
|
||||||
lock (m_items)
|
lock (m_items)
|
||||||
|
|
|
@ -2464,7 +2464,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_controllingClient.SendAvatarDataImmediate(this);
|
m_controllingClient.SendAvatarDataImmediate(this);
|
||||||
|
|
||||||
SendInitialFullUpdateToAllClients();
|
SendInitialFullUpdateToAllClients();
|
||||||
SendAppearanceToAllOtherAgents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -86,8 +86,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
||||||
paramList.Add(hash);
|
paramList.Add(hash);
|
||||||
|
|
||||||
XmlRpcRequest request = new XmlRpcRequest("link_region", paramList);
|
XmlRpcRequest request = new XmlRpcRequest("link_region", paramList);
|
||||||
string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/";
|
string uri = "http://" + ((info.ServerURI != null && info.ServerURI != string.Empty && !info.ServerURI.StartsWith("http:")) ? info.ServerURI : info.ExternalEndPoint.Address + ":" + info.HttpPort + "/" );
|
||||||
//m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: Linking to " + uri);
|
m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: Linking to " + uri);
|
||||||
XmlRpcResponse response = null;
|
XmlRpcResponse response = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -188,7 +188,7 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
||||||
paramList.Add(hash);
|
paramList.Add(hash);
|
||||||
|
|
||||||
XmlRpcRequest request = new XmlRpcRequest("get_region", paramList);
|
XmlRpcRequest request = new XmlRpcRequest("get_region", paramList);
|
||||||
string uri = "http://" + gatekeeper.ExternalEndPoint.Address + ":" + gatekeeper.HttpPort + "/";
|
string uri = "http://" + ((gatekeeper.ServerURI != null && gatekeeper.ServerURI != string.Empty && !gatekeeper.ServerURI.StartsWith("http:")) ? gatekeeper.ServerURI : gatekeeper.ExternalEndPoint.Address + ":" + gatekeeper.HttpPort + "/");
|
||||||
m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: contacting " + uri);
|
m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: contacting " + uri);
|
||||||
XmlRpcResponse response = null;
|
XmlRpcResponse response = null;
|
||||||
try
|
try
|
||||||
|
|
|
@ -51,15 +51,16 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
string m_ServerURL;
|
string m_ServerURL;
|
||||||
Uri m_Uri;
|
|
||||||
public UserAgentServiceConnector(string url)
|
public UserAgentServiceConnector(string url)
|
||||||
{
|
{
|
||||||
m_ServerURL = url;
|
m_ServerURL = url;
|
||||||
|
// Doing this here, because XML-RPC or mono have some strong ideas about
|
||||||
|
// caching DNS translations.
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_Uri = new Uri(m_ServerURL);
|
Uri m_Uri = new Uri(m_ServerURL);
|
||||||
IPAddress ip = Util.GetHostFromDNS(m_Uri.Host);
|
IPAddress ip = Util.GetHostFromDNS(m_Uri.Host);
|
||||||
m_ServerURL = "http://" + ip.ToString() + ":" + m_Uri.Port;
|
m_ServerURL = m_ServerURL.Replace(m_Uri.Host, ip.ToString()); ;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -104,17 +104,23 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Eventually, we want to use a caps url instead of the agentID
|
|
||||||
string uri = string.Empty;
|
string uri = string.Empty;
|
||||||
try
|
|
||||||
|
// HACK -- Simian grid make it work!!!
|
||||||
|
if (destination.ServerURI != null && destination.ServerURI != string.Empty && !destination.ServerURI.StartsWith("http:"))
|
||||||
|
uri = "http://" + destination.ServerURI + AgentPath() + aCircuit.AgentID + "/";
|
||||||
|
else
|
||||||
{
|
{
|
||||||
uri = "http://" + destination.ExternalEndPoint.Address + ":" + destination.HttpPort + AgentPath() + aCircuit.AgentID + "/";
|
try
|
||||||
}
|
{
|
||||||
catch (Exception e)
|
uri = "http://" + destination.ExternalEndPoint.Address + ":" + destination.HttpPort + AgentPath() + aCircuit.AgentID + "/";
|
||||||
{
|
}
|
||||||
m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent create. Reason: " + e.Message);
|
catch (Exception e)
|
||||||
reason = e.Message;
|
{
|
||||||
return false;
|
m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent create. Reason: " + e.Message);
|
||||||
|
reason = e.Message;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Console.WriteLine(" >>> DoCreateChildAgentCall <<< " + uri);
|
//Console.WriteLine(" >>> DoCreateChildAgentCall <<< " + uri);
|
||||||
|
|
|
@ -158,7 +158,7 @@ namespace OpenSim.Services.GridService
|
||||||
string host = "127.0.0.1";
|
string host = "127.0.0.1";
|
||||||
string portstr;
|
string portstr;
|
||||||
string regionName = "";
|
string regionName = "";
|
||||||
uint port = 9000;
|
uint port = 0;
|
||||||
string[] parts = mapName.Split(new char[] { ':' });
|
string[] parts = mapName.Split(new char[] { ':' });
|
||||||
if (parts.Length >= 1)
|
if (parts.Length >= 1)
|
||||||
{
|
{
|
||||||
|
@ -177,18 +177,16 @@ namespace OpenSim.Services.GridService
|
||||||
regionName = parts[2];
|
regionName = parts[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity check.
|
//// Sanity check.
|
||||||
//IPAddress ipaddr = null;
|
//try
|
||||||
try
|
//{
|
||||||
{
|
// Util.GetHostFromDNS(host);
|
||||||
//ipaddr = Util.GetHostFromDNS(host);
|
//}
|
||||||
Util.GetHostFromDNS(host);
|
//catch
|
||||||
}
|
//{
|
||||||
catch
|
// reason = "Malformed hostname";
|
||||||
{
|
// return null;
|
||||||
reason = "Malformed hostname";
|
//}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
GridRegion regInfo;
|
GridRegion regInfo;
|
||||||
bool success = TryCreateLink(scopeID, xloc, yloc, regionName, port, host, out regInfo, out reason);
|
bool success = TryCreateLink(scopeID, xloc, yloc, regionName, port, host, out regInfo, out reason);
|
||||||
|
@ -217,6 +215,11 @@ namespace OpenSim.Services.GridService
|
||||||
regInfo.RegionLocY = yloc;
|
regInfo.RegionLocY = yloc;
|
||||||
regInfo.ScopeID = scopeID;
|
regInfo.ScopeID = scopeID;
|
||||||
|
|
||||||
|
// Big HACK for Simian Grid !!!
|
||||||
|
// We need to clean up all URLs used in OpenSim !!!
|
||||||
|
if (externalHostName.Contains("/"))
|
||||||
|
regInfo.ServerURI = externalHostName;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
regInfo.InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int)0);
|
regInfo.InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int)0);
|
||||||
|
|
|
@ -293,13 +293,35 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public virtual bool AddFolder(InventoryFolderBase folder)
|
public virtual bool AddFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
|
InventoryFolderBase check = GetFolder(folder);
|
||||||
|
if (check != null)
|
||||||
|
return false;
|
||||||
|
|
||||||
XInventoryFolder xFolder = ConvertFromOpenSim(folder);
|
XInventoryFolder xFolder = ConvertFromOpenSim(folder);
|
||||||
return m_Database.StoreFolder(xFolder);
|
return m_Database.StoreFolder(xFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool UpdateFolder(InventoryFolderBase folder)
|
public virtual bool UpdateFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return AddFolder(folder);
|
XInventoryFolder xFolder = ConvertFromOpenSim(folder);
|
||||||
|
InventoryFolderBase check = GetFolder(folder);
|
||||||
|
if (check == null)
|
||||||
|
return AddFolder(folder);
|
||||||
|
|
||||||
|
if (check.Type != -1 || xFolder.type != -1)
|
||||||
|
{
|
||||||
|
if (xFolder.version > check.Version)
|
||||||
|
return false;
|
||||||
|
check.Version = (ushort)xFolder.version;
|
||||||
|
xFolder = ConvertFromOpenSim(check);
|
||||||
|
return m_Database.StoreFolder(xFolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xFolder.version < check.Version)
|
||||||
|
xFolder.version = check.Version;
|
||||||
|
xFolder.folderID = check.ID;
|
||||||
|
|
||||||
|
return m_Database.StoreFolder(xFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool MoveFolder(InventoryFolderBase folder)
|
public virtual bool MoveFolder(InventoryFolderBase folder)
|
||||||
|
|
Loading…
Reference in New Issue