mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
Merge branch 'master' of ssh://opensimulator.org:/var/git/opensim
This commit is contained in:
@@ -44,21 +44,25 @@ namespace OpenSim.Framework.Serialization.External
|
||||
/// Deserialize settings
|
||||
/// </summary>
|
||||
/// <param name="serializedSettings"></param>
|
||||
/// <param name="regionEnv"></param>
|
||||
/// <param name="estateSettings">The Estate Settings stored in the archive will be merged into this object</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="System.Xml.XmlException"></exception>
|
||||
public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv)
|
||||
public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings)
|
||||
{
|
||||
// encoding is wrong. old oars seem to be on utf-16
|
||||
return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv);
|
||||
return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv, estateSettings);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deserialize settings
|
||||
/// </summary>
|
||||
/// <param name="serializedSettings"></param>
|
||||
/// <param name="regionEnv"></param>
|
||||
/// <param name="estateSettings">The Estate Settings stored in the archive will be merged into this object</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="System.Xml.XmlException"></exception>
|
||||
public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv)
|
||||
public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings)
|
||||
{
|
||||
RegionSettings settings = new RegionSettings();
|
||||
regionEnv = null;
|
||||
@@ -237,13 +241,36 @@ namespace OpenSim.Framework.Serialization.External
|
||||
}
|
||||
}
|
||||
|
||||
if (xtr.IsStartElement("Estate"))
|
||||
{
|
||||
if (xtr.IsEmptyElement)
|
||||
xtr.Read();
|
||||
else
|
||||
{
|
||||
xtr.ReadStartElement("Estate");
|
||||
while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
|
||||
{
|
||||
switch (xtr.Name)
|
||||
{
|
||||
case "AllowDirectTeleport":
|
||||
estateSettings.AllowDirectTeleport = bool.Parse(xtr.ReadElementContentAsString());
|
||||
break;
|
||||
case "AllowEnvironmentOverride":
|
||||
estateSettings.AllowEnvironmentOverride = bool.Parse(xtr.ReadElementContentAsString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
xtr.ReadEndElement();
|
||||
}
|
||||
}
|
||||
|
||||
xtr.Close();
|
||||
sr.Close();
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv)
|
||||
public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv, EstateSettings estateSettings)
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
XmlTextWriter xtw = new XmlTextWriter(sw);
|
||||
@@ -308,6 +335,11 @@ namespace OpenSim.Framework.Serialization.External
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
xtw.WriteStartElement("Estate");
|
||||
xtw.WriteElementString("AllowDirectTeleport", estateSettings.AllowDirectTeleport.ToString());
|
||||
xtw.WriteElementString("AllowEnvironmentOverride", estateSettings.AllowEnvironmentOverride.ToString());
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.Close();
|
||||
|
||||
@@ -130,7 +130,7 @@ namespace OpenSim.Framework.Serialization.Tests
|
||||
TestHelpers.InMethod();
|
||||
// log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy);
|
||||
RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy, new EstateSettings());
|
||||
Assert.That(deserRs, Is.Not.Null);
|
||||
Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
|
||||
Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
|
||||
|
||||
@@ -650,6 +650,8 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
IRequestHandler requestHandler = null;
|
||||
|
||||
byte[] responseData = null;
|
||||
|
||||
try
|
||||
{
|
||||
// OpenSim.Framework.WebUtil.OSHeaderRequestID
|
||||
@@ -671,6 +673,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
request.InputStream.Dispose();
|
||||
|
||||
requestEndTick = Environment.TickCount;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
return;
|
||||
}
|
||||
@@ -692,6 +695,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
request.InputStream.Dispose();
|
||||
|
||||
requestEndTick = Environment.TickCount;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
return;
|
||||
}
|
||||
@@ -736,6 +740,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
request.InputStream.Dispose();
|
||||
|
||||
requestEndTick = Environment.TickCount;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
return;
|
||||
}
|
||||
@@ -744,11 +749,15 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
if (TryGetSimpleStreamHandler(path, out ISimpleStreamHandler hdr))
|
||||
{
|
||||
if (DebugLevel >= 3)
|
||||
LogIncomingToStreamHandler(request, hdr);
|
||||
|
||||
hdr.Handle(request, response);
|
||||
if (request.InputStream != null && request.InputStream.CanRead)
|
||||
request.InputStream.Dispose();
|
||||
|
||||
requestEndTick = Environment.TickCount;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
return;
|
||||
}
|
||||
@@ -898,6 +907,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
requestEndTick = Environment.TickCount;
|
||||
|
||||
buffer = null;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
}
|
||||
catch (SocketException e)
|
||||
@@ -921,6 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
try
|
||||
{
|
||||
response.StatusCode =(int)HttpStatusCode.InternalServerError;
|
||||
responseData = response.RawBuffer;
|
||||
response.Send();
|
||||
}
|
||||
catch {}
|
||||
@@ -951,6 +962,19 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
Port,
|
||||
tickdiff);
|
||||
}
|
||||
|
||||
if ((DebugLevel >= 5) && (responseData != null))
|
||||
{
|
||||
string output = Encoding.UTF8.GetString(responseData);
|
||||
if (DebugLevel == 5)
|
||||
{
|
||||
if (output.Length > WebUtil.MaxRequestDiagLength)
|
||||
output = output.Substring(0, WebUtil.MaxRequestDiagLength) + "...";
|
||||
}
|
||||
m_log.DebugFormat("[LOGHTTP] RESPONSE {0}: {1}", RequestNumber, output);
|
||||
}
|
||||
|
||||
responseData = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -970,6 +994,21 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
LogIncomingInDetail(request);
|
||||
}
|
||||
|
||||
private void LogIncomingToStreamHandler(OSHttpRequest request, ISimpleStreamHandler requestHandler)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[LOGHTTP] HTTP IN {0} :{1} stream handler {2} {3} {4} from {5}",
|
||||
RequestNumber,
|
||||
Port,
|
||||
request.HttpMethod,
|
||||
request.Url.PathAndQuery,
|
||||
requestHandler.Name,
|
||||
request.RemoteIPEndPoint);
|
||||
|
||||
if (DebugLevel >= 5)
|
||||
LogIncomingInDetail(request);
|
||||
}
|
||||
|
||||
private void LogIncomingToContentTypeHandler(OSHttpRequest request)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
|
||||
@@ -1044,7 +1044,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
ViewerEnvironment regionEnv = null;
|
||||
try
|
||||
{
|
||||
loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv);
|
||||
loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv, scene.RegionInfo.EstateSettings);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -1104,6 +1104,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
currentRegionSettings.CacheID = UUID.Random();
|
||||
currentRegionSettings.Save();
|
||||
|
||||
scene.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
|
||||
|
||||
IEstateModule estateModule = scene.RequestModuleInterface<IEstateModule>();
|
||||
if (estateModule != null)
|
||||
estateModule.sendRegionHandshakeToAll();
|
||||
|
||||
@@ -579,7 +579,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
// Write out region settings
|
||||
string settingsPath = String.Format("{0}{1}{2}.xml",
|
||||
regionDir, ArchiveConstants.SETTINGS_PATH, scene.RegionInfo.RegionName);
|
||||
m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment));
|
||||
m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment, scene.RegionInfo.EstateSettings));
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Adding parcel settings to archive.");
|
||||
|
||||
|
||||
@@ -657,7 +657,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
|
||||
rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
|
||||
rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
|
||||
|
||||
tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null));
|
||||
tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null, new EstateSettings()));
|
||||
|
||||
tar.Close();
|
||||
|
||||
|
||||
@@ -65,10 +65,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
private ILandChannel m_landChannel;
|
||||
|
||||
private static ViewerEnvironment m_DefaultEnv = null;
|
||||
// 1/1 night day ratio
|
||||
//private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91";
|
||||
// 3/1 night day ratio
|
||||
private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92";
|
||||
// 1/1 day-to-night ratio
|
||||
//private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91"; // Default Daycycle
|
||||
// 3/1 day-to-night ratio
|
||||
private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92"; // Default Daycycle (More Daylight)
|
||||
private static UUID m_defaultDayAssetUUID = new UUID("5646d39e-d3d7-6aff-ed71-30fc87d64a92");
|
||||
//private static string m_defaultSkyAssetID = "3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad";
|
||||
private static UUID m_defaultSkyAssetUUID = new UUID("3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad");
|
||||
@@ -168,10 +168,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
m_DefaultEnv = new ViewerEnvironment();
|
||||
m_DefaultEnv.CycleFromOSD(oenv);
|
||||
}
|
||||
catch ( Exception e)
|
||||
catch (Exception e)
|
||||
{
|
||||
m_DefaultEnv = null;
|
||||
m_log.WarnFormat("[Environment {0}]: failed to decode default environment asset: {1}", m_scene.Name, e.Message);
|
||||
m_log.Warn(string.Format("[Environment {0}] failed to decode default environment asset ", m_scene.Name), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -185,16 +185,22 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
{
|
||||
OSD oenv = OSDParser.Deserialize(senv);
|
||||
ViewerEnvironment VEnv = new ViewerEnvironment();
|
||||
if(oenv is OSDArray)
|
||||
if (oenv is OSDArray)
|
||||
{
|
||||
VEnv.FromWLOSD(oenv);
|
||||
StoreOnRegion(VEnv);
|
||||
m_log.InfoFormat("[Environment {0}] migrated WindLight environment settings to EEP", m_scene.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
VEnv.FromOSD(oenv);
|
||||
}
|
||||
scene.RegionEnvironment = VEnv;
|
||||
m_regionEnvVersion = VEnv.version;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat("[Environment {0}] failed to load initial Environment {1}", m_scene.Name, e.Message);
|
||||
m_log.Error(string.Format("[Environment {0}] failed to load initial Environment ", m_scene.Name), e);
|
||||
scene.RegionEnvironment = null;
|
||||
m_regionEnvVersion = -1;
|
||||
}
|
||||
@@ -246,7 +252,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat("[Environment {0}] failed to store Environment {1}", m_scene.Name, e.Message);
|
||||
m_log.Error(string.Format("[Environment {0}] failed to store Environment ", m_scene.Name), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6080,7 +6080,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
return -2;
|
||||
|
||||
ScenePresence npcSP = World.GetScenePresence(npc);
|
||||
if(npc == null)
|
||||
if((npcSP == null) || !npcSP.IsNPC)
|
||||
return -3;
|
||||
|
||||
if (!UUID.TryParse(objkey, out UUID obj))
|
||||
|
||||
Reference in New Issue
Block a user