Merge branch 'master' into careminster-presence-refactor
commit
fc33d569cd
|
@ -167,6 +167,7 @@ This software uses components from the following developers:
|
|||
* GlynnTucker.Cache (http://gtcache.sourceforge.net/)
|
||||
* NDesk.Options 0.2.1 (http://www.ndesk.org/Options)
|
||||
* Json.NET 3.5 Release 6. The binary used is actually Newtonsoft.Json.Net20.dll for Mono 2.4 compatability (http://james.newtonking.com/projects/json-net.aspx)
|
||||
* zlib.net for C# 1.0.4 (http://www.componentace.com/zlib_.NET.htm)
|
||||
|
||||
Some plugins are based on Cable Beach
|
||||
Cable Beach is Copyright (c) 2008 Intel Corporation
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace OpenSim.Framework.Capabilities
|
|||
/// <returns></returns>
|
||||
public static string GetCapsSeedPath(string capsObjectPath)
|
||||
{
|
||||
return "/CAPS/" + capsObjectPath + "0000/";
|
||||
return "CAPS/" + capsObjectPath + "0000/";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -116,8 +116,20 @@ namespace OpenSim.Framework
|
|||
/// </summary>
|
||||
public string ServerURI
|
||||
{
|
||||
get { return m_serverURI; }
|
||||
set { m_serverURI = value; }
|
||||
get {
|
||||
if ( m_serverURI != string.Empty ) {
|
||||
return m_serverURI;
|
||||
} else {
|
||||
return "http://" + m_externalHostName + ":" + m_httpPort + "/";
|
||||
}
|
||||
}
|
||||
set {
|
||||
if ( value.EndsWith("/") ) {
|
||||
m_serverURI = value;
|
||||
} else {
|
||||
m_serverURI = value + '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
protected string m_serverURI;
|
||||
|
||||
|
@ -142,6 +154,7 @@ namespace OpenSim.Framework
|
|||
|
||||
public SimpleRegionInfo()
|
||||
{
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
||||
|
@ -151,6 +164,7 @@ namespace OpenSim.Framework
|
|||
|
||||
m_internalEndPoint = internalEndPoint;
|
||||
m_externalHostName = externalUri;
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port)
|
||||
|
@ -161,6 +175,7 @@ namespace OpenSim.Framework
|
|||
m_externalHostName = externalUri;
|
||||
|
||||
m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port);
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public SimpleRegionInfo(RegionInfo ConvertFrom)
|
||||
|
@ -450,6 +465,7 @@ namespace OpenSim.Framework
|
|||
configMember =
|
||||
new ConfigurationMember(xmlNode, description, loadConfigurationOptions, handleIncomingConfiguration, !skipConsoleConfig);
|
||||
configMember.performConfigurationRetrieve();
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
||||
|
@ -459,10 +475,12 @@ namespace OpenSim.Framework
|
|||
|
||||
m_internalEndPoint = internalEndPoint;
|
||||
m_externalHostName = externalUri;
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public RegionInfo()
|
||||
{
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public EstateSettings EstateSettings
|
||||
|
@ -552,10 +570,23 @@ namespace OpenSim.Framework
|
|||
/// <summary>
|
||||
/// A well-formed URI for the host region server (namely "http://" + ExternalHostName)
|
||||
/// </summary>
|
||||
|
||||
public string ServerURI
|
||||
{
|
||||
get { return m_serverURI; }
|
||||
set { m_serverURI = value; }
|
||||
get {
|
||||
if ( m_serverURI != string.Empty ) {
|
||||
return m_serverURI;
|
||||
} else {
|
||||
return "http://" + m_externalHostName + ":" + m_httpPort + "/";
|
||||
}
|
||||
}
|
||||
set {
|
||||
if ( value.EndsWith("/") ) {
|
||||
m_serverURI = value;
|
||||
} else {
|
||||
m_serverURI = value + '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string RegionName
|
||||
|
|
|
@ -348,7 +348,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
{
|
||||
try
|
||||
{
|
||||
// m_log.Debug("[BASE HTTP SERVER]: Handling request to " + request.RawUrl);
|
||||
//m_log.Debug("[BASE HTTP SERVER]: Handling request to " + request.RawUrl);
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", true);
|
||||
|
||||
|
@ -376,7 +376,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
string path = request.RawUrl;
|
||||
string handlerKey = GetHandlerKey(request.HttpMethod, path);
|
||||
|
||||
// m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
|
||||
//m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
|
||||
|
||||
if (TryGetStreamHandler(handlerKey, out requestHandler))
|
||||
{
|
||||
|
|
|
@ -336,8 +336,8 @@ namespace OpenSim
|
|||
//regionInfo.originRegionID = regionInfo.RegionID;
|
||||
|
||||
// set initial ServerURI
|
||||
regionInfo.ServerURI = "http://" + regionInfo.ExternalHostName + ":" + regionInfo.InternalEndPoint.Port;
|
||||
regionInfo.HttpPort = m_httpServerPort;
|
||||
regionInfo.ServerURI = "http://" + regionInfo.ExternalHostName + ":" + regionInfo.HttpPort.ToString() + "/";
|
||||
|
||||
regionInfo.osSecret = m_osSecret;
|
||||
|
||||
|
|
|
@ -598,7 +598,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
|||
try
|
||||
{
|
||||
|
||||
XmlRpcResponse GridResp = GridReq.Send("http://" + reginfo.ExternalHostName + ":" + reginfo.HttpPort, 3000);
|
||||
XmlRpcResponse GridResp = GridReq.Send(reginfo.ServerURI, 3000);
|
||||
|
||||
Hashtable responseData = (Hashtable)GridResp.Value;
|
||||
|
||||
|
@ -620,8 +620,8 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
|||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
m_log.ErrorFormat("[GRID INSTANT MESSAGE]: Error sending message to http://{0}:{1} the host didn't respond ({2})",
|
||||
reginfo.ExternalHostName, reginfo.HttpPort, e.Message);
|
||||
m_log.ErrorFormat("[GRID INSTANT MESSAGE]: Error sending message to {0}} the host didn't respond ({2})",
|
||||
reginfo.ServerURI, e.Message);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -159,8 +159,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
|||
|
||||
private void OnInstantMessage(IClientAPI client, GridInstantMessage im)
|
||||
{
|
||||
//m_log.InfoFormat("[INVENTORY TRANSFER]: OnInstantMessage {0}", im.dialog);
|
||||
|
||||
// m_log.DebugFormat(
|
||||
// "[INVENTORY TRANSFER]: {0} IM type received from {1}",
|
||||
// (InstantMessageDialog)im.dialog, client.Name);
|
||||
|
||||
Scene scene = FindClientScene(client.AgentId);
|
||||
|
||||
if (scene == null) // Something seriously wrong here.
|
||||
|
|
|
@ -0,0 +1,377 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Specialized;
|
||||
using System.Reflection;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using Mono.Addins;
|
||||
using log4net;
|
||||
using Nini.Config;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenMetaverse.Messages.Linden;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using Caps = OpenSim.Framework.Capabilities.Caps;
|
||||
using OSD = OpenMetaverse.StructuredData.OSD;
|
||||
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
|
||||
using OpenSim.Framework.Capabilities;
|
||||
using ExtraParamType = OpenMetaverse.ExtraParamType;
|
||||
|
||||
namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
|
||||
{
|
||||
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
|
||||
public class UploadObjectAssetModule : INonSharedRegionModule
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private Scene m_scene;
|
||||
|
||||
#region IRegionModuleBase Members
|
||||
|
||||
|
||||
public Type ReplaceableInterface
|
||||
{
|
||||
get { return null; }
|
||||
}
|
||||
|
||||
public void Initialise(IConfigSource source)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void AddRegion(Scene pScene)
|
||||
{
|
||||
m_scene = pScene;
|
||||
}
|
||||
|
||||
public void RemoveRegion(Scene scene)
|
||||
{
|
||||
|
||||
m_scene.EventManager.OnRegisterCaps -= RegisterCaps;
|
||||
m_scene = null;
|
||||
}
|
||||
|
||||
public void RegionLoaded(Scene scene)
|
||||
{
|
||||
|
||||
m_scene.EventManager.OnRegisterCaps += RegisterCaps;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region IRegionModule Members
|
||||
|
||||
|
||||
|
||||
public void Close() { }
|
||||
|
||||
public string Name { get { return "UploadObjectAssetModuleModule"; } }
|
||||
|
||||
|
||||
public void RegisterCaps(UUID agentID, Caps caps)
|
||||
{
|
||||
UUID capID = UUID.Random();
|
||||
|
||||
m_log.Info("[UploadObjectAssetModule]: /CAPS/" + capID);
|
||||
caps.RegisterHandler("UploadObjectAsset",
|
||||
new RestHTTPHandler("POST", "/CAPS/OA/" + capID + "/",
|
||||
delegate(Hashtable m_dhttpMethod)
|
||||
{
|
||||
return ProcessAdd(m_dhttpMethod, agentID, caps);
|
||||
}));
|
||||
/*
|
||||
caps.RegisterHandler("NewFileAgentInventoryVariablePrice",
|
||||
|
||||
new LLSDStreamhandler<LLSDAssetUploadRequest, LLSDNewFileAngentInventoryVariablePriceReplyResponse>("POST",
|
||||
"/CAPS/" + capID.ToString(),
|
||||
delegate(LLSDAssetUploadRequest req)
|
||||
{
|
||||
return NewAgentInventoryRequest(req,agentID);
|
||||
}));
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Parses ad request
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="AgentId"></param>
|
||||
/// <param name="cap"></param>
|
||||
/// <returns></returns>
|
||||
public Hashtable ProcessAdd(Hashtable request, UUID AgentId, Caps cap)
|
||||
{
|
||||
Hashtable responsedata = new Hashtable();
|
||||
responsedata["int_response_code"] = 400; //501; //410; //404;
|
||||
responsedata["content_type"] = "text/plain";
|
||||
responsedata["keepalive"] = false;
|
||||
responsedata["str_response_string"] = "Request wasn't what was expected";
|
||||
ScenePresence avatar;
|
||||
|
||||
if (!m_scene.TryGetScenePresence(AgentId, out avatar))
|
||||
return responsedata;
|
||||
|
||||
OSDMap r = (OSDMap)OSDParser.Deserialize((string)request["requestbody"]);
|
||||
UploadObjectAssetMessage message = new UploadObjectAssetMessage();
|
||||
try
|
||||
{
|
||||
message.Deserialize(r);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
m_log.Error("[UploadObjectAssetModule]: Error deserializing message " + ex.ToString());
|
||||
message = null;
|
||||
}
|
||||
|
||||
if (message == null)
|
||||
{
|
||||
responsedata["int_response_code"] = 400; //501; //410; //404;
|
||||
responsedata["content_type"] = "text/plain";
|
||||
responsedata["keepalive"] = false;
|
||||
responsedata["str_response_string"] =
|
||||
"<llsd><map><key>error</key><string>Error parsing Object</string></map></llsd>";
|
||||
|
||||
return responsedata;
|
||||
}
|
||||
|
||||
Vector3 pos = avatar.AbsolutePosition + (Vector3.UnitX * avatar.Rotation);
|
||||
Quaternion rot = Quaternion.Identity;
|
||||
Vector3 rootpos = Vector3.Zero;
|
||||
Quaternion rootrot = Quaternion.Identity;
|
||||
|
||||
SceneObjectGroup rootGroup = null;
|
||||
SceneObjectGroup[] allparts = new SceneObjectGroup[message.Objects.Length];
|
||||
for (int i = 0; i < message.Objects.Length; i++)
|
||||
{
|
||||
UploadObjectAssetMessage.Object obj = message.Objects[i];
|
||||
PrimitiveBaseShape pbs = PrimitiveBaseShape.CreateBox();
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
rootpos = obj.Position;
|
||||
rootrot = obj.Rotation;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Combine the extraparams data into it's ugly blob again....
|
||||
//int bytelength = 0;
|
||||
//for (int extparams = 0; extparams < obj.ExtraParams.Length; extparams++)
|
||||
//{
|
||||
// bytelength += obj.ExtraParams[extparams].ExtraParamData.Length;
|
||||
//}
|
||||
//byte[] extraparams = new byte[bytelength];
|
||||
//int position = 0;
|
||||
|
||||
|
||||
|
||||
//for (int extparams = 0; extparams < obj.ExtraParams.Length; extparams++)
|
||||
//{
|
||||
// Buffer.BlockCopy(obj.ExtraParams[extparams].ExtraParamData, 0, extraparams, position,
|
||||
// obj.ExtraParams[extparams].ExtraParamData.Length);
|
||||
//
|
||||
// position += obj.ExtraParams[extparams].ExtraParamData.Length;
|
||||
// }
|
||||
|
||||
//pbs.ExtraParams = extraparams;
|
||||
for (int extparams = 0; extparams < obj.ExtraParams.Length; extparams++)
|
||||
{
|
||||
UploadObjectAssetMessage.Object.ExtraParam extraParam = obj.ExtraParams[extparams];
|
||||
switch ((ushort)extraParam.Type)
|
||||
{
|
||||
case (ushort)ExtraParamType.Sculpt:
|
||||
Primitive.SculptData sculpt = new Primitive.SculptData(extraParam.ExtraParamData, 0);
|
||||
|
||||
pbs.SculptEntry = true;
|
||||
|
||||
pbs.SculptTexture = obj.SculptID;
|
||||
pbs.SculptType = (byte)sculpt.Type;
|
||||
|
||||
break;
|
||||
case (ushort)ExtraParamType.Flexible:
|
||||
Primitive.FlexibleData flex = new Primitive.FlexibleData(extraParam.ExtraParamData, 0);
|
||||
pbs.FlexiEntry = true;
|
||||
pbs.FlexiDrag = flex.Drag;
|
||||
pbs.FlexiForceX = flex.Force.X;
|
||||
pbs.FlexiForceY = flex.Force.Y;
|
||||
pbs.FlexiForceZ = flex.Force.Z;
|
||||
pbs.FlexiGravity = flex.Gravity;
|
||||
pbs.FlexiSoftness = flex.Softness;
|
||||
pbs.FlexiTension = flex.Tension;
|
||||
pbs.FlexiWind = flex.Wind;
|
||||
break;
|
||||
case (ushort)ExtraParamType.Light:
|
||||
Primitive.LightData light = new Primitive.LightData(extraParam.ExtraParamData, 0);
|
||||
pbs.LightColorA = light.Color.A;
|
||||
pbs.LightColorB = light.Color.B;
|
||||
pbs.LightColorG = light.Color.G;
|
||||
pbs.LightColorR = light.Color.R;
|
||||
pbs.LightCutoff = light.Cutoff;
|
||||
pbs.LightEntry = true;
|
||||
pbs.LightFalloff = light.Falloff;
|
||||
pbs.LightIntensity = light.Intensity;
|
||||
pbs.LightRadius = light.Radius;
|
||||
break;
|
||||
case 0x40:
|
||||
pbs.ReadProjectionData(extraParam.ExtraParamData, 0);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
pbs.PathBegin = (ushort) obj.PathBegin;
|
||||
pbs.PathCurve = (byte) obj.PathCurve;
|
||||
pbs.PathEnd = (ushort) obj.PathEnd;
|
||||
pbs.PathRadiusOffset = (sbyte) obj.RadiusOffset;
|
||||
pbs.PathRevolutions = (byte) obj.Revolutions;
|
||||
pbs.PathScaleX = (byte) obj.ScaleX;
|
||||
pbs.PathScaleY = (byte) obj.ScaleY;
|
||||
pbs.PathShearX = (byte) obj.ShearX;
|
||||
pbs.PathShearY = (byte) obj.ShearY;
|
||||
pbs.PathSkew = (sbyte) obj.Skew;
|
||||
pbs.PathTaperX = (sbyte) obj.TaperX;
|
||||
pbs.PathTaperY = (sbyte) obj.TaperY;
|
||||
pbs.PathTwist = (sbyte) obj.Twist;
|
||||
pbs.PathTwistBegin = (sbyte) obj.TwistBegin;
|
||||
pbs.HollowShape = (HollowShape) obj.ProfileHollow;
|
||||
pbs.PCode = (byte) PCode.Prim;
|
||||
pbs.ProfileBegin = (ushort) obj.ProfileBegin;
|
||||
pbs.ProfileCurve = (byte) obj.ProfileCurve;
|
||||
pbs.ProfileEnd = (ushort) obj.ProfileEnd;
|
||||
pbs.Scale = obj.Scale;
|
||||
pbs.State = (byte) 0;
|
||||
SceneObjectPart prim = new SceneObjectPart();
|
||||
prim.UUID = UUID.Random();
|
||||
prim.CreatorID = AgentId;
|
||||
prim.OwnerID = AgentId;
|
||||
prim.GroupID = obj.GroupID;
|
||||
prim.LastOwnerID = prim.OwnerID;
|
||||
prim.CreationDate = Util.UnixTimeSinceEpoch();
|
||||
prim.Name = obj.Name;
|
||||
prim.Description = "";
|
||||
|
||||
prim.PayPrice[0] = -2;
|
||||
prim.PayPrice[1] = -2;
|
||||
prim.PayPrice[2] = -2;
|
||||
prim.PayPrice[3] = -2;
|
||||
prim.PayPrice[4] = -2;
|
||||
Primitive.TextureEntry tmp =
|
||||
new Primitive.TextureEntry(UUID.Parse("89556747-24cb-43ed-920b-47caed15465f"));
|
||||
|
||||
for (int j = 0; j < obj.Faces.Length; j++)
|
||||
{
|
||||
UploadObjectAssetMessage.Object.Face face = obj.Faces[j];
|
||||
|
||||
Primitive.TextureEntryFace primFace = tmp.CreateFace((uint) j);
|
||||
|
||||
primFace.Bump = face.Bump;
|
||||
primFace.RGBA = face.Color;
|
||||
primFace.Fullbright = face.Fullbright;
|
||||
primFace.Glow = face.Glow;
|
||||
primFace.TextureID = face.ImageID;
|
||||
primFace.Rotation = face.ImageRot;
|
||||
primFace.MediaFlags = ((face.MediaFlags & 1) != 0);
|
||||
|
||||
primFace.OffsetU = face.OffsetS;
|
||||
primFace.OffsetV = face.OffsetT;
|
||||
primFace.RepeatU = face.ScaleS;
|
||||
primFace.RepeatV = face.ScaleT;
|
||||
primFace.TexMapType = (MappingType) (face.MediaFlags & 6);
|
||||
}
|
||||
pbs.TextureEntry = tmp.GetBytes();
|
||||
prim.Shape = pbs;
|
||||
prim.Scale = obj.Scale;
|
||||
|
||||
|
||||
SceneObjectGroup grp = new SceneObjectGroup();
|
||||
|
||||
grp.SetRootPart(prim);
|
||||
prim.ParentID = 0;
|
||||
if (i == 0)
|
||||
{
|
||||
rootGroup = grp;
|
||||
|
||||
}
|
||||
grp.AttachToScene(m_scene);
|
||||
grp.AbsolutePosition = obj.Position;
|
||||
prim.RotationOffset = obj.Rotation;
|
||||
|
||||
grp.RootPart.IsAttachment = false;
|
||||
// Required for linking
|
||||
grp.RootPart.UpdateFlag = 0;
|
||||
|
||||
if (m_scene.Permissions.CanRezObject(1, avatar.UUID, pos))
|
||||
{
|
||||
m_scene.AddSceneObject(grp);
|
||||
grp.AbsolutePosition = obj.Position;
|
||||
}
|
||||
allparts[i] = grp;
|
||||
|
||||
}
|
||||
|
||||
for (int j = 1; j < allparts.Length; j++)
|
||||
{
|
||||
rootGroup.RootPart.UpdateFlag = 0;
|
||||
allparts[j].RootPart.UpdateFlag = 0;
|
||||
rootGroup.LinkToGroup(allparts[j]);
|
||||
}
|
||||
|
||||
rootGroup.ScheduleGroupForFullUpdate();
|
||||
pos = m_scene.GetNewRezLocation(Vector3.Zero, rootpos, UUID.Zero, rot, (byte)1, 1, true, allparts[0].GroupScale(), false);
|
||||
|
||||
responsedata["int_response_code"] = 200; //501; //410; //404;
|
||||
responsedata["content_type"] = "text/plain";
|
||||
responsedata["keepalive"] = false;
|
||||
responsedata["str_response_string"] = String.Format("<llsd><map><key>local_id</key>{0}</map></llsd>", ConvertUintToBytes(allparts[0].LocalId));
|
||||
|
||||
return responsedata;
|
||||
|
||||
|
||||
}
|
||||
private string ConvertUintToBytes(uint val)
|
||||
{
|
||||
byte[] resultbytes = Utils.UIntToBytes(val);
|
||||
if (BitConverter.IsLittleEndian)
|
||||
Array.Reverse(resultbytes);
|
||||
return String.Format("<binary encoding=\"base64\">{0}</binary>", Convert.ToBase64String(resultbytes));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -327,43 +327,21 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
|
||||
// OK, it got this agent. Let's close some child agents
|
||||
sp.CloseChildAgents(newRegionX, newRegionY);
|
||||
|
||||
IClientIPEndpoint ipepClient;
|
||||
if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY))
|
||||
{
|
||||
//sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent...");
|
||||
|
||||
#region IP Translation for NAT
|
||||
IClientIPEndpoint ipepClient;
|
||||
// Uses ipepClient above
|
||||
if (sp.ClientView.TryGet(out ipepClient))
|
||||
{
|
||||
capsPath
|
||||
= "http://"
|
||||
+ NetworkUtil.GetHostFor(ipepClient.EndPoint, finalDestination.ExternalHostName)
|
||||
+ ":"
|
||||
+ finalDestination.HttpPort
|
||||
+ CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
capsPath
|
||||
= "http://"
|
||||
+ finalDestination.ExternalHostName
|
||||
+ ":"
|
||||
+ finalDestination.HttpPort
|
||||
+ CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
|
||||
endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
|
||||
}
|
||||
#endregion
|
||||
capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
|
||||
|
||||
if (eq != null)
|
||||
{
|
||||
#region IP Translation for NAT
|
||||
// Uses ipepClient above
|
||||
if (sp.ClientView.TryGet(out ipepClient))
|
||||
{
|
||||
endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
|
||||
}
|
||||
#endregion
|
||||
|
||||
eq.EnableSimulator(destinationHandle, endPoint, sp.UUID);
|
||||
|
||||
// ES makes the client send a UseCircuitCode message to the destination,
|
||||
|
@ -382,8 +360,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
else
|
||||
{
|
||||
agentCircuit.CapsPath = sp.Scene.CapsModule.GetChildSeed(sp.UUID, reg.RegionHandle);
|
||||
capsPath = "http://" + finalDestination.ExternalHostName + ":" + finalDestination.HttpPort
|
||||
+ "/CAPS/" + agentCircuit.CapsPath + "0000/";
|
||||
capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
|
||||
}
|
||||
|
||||
// Expect avatar crossing is a heavy-duty function at the destination.
|
||||
|
@ -518,8 +495,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
|
||||
protected virtual void SetCallbackURL(AgentData agent, RegionInfo region)
|
||||
{
|
||||
agent.CallbackURI = "http://" + region.ExternalHostName + ":" + region.HttpPort +
|
||||
"/agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/";
|
||||
agent.CallbackURI = region.ServerURI + "agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/";
|
||||
m_log.Debug("Set callback URL to " + agent.CallbackURI);
|
||||
|
||||
}
|
||||
|
||||
|
@ -862,8 +839,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
cAgent.Position = pos;
|
||||
if (isFlying)
|
||||
cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY;
|
||||
cAgent.CallbackURI = "http://" + m_scene.RegionInfo.ExternalHostName + ":" + m_scene.RegionInfo.HttpPort +
|
||||
"/agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/";
|
||||
cAgent.CallbackURI = m_scene.RegionInfo.ServerURI +
|
||||
"agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/";
|
||||
|
||||
if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent))
|
||||
{
|
||||
|
@ -888,10 +865,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
neighbourRegion.RegionHandle);
|
||||
return agent;
|
||||
}
|
||||
// TODO Should construct this behind a method
|
||||
string capsPath =
|
||||
"http://" + neighbourRegion.ExternalHostName + ":" + neighbourRegion.HttpPort
|
||||
+ "/CAPS/" + agentcaps /*circuitdata.CapsPath*/ + "0000/";
|
||||
string capsPath = neighbourRegion.ServerURI + CapsUtil.GetCapsSeedPath(agentcaps);
|
||||
|
||||
m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID);
|
||||
|
||||
|
@ -1219,8 +1193,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
y = y / Constants.RegionSize;
|
||||
m_log.Info("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")");
|
||||
|
||||
string capsPath = "http://" + reg.ExternalHostName + ":" + reg.HttpPort
|
||||
+ "/CAPS/" + a.CapsPath + "0000/";
|
||||
string capsPath = reg.ServerURI + CapsUtil.GetCapsSeedPath(a.CapsPath);
|
||||
|
||||
string reason = String.Empty;
|
||||
|
||||
|
|
|
@ -595,12 +595,12 @@ namespace OpenSim.Region.CoreModules.InterGrid
|
|||
// DEPRECATED
|
||||
responseMap["seed_capability"]
|
||||
= OSD.FromString(
|
||||
regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath));
|
||||
regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + "/" + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath));
|
||||
|
||||
// REPLACEMENT
|
||||
responseMap["region_seed_capability"]
|
||||
= OSD.FromString(
|
||||
regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath));
|
||||
regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + "/" + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath));
|
||||
|
||||
responseMap["rez_avatar"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath);
|
||||
responseMap["rez_avatar/rez"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath);
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
|
|||
{
|
||||
public class UserAccountCache
|
||||
{
|
||||
private const double CACHE_EXPIRATION_SECONDS = 120.0;
|
||||
private const double CACHE_EXPIRATION_SECONDS = 120000.0; // 33 hours!
|
||||
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
|
@ -57,7 +57,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
|
|||
if (account != null)
|
||||
m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS);
|
||||
|
||||
// m_log.DebugFormat("[USER CACHE]: cached user {0}", userID);
|
||||
//m_log.DebugFormat("[USER CACHE]: cached user {0}", userID);
|
||||
}
|
||||
|
||||
public UserAccount Get(UUID userID, out bool inCache)
|
||||
|
|
|
@ -147,7 +147,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
|
||||
string regionimage = "regionImage" + m_scene.RegionInfo.RegionID.ToString();
|
||||
regionimage = regionimage.Replace("-", "");
|
||||
m_log.Info("[WORLD MAP]: JPEG Map location: http://" + m_scene.RegionInfo.ExternalEndPoint.Address.ToString() + ":" + m_scene.RegionInfo.HttpPort.ToString() + "/index.php?method=" + regionimage);
|
||||
m_log.Info("[WORLD MAP]: JPEG Map location: " + m_scene.RegionInfo.ServerURI + "/index.php?method=" + regionimage);
|
||||
|
||||
MainServer.Instance.AddHTTPHandler(regionimage, OnHTTPGetMapImage);
|
||||
MainServer.Instance.AddLLSDHandler(
|
||||
|
@ -579,7 +579,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
|||
|
||||
if (mreg != null)
|
||||
{
|
||||
httpserver = "http://" + mreg.ExternalEndPoint.Address.ToString() + ":" + mreg.HttpPort + "/MAP/MapItems/" + regionhandle.ToString();
|
||||
httpserver = mreg.ServerURI + "MAP/MapItems/" + regionhandle.ToString();
|
||||
lock (m_cachedRegionMapItemsAddress)
|
||||
{
|
||||
if (!m_cachedRegionMapItemsAddress.ContainsKey(regionhandle))
|
||||
|
|
|
@ -3329,6 +3329,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public void CopyTo(AgentData cAgent)
|
||||
{
|
||||
cAgent.CallbackURI = m_callbackURI;
|
||||
|
||||
cAgent.AgentID = UUID;
|
||||
cAgent.RegionID = Scene.RegionInfo.RegionID;
|
||||
|
||||
|
|
|
@ -318,6 +318,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
m_SOPXmlProcessors.Add("CollisionSound", ProcessCollisionSound);
|
||||
m_SOPXmlProcessors.Add("CollisionSoundVolume", ProcessCollisionSoundVolume);
|
||||
m_SOPXmlProcessors.Add("MediaUrl", ProcessMediaUrl);
|
||||
m_SOPXmlProcessors.Add("TextureAnimation", ProcessTextureAnimation);
|
||||
m_SOPXmlProcessors.Add("ParticleSystem", ProcessParticleSystem);
|
||||
#endregion
|
||||
|
||||
#region TaskInventoryXmlProcessors initialization
|
||||
|
@ -663,6 +665,16 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
{
|
||||
obj.MediaUrl = reader.ReadElementContentAsString("MediaUrl", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessTextureAnimation(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.TextureAnimation = Convert.FromBase64String(reader.ReadElementContentAsString("TextureAnimation", String.Empty));
|
||||
}
|
||||
|
||||
private static void ProcessParticleSystem(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.ParticleSystem = Convert.FromBase64String(reader.ReadElementContentAsString("ParticleSystem", String.Empty));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TaskInventoryXmlProcessors
|
||||
|
@ -1128,6 +1140,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
||||
if (sop.MediaUrl != null)
|
||||
writer.WriteElementString("MediaUrl", sop.MediaUrl.ToString());
|
||||
WriteBytes(writer, "TextureAnimation", sop.TextureAnimation);
|
||||
WriteBytes(writer, "ParticleSystem", sop.ParticleSystem);
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
@ -1161,6 +1175,19 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
static void WriteBytes(XmlTextWriter writer, string name, byte[] data)
|
||||
{
|
||||
writer.WriteStartElement(name);
|
||||
byte[] d;
|
||||
if (data != null)
|
||||
d = data;
|
||||
else
|
||||
d = Utils.EmptyBytes;
|
||||
writer.WriteBase64(d, 0, d.Length);
|
||||
writer.WriteEndElement(); // name
|
||||
|
||||
}
|
||||
|
||||
static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary<string, object> options)
|
||||
{
|
||||
if (tinv.Count > 0) // otherwise skip this
|
||||
|
@ -1398,9 +1425,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
Vector3 vec;
|
||||
|
||||
reader.ReadStartElement(name);
|
||||
vec.X = reader.ReadElementContentAsFloat("X", String.Empty);
|
||||
vec.Y = reader.ReadElementContentAsFloat("Y", String.Empty);
|
||||
vec.Z = reader.ReadElementContentAsFloat("Z", String.Empty);
|
||||
vec.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // X or x
|
||||
vec.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Y or Y
|
||||
vec.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Z or z
|
||||
reader.ReadEndElement();
|
||||
|
||||
return vec;
|
||||
|
@ -1408,13 +1435,28 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
|||
|
||||
static Quaternion ReadQuaternion(XmlTextReader reader, string name)
|
||||
{
|
||||
Quaternion quat;
|
||||
Quaternion quat = new Quaternion();
|
||||
|
||||
reader.ReadStartElement(name);
|
||||
quat.X = reader.ReadElementContentAsFloat("X", String.Empty);
|
||||
quat.Y = reader.ReadElementContentAsFloat("Y", String.Empty);
|
||||
quat.Z = reader.ReadElementContentAsFloat("Z", String.Empty);
|
||||
quat.W = reader.ReadElementContentAsFloat("W", String.Empty);
|
||||
while (reader.NodeType != XmlNodeType.EndElement)
|
||||
{
|
||||
switch (reader.Name.ToLower())
|
||||
{
|
||||
case "x":
|
||||
quat.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
||||
break;
|
||||
case "y":
|
||||
quat.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
||||
break;
|
||||
case "z":
|
||||
quat.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
||||
break;
|
||||
case "w":
|
||||
quat.W = reader.ReadElementContentAsFloat(reader.Name, String.Empty);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
reader.ReadEndElement();
|
||||
|
||||
return quat;
|
||||
|
|
|
@ -212,12 +212,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
public void SendMessageToGroup(GridInstantMessage im, UUID groupID)
|
||||
{
|
||||
List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(new UUID(im.fromAgentID), groupID);
|
||||
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
|
||||
|
||||
|
||||
foreach (GroupMembersData member in m_groupData.GetGroupMembers(UUID.Zero, groupID))
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS-MESSAGING]: SendMessageToGroup called for group {0} with {1} visible members",
|
||||
groupID, groupMembers.Count);
|
||||
|
||||
foreach (GroupMembersData member in groupMembers)
|
||||
{
|
||||
if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID, groupID))
|
||||
{
|
||||
// Don't deliver messages to people who have dropped this session
|
||||
|
@ -263,9 +266,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
void OnClientLogin(IClientAPI client)
|
||||
{
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: OnInstantMessage registered for {0}", client.Name);
|
||||
|
||||
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: OnInstantMessage registered for {0}", client.Name);
|
||||
}
|
||||
|
||||
private void OnNewClient(IClientAPI client)
|
||||
|
|
|
@ -599,7 +599,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
|
||||
public List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID)
|
||||
{
|
||||
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
|
||||
if (m_debugEnabled)
|
||||
m_log.DebugFormat(
|
||||
"[GROUPS]: GroupMembersRequest called for {0} from client {1}", groupID, remoteClient.Name);
|
||||
|
||||
List<GroupMembersData> data = m_groupData.GetGroupMembers(GetRequestingAgentID(remoteClient), groupID);
|
||||
|
||||
if (m_debugEnabled)
|
||||
|
|
|
@ -641,11 +641,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
}
|
||||
|
||||
return Roles;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<GroupMembersData> GetGroupMembers(UUID requestingAgentID, UUID GroupID)
|
||||
{
|
||||
Hashtable param = new Hashtable();
|
||||
|
@ -988,8 +985,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat("[XMLRPC-GROUPS-CONNECTOR]: An error has occured while attempting to access the XmlRpcGroups server method: {0}", function);
|
||||
m_log.ErrorFormat("[XMLRPC-GROUPS-CONNECTOR]: {0} ", e.ToString());
|
||||
m_log.ErrorFormat(
|
||||
"[XMLRPC-GROUPS-CONNECTOR]: An error has occured while attempting to access the XmlRpcGroups server method {0} at {1}",
|
||||
function, m_groupsServerURI);
|
||||
|
||||
m_log.ErrorFormat("[XMLRPC-GROUPS-CONNECTOR]: {0}{1}", e.Message, e.StackTrace);
|
||||
|
||||
foreach (string ResponseLine in req.RequestResponse.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
|
||||
{
|
||||
|
|
|
@ -349,6 +349,7 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
|
||||
OpenMetaverse.Vector3 posMax = ((OSDMap)subMeshMap["PositionDomain"])["Max"].AsVector3();
|
||||
OpenMetaverse.Vector3 posMin = ((OSDMap)subMeshMap["PositionDomain"])["Min"].AsVector3();
|
||||
ushort faceIndexOffset = (ushort)coords.Count;
|
||||
|
||||
byte[] posBytes = subMeshMap["Position"].AsBinary();
|
||||
for (int i = 0; i < posBytes.Length; i += 6)
|
||||
|
@ -368,9 +369,9 @@ namespace OpenSim.Region.Physics.Meshing
|
|||
byte[] triangleBytes = subMeshMap["TriangleList"].AsBinary();
|
||||
for (int i = 0; i < triangleBytes.Length; i += 6)
|
||||
{
|
||||
ushort v1 = Utils.BytesToUInt16(triangleBytes, i);
|
||||
ushort v2 = Utils.BytesToUInt16(triangleBytes, i + 2);
|
||||
ushort v3 = Utils.BytesToUInt16(triangleBytes, i + 4);
|
||||
ushort v1 = (ushort)(Utils.BytesToUInt16(triangleBytes, i) + faceIndexOffset);
|
||||
ushort v2 = (ushort)(Utils.BytesToUInt16(triangleBytes, i + 2) + faceIndexOffset);
|
||||
ushort v3 = (ushort)(Utils.BytesToUInt16(triangleBytes, i + 4) + faceIndexOffset);
|
||||
Face f = new Face(v1, v2, v3);
|
||||
faces.Add(f);
|
||||
}
|
||||
|
|
|
@ -124,6 +124,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
|
|||
UUID uuid = UUID.Zero;
|
||||
string regionname = string.Empty;
|
||||
string gatekeeper_host = string.Empty;
|
||||
string server_uri = string.Empty;
|
||||
int gatekeeper_port = 0;
|
||||
IPEndPoint client_ipaddress = null;
|
||||
|
||||
|
@ -173,6 +174,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
|
|||
destination.RegionLocX = x;
|
||||
destination.RegionLocY = y;
|
||||
destination.RegionName = regionname;
|
||||
|
||||
|
||||
AgentCircuitData aCircuit = new AgentCircuitData();
|
||||
try
|
||||
|
|
|
@ -63,12 +63,12 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
|
||||
protected override string AgentPath()
|
||||
{
|
||||
return "/foreignagent/";
|
||||
return "foreignagent/";
|
||||
}
|
||||
|
||||
protected override string ObjectPath()
|
||||
{
|
||||
return "/foreignobject/";
|
||||
return "foreignobject/";
|
||||
}
|
||||
|
||||
public bool LinkRegion(GridRegion info, out UUID regionID, out ulong realHandle, out string externalName, out string imageURL, out string reason)
|
||||
|
@ -86,12 +86,11 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
paramList.Add(hash);
|
||||
|
||||
XmlRpcRequest request = new XmlRpcRequest("link_region", paramList);
|
||||
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 " + info.ServerURI);
|
||||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(uri, 10000);
|
||||
response = request.Send(info.ServerURI, 10000);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -108,8 +107,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
}
|
||||
|
||||
hash = (Hashtable)response.Value;
|
||||
//foreach (Object o in hash)
|
||||
// m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value);
|
||||
foreach (Object o in hash)
|
||||
m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value);
|
||||
try
|
||||
{
|
||||
bool success = false;
|
||||
|
@ -117,16 +116,20 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
if (success)
|
||||
{
|
||||
UUID.TryParse((string)hash["uuid"], out regionID);
|
||||
//m_log.Debug(">> HERE, uuid: " + uuid);
|
||||
//m_log.Debug(">> HERE, uuid: " + regionID);
|
||||
if ((string)hash["handle"] != null)
|
||||
{
|
||||
realHandle = Convert.ToUInt64((string)hash["handle"]);
|
||||
//m_log.Debug(">> HERE, realHandle: " + realHandle);
|
||||
}
|
||||
if (hash["region_image"] != null)
|
||||
if (hash["region_image"] != null) {
|
||||
imageURL = (string)hash["region_image"];
|
||||
if (hash["external_name"] != null)
|
||||
//m_log.Debug(">> HERE, imageURL: " + imageURL);
|
||||
}
|
||||
if (hash["external_name"] != null) {
|
||||
externalName = (string)hash["external_name"];
|
||||
//m_log.Debug(">> HERE, externalName: " + externalName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -188,16 +191,15 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
paramList.Add(hash);
|
||||
|
||||
XmlRpcRequest request = new XmlRpcRequest("get_region", paramList);
|
||||
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 " + gatekeeper.ServerURI);
|
||||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(uri, 10000);
|
||||
response = request.Send(gatekeeper.ServerURI, 10000);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: Exception " + e.Message);
|
||||
//m_log.Debug("[GATEKEEPER SERVICE CONNECTOR]: Exception " + e.Message);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -236,21 +238,24 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
if (hash["region_name"] != null)
|
||||
{
|
||||
region.RegionName = (string)hash["region_name"];
|
||||
//m_log.Debug(">> HERE, name: " + region.RegionName);
|
||||
//m_log.Debug(">> HERE, region_name: " + region.RegionName);
|
||||
}
|
||||
if (hash["hostname"] != null)
|
||||
region.ExternalHostName = (string)hash["hostname"];
|
||||
//m_log.Debug(">> HERE, hostname: " + region.ExternalHostName);
|
||||
if (hash["http_port"] != null)
|
||||
{
|
||||
uint p = 0;
|
||||
UInt32.TryParse((string)hash["http_port"], out p);
|
||||
region.HttpPort = p;
|
||||
//m_log.Debug(">> HERE, http_port: " + region.HttpPort);
|
||||
}
|
||||
if (hash["internal_port"] != null)
|
||||
{
|
||||
int p = 0;
|
||||
Int32.TryParse((string)hash["internal_port"], out p);
|
||||
region.InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), p);
|
||||
//m_log.Debug(">> HERE, internal_port: " + region.InternalEndPoint);
|
||||
}
|
||||
|
||||
// Successful return
|
||||
|
|
|
@ -84,10 +84,7 @@ namespace OpenSim.Services.Connectors
|
|||
if (info != null) // just to be sure
|
||||
{
|
||||
XmlRpcRequest request = new XmlRpcRequest("land_data", paramList);
|
||||
|
||||
//Possible nullref from info.externalendpoint will be caught here
|
||||
string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/";
|
||||
XmlRpcResponse response = request.Send(uri, 10000);
|
||||
XmlRpcResponse response = request.Send(info.ServerURI, 10000);
|
||||
if (response.IsFault)
|
||||
{
|
||||
m_log.ErrorFormat("[LAND CONNECTOR]: remote call returned an error: {0}", response.FaultString);
|
||||
|
@ -134,4 +131,4 @@ namespace OpenSim.Services.Connectors
|
|||
return landData;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,9 +87,7 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
public bool DoHelloNeighbourCall(GridRegion region, RegionInfo thisRegion)
|
||||
{
|
||||
IPEndPoint ext = region.ExternalEndPoint;
|
||||
if (ext == null) return false;
|
||||
string uri = "http://" + ext.Address + ":" + region.HttpPort + "/region/" + thisRegion.RegionID + "/";
|
||||
string uri = region.ServerURI + "/region/" + thisRegion.RegionID + "/";
|
||||
//m_log.Debug(" >>> DoHelloNeighbourCall <<< " + uri);
|
||||
|
||||
WebRequest HelloNeighbourRequest = WebRequest.Create(uri);
|
||||
|
|
|
@ -147,8 +147,6 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
|||
Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0);
|
||||
Vector3d maxPosition = minPosition + new Vector3d(Constants.RegionSize, Constants.RegionSize, 4096.0);
|
||||
|
||||
string httpAddress = "http://" + regionInfo.ExternalHostName + ":" + regionInfo.HttpPort + "/";
|
||||
|
||||
OSDMap extraData = new OSDMap
|
||||
{
|
||||
{ "ServerURI", OSD.FromString(regionInfo.ServerURI) },
|
||||
|
@ -170,7 +168,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
|||
{ "Name", regionInfo.RegionName },
|
||||
{ "MinPosition", minPosition.ToString() },
|
||||
{ "MaxPosition", maxPosition.ToString() },
|
||||
{ "Address", httpAddress },
|
||||
{ "Address", regionInfo.ServerURI },
|
||||
{ "Enabled", "1" },
|
||||
{ "ExtraData", OSDParser.SerializeJsonString(extraData) }
|
||||
};
|
||||
|
|
|
@ -72,7 +72,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
|
||||
protected virtual string AgentPath()
|
||||
{
|
||||
return "/agent/";
|
||||
return "agent/";
|
||||
}
|
||||
|
||||
public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string reason)
|
||||
|
@ -104,26 +104,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
return false;
|
||||
}
|
||||
|
||||
string uri = string.Empty;
|
||||
|
||||
// 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
|
||||
{
|
||||
try
|
||||
{
|
||||
uri = "http://" + destination.ExternalEndPoint.Address + ":" + destination.HttpPort + AgentPath() + aCircuit.AgentID + "/";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
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);
|
||||
string uri = destination.ServerURI + AgentPath() + aCircuit.AgentID + "/";
|
||||
|
||||
AgentCreateRequest = (HttpWebRequest)WebRequest.Create(uri);
|
||||
AgentCreateRequest.Method = "POST";
|
||||
|
@ -277,17 +258,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
private bool UpdateAgent(GridRegion destination, IAgentData cAgentData)
|
||||
{
|
||||
// Eventually, we want to use a caps url instead of the agentID
|
||||
string uri = string.Empty;
|
||||
try
|
||||
{
|
||||
uri = "http://" + destination.ExternalEndPoint.Address + ":" + destination.HttpPort + AgentPath() + cAgentData.AgentID + "/";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent update. Reason: " + e.Message);
|
||||
return false;
|
||||
}
|
||||
//Console.WriteLine(" >>> DoAgentUpdateCall <<< " + uri);
|
||||
string uri = destination.ServerURI + AgentPath() + cAgentData.AgentID + "/";
|
||||
|
||||
HttpWebRequest ChildUpdateRequest = (HttpWebRequest)WebRequest.Create(uri);
|
||||
ChildUpdateRequest.Method = "PUT";
|
||||
|
@ -387,8 +358,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
agent = null;
|
||||
if (ext == null) return false;
|
||||
// Eventually, we want to use a caps url instead of the agentID
|
||||
string uri = "http://" + ext.Address + ":" + destination.HttpPort + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
|
||||
//Console.WriteLine(" >>> DoRetrieveRootAgentCall <<< " + uri);
|
||||
string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
|
||||
request.Method = "GET";
|
||||
|
@ -409,7 +379,6 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
sr = new StreamReader(webResponse.GetResponseStream());
|
||||
reply = sr.ReadToEnd().Trim();
|
||||
|
||||
//Console.WriteLine("[REMOTE SIMULATION CONNECTOR]: ChilAgentUpdate reply was " + reply);
|
||||
|
||||
}
|
||||
catch (WebException ex)
|
||||
|
@ -430,7 +399,6 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
OSDMap args = Util.GetOSDMap(reply);
|
||||
if (args == null)
|
||||
{
|
||||
//Console.WriteLine("[REMOTE SIMULATION CONNECTOR]: Error getting OSDMap from reply");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -439,7 +407,6 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
return true;
|
||||
}
|
||||
|
||||
//Console.WriteLine("[REMOTE SIMULATION CONNECTOR]: DoRetrieveRootAgentCall returned status " + webResponse.StatusCode);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -481,18 +448,8 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
|
||||
private bool CloseAgent(GridRegion destination, UUID id, bool ChildOnly)
|
||||
{
|
||||
string uri = string.Empty;
|
||||
try
|
||||
{
|
||||
uri = "http://" + destination.ExternalEndPoint.Address + ":" + destination.HttpPort + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent close. Reason: " + e.Message);
|
||||
return false;
|
||||
}
|
||||
string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
|
||||
|
||||
//Console.WriteLine(" >>> DoCloseAgentCall <<< " + uri);
|
||||
|
||||
WebRequest request = WebRequest.Create(uri);
|
||||
request.Method = "DELETE";
|
||||
|
@ -554,7 +511,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
|||
IPEndPoint ext = destination.ExternalEndPoint;
|
||||
if (ext == null) return false;
|
||||
string uri
|
||||
= "http://" + ext.Address + ":" + destination.HttpPort + ObjectPath() + sog.UUID + "/";
|
||||
= destination.ServerURI + ObjectPath() + sog.UUID + "/";
|
||||
//m_log.Debug(" >>> DoCreateObjectCall <<< " + uri);
|
||||
|
||||
WebRequest ObjectCreateRequest = WebRequest.Create(uri);
|
||||
|
|
|
@ -113,7 +113,7 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
public virtual UserAccount GetUserAccount(UUID scopeID, UUID userID)
|
||||
{
|
||||
// m_log.DebugFormat("[ACCOUNTS CONNECTOR]: GetUserAccount {0}", userID);
|
||||
//m_log.DebugFormat("[ACCOUNTS CONNECTOR]: GetUserAccount {0}", userID);
|
||||
Dictionary<string, object> sendData = new Dictionary<string, object>();
|
||||
//sendData["SCOPEID"] = scopeID.ToString();
|
||||
sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
|
||||
|
|
|
@ -479,7 +479,7 @@ namespace OpenSim.Services.GridService
|
|||
OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]);
|
||||
MainConsole.Instance.Output(String.Format("{0,-20} {1}\n{2,-20} {3}\n{4,-39} {5}\n\n",
|
||||
r.RegionName, r.RegionID,
|
||||
String.Format("{0},{1}", r.posX, r.posY), "http://" + r.Data["serverIP"].ToString() + ":" + r.Data["serverPort"].ToString(),
|
||||
String.Format("{0},{1}", r.posX, r.posY), r.Data["serverURI"],
|
||||
r.Data["owner_uuid"].ToString(), flags.ToString()));
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -127,7 +127,7 @@ namespace OpenSim.Services.GridService
|
|||
if (MainConsole.Instance != null)
|
||||
{
|
||||
MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-region",
|
||||
"link-region <Xloc> <Yloc> <HostName>:<HttpPort>[:<RemoteRegionName>] <cr>",
|
||||
"link-region <Xloc> <Yloc> <RegionIP> <RegionPort> [<RegionServerURI] [<RemoteRegionName>] <cr>",
|
||||
"Link a hypergrid region", RunCommand);
|
||||
MainConsole.Instance.Commands.AddCommand("hypergrid", false, "unlink-region",
|
||||
"unlink-region <local name> or <HostName>:<HttpPort> <cr>",
|
||||
|
@ -198,11 +198,7 @@ namespace OpenSim.Services.GridService
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// From the command line and the 2 above
|
||||
public bool TryCreateLink(UUID scopeID, int xloc, int yloc,
|
||||
string externalRegionName, uint externalPort, string externalHostName, out GridRegion regInfo, out string reason)
|
||||
public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string externalRegionName, uint externalPort, string externalHostName, out GridRegion regInfo, out string reason)
|
||||
{
|
||||
m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}:{2}, in {3}-{4}", externalHostName, externalPort, externalRegionName, xloc, yloc);
|
||||
|
||||
|
@ -217,8 +213,11 @@ namespace OpenSim.Services.GridService
|
|||
|
||||
// Big HACK for Simian Grid !!!
|
||||
// We need to clean up all URLs used in OpenSim !!!
|
||||
if (externalHostName.Contains("/"))
|
||||
if (externalHostName.Contains("/")) {
|
||||
regInfo.ServerURI = externalHostName;
|
||||
} else {
|
||||
regInfo.ServerURI = "http://" + externalHostName + ":" + externalPort.ToString();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -509,12 +508,16 @@ namespace OpenSim.Services.GridService
|
|||
int xloc, yloc;
|
||||
uint externalPort;
|
||||
string externalHostName;
|
||||
string serverURI;
|
||||
try
|
||||
{
|
||||
xloc = Convert.ToInt32(cmdparams[0]);
|
||||
yloc = Convert.ToInt32(cmdparams[1]);
|
||||
externalPort = Convert.ToUInt32(cmdparams[3]);
|
||||
externalHostName = cmdparams[2];
|
||||
if ( cmdparams.Length == 4 ) {
|
||||
|
||||
}
|
||||
//internalPort = Convert.ToUInt32(cmdparams[4]);
|
||||
//remotingPort = Convert.ToUInt32(cmdparams[5]);
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ namespace OpenSim.Services.HypergridService
|
|||
string regionimage = "regionImage" + region.RegionID.ToString();
|
||||
regionimage = regionimage.Replace("-", "");
|
||||
|
||||
imageURL = "http://" + region.ExternalHostName + ":" + region.HttpPort + "/index.php?method=" + regionimage;
|
||||
imageURL = region.ServerURI + "index.php?method=" + regionimage;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -136,6 +136,7 @@ namespace OpenSim.Services.HypergridService
|
|||
m_log.DebugFormat("[USER AGENT SERVICE]: Request to login user {0} {1} (@{2}) to grid {3}",
|
||||
agentCircuit.firstname, agentCircuit.lastname, ((clientIP == null) ? "stored IP" : clientIP.Address.ToString()),
|
||||
gatekeeper.ExternalHostName +":"+ gatekeeper.HttpPort);
|
||||
m_log.Debug("gatekeeper serveruri -> " + gatekeeper.ServerURI );
|
||||
|
||||
// Take the IP address + port of the gatekeeper (reg) plus the info of finalDestination
|
||||
GridRegion region = new GridRegion(gatekeeper);
|
||||
|
@ -145,12 +146,12 @@ namespace OpenSim.Services.HypergridService
|
|||
region.RegionLocY = finalDestination.RegionLocY;
|
||||
|
||||
// Generate a new service session
|
||||
agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random();
|
||||
agentCircuit.ServiceSessionID = region.ServerURI + ";" + UUID.Random();
|
||||
TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region);
|
||||
|
||||
bool success = false;
|
||||
string myExternalIP = string.Empty;
|
||||
string gridName = "http://" + gatekeeper.ExternalHostName + ":" + gatekeeper.HttpPort;
|
||||
string gridName = gatekeeper.ServerURI;
|
||||
if (m_GridName == gridName)
|
||||
success = m_GatekeeperService.LoginAgent(agentCircuit, finalDestination, out reason);
|
||||
else
|
||||
|
@ -159,7 +160,7 @@ namespace OpenSim.Services.HypergridService
|
|||
if (!success)
|
||||
{
|
||||
m_log.DebugFormat("[USER AGENT SERVICE]: Unable to login user {0} {1} to grid {2}, reason: {3}",
|
||||
agentCircuit.firstname, agentCircuit.lastname, region.ExternalHostName + ":" + region.HttpPort, reason);
|
||||
agentCircuit.firstname, agentCircuit.lastname, region.ServerURI, reason);
|
||||
|
||||
// restore the old travel info
|
||||
lock (m_TravelingAgents)
|
||||
|
@ -210,7 +211,7 @@ namespace OpenSim.Services.HypergridService
|
|||
m_TravelingAgents[agentCircuit.SessionID] = travel;
|
||||
}
|
||||
travel.UserID = agentCircuit.AgentID;
|
||||
travel.GridExternalName = "http://" + region.ExternalHostName + ":" + region.HttpPort;
|
||||
travel.GridExternalName = region.ServerURI;
|
||||
travel.ServiceToken = agentCircuit.ServiceSessionID;
|
||||
if (old != null)
|
||||
travel.ClientIPAddress = old.ClientIPAddress;
|
||||
|
|
|
@ -115,8 +115,20 @@ namespace OpenSim.Services.Interfaces
|
|||
/// </summary>
|
||||
public string ServerURI
|
||||
{
|
||||
get { return m_serverURI; }
|
||||
set { m_serverURI = value; }
|
||||
get {
|
||||
if ( m_serverURI != string.Empty ) {
|
||||
return m_serverURI;
|
||||
} else {
|
||||
return "http://" + m_externalHostName + ":" + m_httpPort + "/";
|
||||
}
|
||||
}
|
||||
set {
|
||||
if ( value.EndsWith("/") ) {
|
||||
m_serverURI = value;
|
||||
} else {
|
||||
m_serverURI = value + '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
protected string m_serverURI;
|
||||
|
||||
|
@ -164,6 +176,7 @@ namespace OpenSim.Services.Interfaces
|
|||
|
||||
public GridRegion()
|
||||
{
|
||||
m_serverURI = string.Empty;
|
||||
}
|
||||
|
||||
public GridRegion(int regionLocX, int regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
||||
|
|
|
@ -339,34 +339,7 @@ namespace OpenSim.Services.LLLoginService
|
|||
|
||||
private void FillOutSeedCap(AgentCircuitData aCircuit, GridRegion destination, IPEndPoint ipepClient)
|
||||
{
|
||||
string capsSeedPath = String.Empty;
|
||||
|
||||
// Don't use the following! It Fails for logging into any region not on the same port as the http server!
|
||||
// Kept here so it doesn't happen again!
|
||||
// response.SeedCapability = regionInfo.ServerURI + capsSeedPath;
|
||||
|
||||
#region IP Translation for NAT
|
||||
if (ipepClient != null)
|
||||
{
|
||||
capsSeedPath
|
||||
= "http://"
|
||||
+ NetworkUtil.GetHostFor(ipepClient.Address, destination.ExternalHostName)
|
||||
+ ":"
|
||||
+ destination.HttpPort
|
||||
+ CapsUtil.GetCapsSeedPath(aCircuit.CapsPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
capsSeedPath
|
||||
= "http://"
|
||||
+ destination.ExternalHostName
|
||||
+ ":"
|
||||
+ destination.HttpPort
|
||||
+ CapsUtil.GetCapsSeedPath(aCircuit.CapsPath);
|
||||
}
|
||||
#endregion
|
||||
|
||||
SeedCapability = capsSeedPath;
|
||||
SeedCapability = destination.ServerURI + CapsUtil.GetCapsSeedPath(aCircuit.CapsPath);
|
||||
}
|
||||
|
||||
private void SetDefaultValues()
|
||||
|
|
Loading…
Reference in New Issue