From 682f4e9257bcec6e9690145760558cc3331bc5d8 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Tue, 15 Apr 2008 06:21:44 +0000 Subject: [PATCH] * Fixes an issue with the BaseHttpServer in Linux * Fixes an estate naming issue * Fixes a land issue with the landobject not reporting the proper parcel prim. * A few other tweaks. --- OpenSim/Framework/EstateSettings.cs | 18 ++++++++ OpenSim/Framework/LandData.cs | 1 + OpenSim/Framework/Servers/BaseHttpServer.cs | 9 +++- OpenSim/Region/ClientStack/ClientView.cs | 2 +- OpenSim/Region/Environment/EstateManager.cs | 32 +++++++------- .../Modules/BetaGridLikeMoneyModule.cs | 44 +++++++++++++++++++ .../Modules/LandManagement/LandObject.cs | 6 +-- 7 files changed, 92 insertions(+), 20 deletions(-) diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs index f27c1c3fd6..42154e9621 100644 --- a/OpenSim/Framework/EstateSettings.cs +++ b/OpenSim/Framework/EstateSettings.cs @@ -486,6 +486,19 @@ namespace OpenSim.Framework } } + // Estate name + private string m_estateName; + + public string estateName + { + get { return m_estateName; } + set + { + m_estateName = value; + configMember.forceSetConfigurationOption("estate_name", m_estateName.ToString()); + } + } + private LLUUID m_estateManager0; private LLUUID m_estateManager1; private LLUUID m_estateManager2; @@ -835,6 +848,8 @@ namespace OpenSim.Framework configMember.addConfigurationOption("terrain_image_id", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty, "00000000-0000-0000-0000-000000000000", true); + configMember.addConfigurationOption("estate_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING, + String.Empty, "TestEstate", true); configMember.addConfigurationOption("estate_manager_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, String.Empty, "00000000-0000-0000-0000-000000000000", true); configMember.addConfigurationOption("estate_manager_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, @@ -966,6 +981,9 @@ namespace OpenSim.Framework case "terrain_file": m_terrainFile = (string) configuration_result; break; + case "estate_name": + m_estateName = (string) configuration_result; + break; case "terrain_multiplier": m_terrainMultiplier = Convert.ToDouble(configuration_result); break; diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index 734f221ea2..f154e5e53f 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs @@ -56,6 +56,7 @@ namespace OpenSim.Framework public int salePrice = 0; //Unemeplemented. Parcels price. public Parcel.ParcelStatus landStatus = Parcel.ParcelStatus.Leased; + public uint landFlags = (uint) Parcel.ParcelFlags.AllowFly | (uint) Parcel.ParcelFlags.AllowLandmark | (uint) Parcel.ParcelFlags.AllowAllObjectEntry | (uint) Parcel.ParcelFlags.AllowDeedToGroup | (uint) Parcel.ParcelFlags.AllowTerraform | diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index 289b12232c..0baddb8f19 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -332,7 +332,14 @@ namespace OpenSim.Framework.Servers } finally { - response.OutputStream.Close(); + try + { + response.OutputStream.Close(); + } + catch (System.Net.Sockets.SocketException) + { + // This has to be here to prevent a Linux/Mono crash + } } } diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 6ba40df324..f2e48cf1d3 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -2813,7 +2813,7 @@ namespace OpenSim.Region.ClientStack { // Keep track of when this packet was sent out Pack.TickCount = System.Environment.TickCount; - + if (!Pack.Header.Resent) { Pack.Header.Sequence = NextSeqNum(); diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs index 63f2a53293..ec556a69b7 100644 --- a/OpenSim/Region/Environment/EstateManager.cs +++ b/OpenSim/Region/Environment/EstateManager.cs @@ -289,7 +289,7 @@ namespace OpenSim.Region.Environment } //Sending Estate Settings - returnblock[0].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarFirstName + m_scene.RegionInfo.MasterAvatarLastName); + returnblock[0].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.estateName); returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString()); returnblock[2].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.estateID.ToString()); @@ -578,21 +578,22 @@ namespace OpenSim.Region.Environment { RegionInfoPacket rinfopack = new RegionInfoPacket(); RegionInfoPacket.RegionInfoBlock rinfoblk = new RegionInfoPacket.RegionInfoBlock(); - - rinfoblk.BillableFactor = 0; - rinfoblk.EstateID = 02; - rinfoblk.MaxAgents = 100; - rinfoblk.ObjectBonusFactor = 1.0f; - rinfoblk.ParentEstateID = 0; - rinfoblk.PricePerMeter = 0; - rinfoblk.RedirectGridX = 0; - rinfoblk.RedirectGridY = 0; - rinfoblk.RegionFlags = (uint) m_regInfo.EstateSettings.regionFlags; + rinfopack.AgentData.AgentID = client.AgentId; + rinfopack.AgentData.SessionID = client.SessionId; + rinfoblk.BillableFactor = m_regInfo.EstateSettings.billableFactor; + rinfoblk.EstateID = m_regInfo.EstateSettings.estateID; + rinfoblk.MaxAgents = m_regInfo.EstateSettings.maxAgents; + rinfoblk.ObjectBonusFactor = m_regInfo.EstateSettings.objectBonusFactor; + rinfoblk.ParentEstateID = m_regInfo.EstateSettings.parentEstateID; + rinfoblk.PricePerMeter = m_regInfo.EstateSettings.pricePerMeter; + rinfoblk.RedirectGridX = m_regInfo.EstateSettings.redirectGridX; + rinfoblk.RedirectGridY = m_regInfo.EstateSettings.redirectGridY; + rinfoblk.RegionFlags = (uint)( m_regInfo.EstateSettings.regionFlags); rinfoblk.SimAccess = (byte) m_regInfo.EstateSettings.simAccess; rinfoblk.SunHour = m_regInfo.EstateSettings.sunHour; - rinfoblk.TerrainLowerLimit = 20; - rinfoblk.TerrainRaiseLimit = 20; - rinfoblk.UseEstateSun = true; + rinfoblk.TerrainLowerLimit = m_regInfo.EstateSettings.terrainLowerLimit; + rinfoblk.TerrainRaiseLimit = m_regInfo.EstateSettings.terrainRaiseLimit; + rinfoblk.UseEstateSun = !m_regInfo.EstateSettings.useFixedSun; rinfoblk.WaterHeight = m_regInfo.EstateSettings.waterHeight; rinfoblk.SimName = Helpers.StringToField(m_regInfo.RegionName); @@ -650,7 +651,7 @@ namespace OpenSim.Region.Environment regionInfoPacket.RegionInfo.PricePerMeter = m_regInfo.EstateSettings.pricePerMeter; regionInfoPacket.RegionInfo.RedirectGridX = m_regInfo.EstateSettings.redirectGridX; regionInfoPacket.RegionInfo.RedirectGridY = m_regInfo.EstateSettings.redirectGridY; - regionInfoPacket.RegionInfo.RegionFlags = (uint) m_regInfo.EstateSettings.regionFlags; + regionInfoPacket.RegionInfo.RegionFlags = (uint)(m_regInfo.EstateSettings.regionFlags); regionInfoPacket.RegionInfo.SimAccess = (byte) m_regInfo.EstateSettings.simAccess; regionInfoPacket.RegionInfo.SimName = Helpers.StringToField(m_regInfo.RegionName); regionInfoPacket.RegionInfo.SunHour = m_regInfo.EstateSettings.sunHour; @@ -658,6 +659,7 @@ namespace OpenSim.Region.Environment regionInfoPacket.RegionInfo.TerrainRaiseLimit = m_regInfo.EstateSettings.terrainRaiseLimit; regionInfoPacket.RegionInfo.UseEstateSun = !m_regInfo.EstateSettings.useFixedSun; regionInfoPacket.RegionInfo.WaterHeight = m_regInfo.EstateSettings.waterHeight; + remote_client.OutPacket(regionInfoPacket, ThrottleOutPacketType.Task); } diff --git a/OpenSim/Region/Environment/Modules/BetaGridLikeMoneyModule.cs b/OpenSim/Region/Environment/Modules/BetaGridLikeMoneyModule.cs index d950af9143..aef0f818a9 100644 --- a/OpenSim/Region/Environment/Modules/BetaGridLikeMoneyModule.cs +++ b/OpenSim/Region/Environment/Modules/BetaGridLikeMoneyModule.cs @@ -144,6 +144,7 @@ namespace OpenSim.Region.Environment.Modules // Centralized grid structure using OpenSimWi Redux revision 9+ // https://opensimwiredux.svn.sourceforge.net/svnroot/opensimwiredux scene.AddXmlRPCHandler("dynamic_balance_update_request", GridMoneyUpdate); + scene.AddXmlRPCHandler("user_alert", UserAlert); } else { @@ -1164,6 +1165,49 @@ namespace OpenSim.Region.Environment.Modules r.Value = rparms; return r; } + /// + /// XMLRPC handler to send alert message and sound to client + /// + public XmlRpcResponse UserAlert(XmlRpcRequest request) + { + XmlRpcResponse ret = new XmlRpcResponse(); + Hashtable retparam = new Hashtable(); + Hashtable requestData = (Hashtable)request.Params[0]; + + LLUUID agentId = LLUUID.Zero; + LLUUID soundId = LLUUID.Zero; + + Helpers.TryParse((string)requestData["agentId"], out agentId); + Helpers.TryParse((string)requestData["soundId"], out soundId); + string text=(string)requestData["text"]; + string secret=(string)requestData["secret"]; + + Scene userScene = GetRandomScene(); + if(userScene.RegionInfo.regionSecret.ToString() == secret) + { + IClientAPI client = LocateClientObject(agentId); + + if (client != null) + { + if(soundId != LLUUID.Zero) + client.SendPlayAttachedSound(soundId, LLUUID.Zero, LLUUID.Zero, 1.0f, 0); + client.SendBlueBoxMessage(LLUUID.Zero, LLUUID.Zero, "", text); + retparam.Add("success", true); + } + else + { + retparam.Add("success", false); + } + } + else + { + retparam.Add("success", false); + } + ret.Value = retparam; + + return ret; + } + # region Standalone box enablers only diff --git a/OpenSim/Region/Environment/Modules/LandManagement/LandObject.cs b/OpenSim/Region/Environment/Modules/LandManagement/LandObject.cs index 161434e110..69d3c05763 100644 --- a/OpenSim/Region/Environment/Modules/LandManagement/LandObject.cs +++ b/OpenSim/Region/Environment/Modules/LandManagement/LandObject.cs @@ -172,7 +172,7 @@ namespace OpenSim.Region.Environment.Modules.LandManagement { updatePacket.ParcelData.MaxPrims = Convert.ToInt32( - Math.Round((Convert.ToDecimal(landData.area)/Convert.ToDecimal(65536))*15000* + Math.Round((Convert.ToDecimal(landData.area)/Convert.ToDecimal(65536))*m_scene.objectCapacity* Convert.ToDecimal(m_scene.RegionInfo.EstateSettings.objectBonusFactor))); } else @@ -194,7 +194,7 @@ namespace OpenSim.Region.Environment.Modules.LandManagement updatePacket.ParcelData.PassHours = landData.passHours; updatePacket.ParcelData.PassPrice = landData.passPrice; updatePacket.ParcelData.PublicCount = 0; //unemplemented - + uint regionFlags = (uint) m_scene.RegionInfo.EstateSettings.regionFlags; updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint) Simulator.RegionFlags.DenyAnonymous) > 0); @@ -215,7 +215,7 @@ namespace OpenSim.Region.Environment.Modules.LandManagement { updatePacket.ParcelData.SimWideMaxPrims = Convert.ToInt32( - Math.Round((Convert.ToDecimal(landData.simwideArea)/Convert.ToDecimal(65536))*15000* + Math.Round((Convert.ToDecimal(landData.simwideArea) / Convert.ToDecimal(65536)) * m_scene.objectCapacity * Convert.ToDecimal(m_scene.RegionInfo.EstateSettings.objectBonusFactor))); } else