From 180be7de07014aa33bc6066f12a0819b731c1c9d Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Tue, 10 Feb 2009 13:10:57 +0000 Subject: this is step 2 of 2 of the OpenSim.Region.Environment refactor. NOTHING has been deleted or moved off to forge at this point. what has happened is that OpenSim.Region.Environment.Modules has been split in two: - OpenSim.Region.CoreModules: all those modules that are either directly or indirectly referenced from other OpenSim packages, or that provide functionality that the OpenSim developer community considers core functionality: CoreModules/Agent/AssetTransaction CoreModules/Agent/Capabilities CoreModules/Agent/TextureDownload CoreModules/Agent/TextureSender CoreModules/Agent/TextureSender/Tests CoreModules/Agent/Xfer CoreModules/Avatar/AvatarFactory CoreModules/Avatar/Chat/ChatModule CoreModules/Avatar/Combat CoreModules/Avatar/Currency/SampleMoney CoreModules/Avatar/Dialog CoreModules/Avatar/Friends CoreModules/Avatar/Gestures CoreModules/Avatar/Groups CoreModules/Avatar/InstantMessage CoreModules/Avatar/Inventory CoreModules/Avatar/Inventory/Archiver CoreModules/Avatar/Inventory/Transfer CoreModules/Avatar/Lure CoreModules/Avatar/ObjectCaps CoreModules/Avatar/Profiles CoreModules/Communications/Local CoreModules/Communications/REST CoreModules/Framework/EventQueue CoreModules/Framework/InterfaceCommander CoreModules/Hypergrid CoreModules/InterGrid CoreModules/Scripting/DynamicTexture CoreModules/Scripting/EMailModules CoreModules/Scripting/HttpRequest CoreModules/Scripting/LoadImageURL CoreModules/Scripting/VectorRender CoreModules/Scripting/WorldComm CoreModules/Scripting/XMLRPC CoreModules/World/Archiver CoreModules/World/Archiver/Tests CoreModules/World/Estate CoreModules/World/Land CoreModules/World/Permissions CoreModules/World/Serialiser CoreModules/World/Sound CoreModules/World/Sun CoreModules/World/Terrain CoreModules/World/Terrain/DefaultEffects CoreModules/World/Terrain/DefaultEffects/bin CoreModules/World/Terrain/DefaultEffects/bin/Debug CoreModules/World/Terrain/Effects CoreModules/World/Terrain/FileLoaders CoreModules/World/Terrain/FloodBrushes CoreModules/World/Terrain/PaintBrushes CoreModules/World/Terrain/Tests CoreModules/World/Vegetation CoreModules/World/Wind CoreModules/World/WorldMap - OpenSim.Region.OptionalModules: all those modules that are not core modules: OptionalModules/Avatar/Chat/IRC-stuff OptionalModules/Avatar/Concierge OptionalModules/Avatar/Voice/AsterixVoice OptionalModules/Avatar/Voice/SIPVoice OptionalModules/ContentManagementSystem OptionalModules/Grid/Interregion OptionalModules/Python OptionalModules/SvnSerialiser OptionalModules/World/NPC OptionalModules/World/TreePopulator --- .../Modules/World/Estate/EstateManagementModule.cs | 1012 -------------------- .../World/Estate/EstateTerrainXferHandler.cs | 127 --- 2 files changed, 1139 deletions(-) delete mode 100644 OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs delete mode 100644 OpenSim/Region/Environment/Modules/World/Estate/EstateTerrainXferHandler.cs (limited to 'OpenSim/Region/Environment/Modules/World/Estate') diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs deleted file mode 100644 index 6b74c83..0000000 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs +++ /dev/null @@ -1,1012 +0,0 @@ -/* - * 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 OpenSim 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.Threading; -using System.Collections.Generic; -using System.Reflection; -using OpenMetaverse; -using log4net; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.Environment.Modules.World.Estate -{ - public class EstateManagementModule : IEstateModule - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private delegate void LookupUUIDS(List uuidLst); - - private Scene m_scene; - - private EstateTerrainXferHandler TerrainUploader = null; - - #region Packet Data Responders - - private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice) - { - uint sun = 0; - - if (!m_scene.RegionInfo.EstateSettings.UseGlobalTime) - sun=(uint)(m_scene.RegionInfo.EstateSettings.SunPosition*1024.0) + 0x1800; - UUID estateOwner; - if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) - estateOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; - else - estateOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; - - if (m_scene.Permissions.IsGod(remote_client.AgentId)) - estateOwner = remote_client.AgentId; - - remote_client.SendDetailedEstateData(invoice, - m_scene.RegionInfo.EstateSettings.EstateName, - m_scene.RegionInfo.EstateSettings.EstateID, - m_scene.RegionInfo.EstateSettings.ParentEstateID, - GetEstateFlags(), - sun, - m_scene.RegionInfo.RegionSettings.Covenant, - m_scene.RegionInfo.EstateSettings.AbuseEmail, - estateOwner); - - remote_client.SendEstateManagersList(invoice, - m_scene.RegionInfo.EstateSettings.EstateManagers, - m_scene.RegionInfo.EstateSettings.EstateID); - - remote_client.SendBannedUserList(invoice, - m_scene.RegionInfo.EstateSettings.EstateBans, - m_scene.RegionInfo.EstateSettings.EstateID); - } - - private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, - int matureLevel, bool restrictPushObject, bool allowParcelChanges) - { - if (blockTerraform) - m_scene.RegionInfo.RegionSettings.BlockTerraform = true; - else - m_scene.RegionInfo.RegionSettings.BlockTerraform = false; - - if (noFly) - m_scene.RegionInfo.RegionSettings.BlockFly = true; - else - m_scene.RegionInfo.RegionSettings.BlockFly = false; - - if (allowDamage) - m_scene.RegionInfo.RegionSettings.AllowDamage = true; - else - m_scene.RegionInfo.RegionSettings.AllowDamage = false; - - if (blockLandResell) - m_scene.RegionInfo.RegionSettings.AllowLandResell = false; - else - m_scene.RegionInfo.RegionSettings.AllowLandResell = true; - - m_scene.RegionInfo.RegionSettings.AgentLimit = (byte) maxAgents; - - m_scene.RegionInfo.RegionSettings.ObjectBonus = objectBonusFactor; - - if (matureLevel <= 13) - m_scene.RegionInfo.RegionSettings.Maturity = 0; - else - m_scene.RegionInfo.RegionSettings.Maturity = 1; - - if (restrictPushObject) - m_scene.RegionInfo.RegionSettings.RestrictPushing = true; - else - m_scene.RegionInfo.RegionSettings.RestrictPushing = false; - - if (allowParcelChanges) - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = true; - else - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false; - - m_scene.RegionInfo.RegionSettings.Save(); - - sendRegionInfoPacketToAll(); - } - - public void setEstateTerrainBaseTexture(IClientAPI remoteClient, int corner, UUID texture) - { - if (texture == UUID.Zero) - return; - - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; - break; - case 1: - m_scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; - break; - case 2: - m_scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; - break; - case 3: - m_scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - } - - public void setEstateTerrainTextureHeights(IClientAPI client, int corner, float lowValue, float highValue) - { - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SW = highValue; - break; - case 1: - m_scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NW = highValue; - break; - case 2: - m_scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SE = highValue; - break; - case 3: - m_scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NE = highValue; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - } - - private void handleCommitEstateTerrainTextureRequest(IClientAPI remoteClient) - { - sendRegionHandshakeToAll(); - } - - public void setRegionTerrainSettings(float WaterHeight, - float TerrainRaiseLimit, float TerrainLowerLimit, - bool UseEstateSun, bool UseFixedSun, float SunHour, - bool UseGlobal, bool EstateFixedSun, float EstateSunHour) - { - // Water Height - m_scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; - - // Terraforming limits - m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit = TerrainRaiseLimit; - m_scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; - - // Time of day / fixed sun - m_scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; - m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; - m_scene.RegionInfo.RegionSettings.SunPosition = SunHour; - - m_scene.EventManager.TriggerEstateToolsTimeUpdate(m_scene.RegionInfo.RegionHandle, UseFixedSun, UseEstateSun, SunHour); - - //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString()); - //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString()); - - sendRegionInfoPacketToAll(); - m_scene.RegionInfo.RegionSettings.Save(); - } - - private void handleEstateRestartSimRequest(IClientAPI remoteClient, int timeInSeconds) - { - m_scene.Restart(timeInSeconds); - } - - private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) - { - m_scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; - m_scene.RegionInfo.RegionSettings.Save(); - } - - private void handleEstateAccessDeltaRequest(IClientAPI remote_client, UUID invoice, int estateAccessType, UUID user) - { - // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. - - if (user == m_scene.RegionInfo.EstateSettings.EstateOwner) - return; // never process EO - if (user == m_scene.RegionInfo.MasterAvatarAssignedUUID) - return; // never process owner - - switch (estateAccessType) - { - case 64: - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) - { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; - - bool alreadyInList = false; - - for (int i = 0; i < banlistcheck.Length; i++) - { - if (user == banlistcheck[i].bannedUUID) - { - alreadyInList = true; - break; - } - - } - if (!alreadyInList) - { - - EstateBan item = new EstateBan(); - - item.bannedUUID = user; - item.estateID = m_scene.RegionInfo.EstateSettings.EstateID; - item.bannedIP = "0.0.0.0"; - item.bannedIPHostMask = "0.0.0.0"; - - m_scene.RegionInfo.EstateSettings.AddBan(item); - m_scene.RegionInfo.EstateSettings.Save(); - - ScenePresence s = m_scene.GetScenePresence(user); - if (s != null) - { - if (!s.IsChildAgent) - { - s.ControllingClient.SendTeleportLocationStart(); - m_scene.TeleportClientHome(user, s.ControllingClient); - } - } - - } - else - { - remote_client.SendAlertMessage("User is already on the region ban list"); - } - //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); - } - else - { - remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); - } - break; - case 128: - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) - { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; - - bool alreadyInList = false; - EstateBan listitem = null; - - for (int i = 0; i < banlistcheck.Length; i++) - { - if (user == banlistcheck[i].bannedUUID) - { - alreadyInList = true; - listitem = banlistcheck[i]; - break; - } - - } - if (alreadyInList && listitem != null) - { - m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.bannedUUID); - m_scene.RegionInfo.EstateSettings.Save(); - } - else - { - remote_client.SendAlertMessage("User is not on the region ban list"); - } - //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); - } - else - { - remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); - } - break; - case 256: - - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) - { - m_scene.RegionInfo.EstateSettings.AddEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); - remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); - } - else - { - remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); - } - - break; - case 512: - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) - { - m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); - - remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); - } - else - { - remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); - } - break; - - default: - - m_log.ErrorFormat("EstateOwnerMessage: Unknown EstateAccessType requested in estateAccessDelta: {0}", estateAccessType.ToString()); - break; - } - } - - private void SendSimulatorBlueBoxMessage( - IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message) - { - IDialogModule dm = m_scene.RequestModuleInterface(); - - if (dm != null) - dm.SendNotificationToUsersInRegion(senderID, senderName, message); - } - - private void SendEstateBlueBoxMessage( - IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message) - { - IDialogModule dm = m_scene.RequestModuleInterface(); - - if (dm != null) - dm.SendNotificationToUsersInEstate(senderID, senderName, message); - } - - private void handleEstateDebugRegionRequest(IClientAPI remote_client, UUID invoice, UUID senderID, bool scripted, bool collisionEvents, bool physics) - { - if (physics) - m_scene.RegionInfo.RegionSettings.DisablePhysics = true; - else - m_scene.RegionInfo.RegionSettings.DisablePhysics = false; - - if (scripted) - m_scene.RegionInfo.RegionSettings.DisableScripts = true; - else - m_scene.RegionInfo.RegionSettings.DisableScripts = false; - - if (collisionEvents) - m_scene.RegionInfo.RegionSettings.DisableCollisions = true; - else - m_scene.RegionInfo.RegionSettings.DisableCollisions = false; - - - m_scene.RegionInfo.RegionSettings.Save(); - - m_scene.SetSceneCoreDebug(scripted, collisionEvents, physics); - } - - private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey) - { - if (prey != UUID.Zero) - { - ScenePresence s = m_scene.GetScenePresence(prey); - if (s != null) - { - s.ControllingClient.SendTeleportLocationStart(); - m_scene.TeleportClientHome(prey, s.ControllingClient); - } - } - } - - private void handleEstateTeleportAllUsersHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID) - { - // Get a fresh list that will not change as people get teleported away - List prescences = m_scene.GetScenePresences(); - foreach (ScenePresence p in prescences) - { - if (p.UUID != senderID) - { - // make sure they are still there, we could be working down a long list - ScenePresence s = m_scene.GetScenePresence(p.UUID); - if (s != null) - { - // Also make sure they are actually in the region - if (!s.IsChildAgent) - { - s.ControllingClient.SendTeleportLocationStart(); - m_scene.TeleportClientHome(s.UUID, s.ControllingClient); - } - } - } - } - } - private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) - { - if (TerrainUploader != null) - { - lock (TerrainUploader) - { - if (XferID == TerrainUploader.XferID) - { - remoteClient.OnXferReceive -= TerrainUploader.XferReceive; - remoteClient.OnAbortXfer -= AbortTerrainXferHandler; - TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; - - TerrainUploader = null; - remoteClient.SendAlertMessage("Terrain Upload aborted by the client"); - } - } - } - - } - private void HandleTerrainApplication(string filename, byte[] terrainData, IClientAPI remoteClient) - { - lock (TerrainUploader) - { - remoteClient.OnXferReceive -= TerrainUploader.XferReceive; - remoteClient.OnAbortXfer -= AbortTerrainXferHandler; - TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; - - TerrainUploader = null; - } - remoteClient.SendAlertMessage("Terrain Upload Complete. Loading...."); - OpenSim.Region.Environment.Modules.World.Terrain.ITerrainModule terr = m_scene.RequestModuleInterface(); - - if (terr != null) - { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); - if (System.IO.File.Exists(Util.dataDir() + "/terrain.raw")) - { - System.IO.File.Delete(Util.dataDir() + "/terrain.raw"); - } - try - { - System.IO.FileStream input = new System.IO.FileStream(Util.dataDir() + "/terrain.raw", System.IO.FileMode.CreateNew); - input.Write(terrainData, 0, terrainData.Length); - input.Close(); - } - catch (System.IO.IOException e) - { - m_log.ErrorFormat("[TERRAIN]: Error Saving a terrain file uploaded via the estate tools. It gave us the following error: {0}", e.ToString()); - remoteClient.SendAlertMessage("There was an IO Exception loading your terrain. Please check free space"); - - return; - } - catch (System.Security.SecurityException e) - { - m_log.ErrorFormat("[TERRAIN]: Error Saving a terrain file uploaded via the estate tools. It gave us the following error: {0}", e.ToString()); - remoteClient.SendAlertMessage("There was a security Exception loading your terrain. Please check the security on the simulator drive"); - - return; - } - catch (System.UnauthorizedAccessException e) - { - m_log.ErrorFormat("[TERRAIN]: Error Saving a terrain file uploaded via the estate tools. It gave us the following error: {0}", e.ToString()); - remoteClient.SendAlertMessage("There was a security Exception loading your terrain. Please check the security on the simulator drive"); - - return; - } - - - - - try - { - terr.LoadFromFile(Util.dataDir() + "/terrain.raw"); - remoteClient.SendAlertMessage("Your terrain was loaded. Give it a minute or two to apply"); - } - catch (Exception e) - { - m_log.ErrorFormat("[TERRAIN]: Error loading a terrain file uploaded via the estate tools. It gave us the following error: {0}", e.ToString()); - remoteClient.SendAlertMessage("There was a general error loading your terrain. Please fix the terrain file and try again"); - } - - } - else - { - remoteClient.SendAlertMessage("Unable to apply terrain. Cannot get an instance of the terrain module"); - } - - - - } - - private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) - { - - if (TerrainUploader == null) - { - - TerrainUploader = new EstateTerrainXferHandler(remote_client, clientFileName); - lock (TerrainUploader) - { - remote_client.OnXferReceive += TerrainUploader.XferReceive; - remote_client.OnAbortXfer += AbortTerrainXferHandler; - TerrainUploader.TerrainUploadDone += HandleTerrainApplication; - } - TerrainUploader.RequestStartXfer(remote_client); - - } - else - { - remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); - } - - } - private void handleTerrainRequest(IClientAPI remote_client, string clientFileName) - { - // Save terrain here - OpenSim.Region.Environment.Modules.World.Terrain.ITerrainModule terr = m_scene.RequestModuleInterface(); - - if (terr != null) - { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); - if (System.IO.File.Exists(Util.dataDir() + "/terrain.raw")) - { - System.IO.File.Delete(Util.dataDir() + "/terrain.raw"); - } - terr.SaveToFile(Util.dataDir() + "/terrain.raw"); - - System.IO.FileStream input = new System.IO.FileStream(Util.dataDir() + "/terrain.raw", System.IO.FileMode.Open); - byte[] bdata = new byte[input.Length]; - input.Read(bdata, 0, (int)input.Length); - remote_client.SendAlertMessage("Terrain file written, starting download..."); - m_scene.XferManager.AddNewFile("terrain.raw", bdata); - // Tell client about it - m_log.Warn("[CLIENT]: Sending Terrain to " + remote_client.Name); - remote_client.SendInitiateDownload("terrain.raw", clientFileName); - } - } - - private void HandleRegionInfoRequest(IClientAPI remote_client) - { - RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.estateID = m_scene.RegionInfo.EstateSettings.EstateID; - args.maxAgents = (byte)m_scene.RegionInfo.RegionSettings.AgentLimit; - args.objectBonusFactor = (float)m_scene.RegionInfo.RegionSettings.ObjectBonus; - args.parentEstateID = m_scene.RegionInfo.EstateSettings.ParentEstateID; - args.pricePerMeter = m_scene.RegionInfo.EstateSettings.PricePerMeter; - args.redirectGridX = m_scene.RegionInfo.EstateSettings.RedirectGridX; - args.redirectGridY = m_scene.RegionInfo.EstateSettings.RedirectGridY; - args.regionFlags = GetRegionFlags(); - byte mature = 13; - if (m_scene.RegionInfo.RegionSettings.Maturity == 1) - mature = 21; - args.simAccess = mature; - - args.sunHour = (float)m_scene.RegionInfo.RegionSettings.SunPosition; - args.terrainLowerLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit; - args.terrainRaiseLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit; - args.useEstateSun = m_scene.RegionInfo.RegionSettings.UseEstateSun; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; - args.simName = m_scene.RegionInfo.RegionName; - - remote_client.SendRegionInfoToEstateMenu(args); - } - - private void HandleEstateCovenantRequest(IClientAPI remote_client) - { - remote_client.SendEstateCovenantInformation(m_scene.RegionInfo.RegionSettings.Covenant); - } - - private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) - { - Dictionary SceneData = new Dictionary(); - List uuidNameLookupList = new List(); - - if (reportType == 1) - { - SceneData = m_scene.PhysicsScene.GetTopColliders(); - } - else if (reportType == 0) - { - SceneData = m_scene.m_sceneGraph.GetTopScripts(); - } - - List SceneReport = new List(); - lock (SceneData) - { - foreach (uint obj in SceneData.Keys) - { - SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); - if (prt != null) - { - if (prt.ParentGroup != null) - { - SceneObjectGroup sog = prt.ParentGroup; - if (sog != null) - { - LandStatReportItem lsri = new LandStatReportItem(); - lsri.LocationX = sog.AbsolutePosition.X; - lsri.LocationY = sog.AbsolutePosition.Y; - lsri.LocationZ = sog.AbsolutePosition.Z; - lsri.Score = SceneData[obj]; - lsri.TaskID = sog.UUID; - lsri.TaskLocalID = sog.LocalId; - lsri.TaskName = sog.GetPartName(obj); - if (m_scene.CommsManager.UUIDNameCachedTest(sog.OwnerID)) - { - lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); - } - else - { - lsri.OwnerName = "waiting"; - lock (uuidNameLookupList) - uuidNameLookupList.Add(sog.OwnerID); - } - - if (filter.Length != 0) - { - if ((lsri.OwnerName.Contains(filter) || lsri.TaskName.Contains(filter))) - { - } - else - { - continue; - } - } - - SceneReport.Add(lsri); - } - } - } - - } - } - remoteClient.SendLandStatReply(reportType, requestFlags, (uint)SceneReport.Count,SceneReport.ToArray()); - - if (uuidNameLookupList.Count > 0) - LookupUUID(uuidNameLookupList); - } - - private void LookupUUIDSCompleted(IAsyncResult iar) - { - LookupUUIDS icon = (LookupUUIDS)iar.AsyncState; - icon.EndInvoke(iar); - } - private void LookupUUID(List uuidLst) - { - LookupUUIDS d = LookupUUIDsAsync; - - d.BeginInvoke(uuidLst, - LookupUUIDSCompleted, - d); - } - private void LookupUUIDsAsync(List uuidLst) - { - UUID[] uuidarr = new UUID[0]; - - lock (uuidLst) - { - uuidarr = uuidLst.ToArray(); - } - - for (int i = 0; i < uuidarr.Length; i++) - { - // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); - m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); - // we drop it. It gets cached though... so we're ready for the next request. - } - } - #endregion - - #region Outgoing Packets - - public void sendRegionInfoPacketToAll() - { - List avatars = m_scene.GetAvatars(); - - for (int i = 0; i < avatars.Count; i++) - { - HandleRegionInfoRequest(avatars[i].ControllingClient); ; - } - } - - public void sendRegionHandshake(IClientAPI remoteClient) - { - RegionHandshakeArgs args = new RegionHandshakeArgs(); - - args.isEstateManager = m_scene.RegionInfo.EstateSettings.IsEstateManager(remoteClient.AgentId); - if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero && m_scene.RegionInfo.EstateSettings.EstateOwner == remoteClient.AgentId) - args.isEstateManager = true; - - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.terrainStartHeight0 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SW; - args.terrainHeightRange0 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SW; - args.terrainStartHeight1 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NW; - args.terrainHeightRange1 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NW; - args.terrainStartHeight2 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SE; - args.terrainHeightRange2 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SE; - args.terrainStartHeight3 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NE; - args.terrainHeightRange3 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NE; - byte mature = 13; - if (m_scene.RegionInfo.RegionSettings.Maturity == 1) - mature = 21; - args.simAccess = mature; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; - - args.regionFlags = GetRegionFlags(); - args.regionName = m_scene.RegionInfo.RegionName; - if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) - args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; - else - args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; - - // Fudge estate owner - //if (m_scene.Permissions.IsGod(remoteClient.AgentId)) - // args.SimOwner = remoteClient.AgentId; - - args.terrainBase0 = UUID.Zero; - args.terrainBase1 = UUID.Zero; - args.terrainBase2 = UUID.Zero; - args.terrainBase3 = UUID.Zero; - args.terrainDetail0 = m_scene.RegionInfo.RegionSettings.TerrainTexture1; - args.terrainDetail1 = m_scene.RegionInfo.RegionSettings.TerrainTexture2; - args.terrainDetail2 = m_scene.RegionInfo.RegionSettings.TerrainTexture3; - args.terrainDetail3 = m_scene.RegionInfo.RegionSettings.TerrainTexture4; - - remoteClient.SendRegionHandshake(m_scene.RegionInfo,args); - } - - public void sendRegionHandshakeToAll() - { - m_scene.Broadcast(sendRegionHandshake); - } - - public void handleEstateChangeInfo(IClientAPI remoteClient, UUID invoice, UUID senderID, UInt32 parms1, UInt32 parms2) - { - if (parms2 == 0) - { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = true; - m_scene.RegionInfo.EstateSettings.SunPosition = 0.0; - } - else - { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = false; - m_scene.RegionInfo.EstateSettings.SunPosition = (double)(parms2 - 0x1800)/1024.0; - } - - if ((parms1 & 0x00000010) != 0) - m_scene.RegionInfo.EstateSettings.FixedSun = true; - else - m_scene.RegionInfo.EstateSettings.FixedSun = false; - - if ((parms1 & 0x00008000) != 0) - m_scene.RegionInfo.EstateSettings.PublicAccess = true; - else - m_scene.RegionInfo.EstateSettings.PublicAccess = false; - - if ((parms1 & 0x10000000) != 0) - m_scene.RegionInfo.EstateSettings.AllowVoice = true; - else - m_scene.RegionInfo.EstateSettings.AllowVoice = false; - - if ((parms1 & 0x00100000) != 0) - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; - else - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; - - if ((parms1 & 0x00800000) != 0) - m_scene.RegionInfo.EstateSettings.DenyAnonymous = true; - else - m_scene.RegionInfo.EstateSettings.DenyAnonymous = false; - - if ((parms1 & 0x01000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyIdentified = true; - else - m_scene.RegionInfo.EstateSettings.DenyIdentified = false; - - if ((parms1 & 0x02000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyTransacted = true; - else - m_scene.RegionInfo.EstateSettings.DenyTransacted = false; - - if ((parms1 & 0x40000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyMinors = true; - else - m_scene.RegionInfo.EstateSettings.DenyMinors = false; - - m_scene.RegionInfo.EstateSettings.Save(); - - float sun = (float)m_scene.RegionInfo.RegionSettings.SunPosition; - if (m_scene.RegionInfo.RegionSettings.UseEstateSun) - { - sun = (float)m_scene.RegionInfo.EstateSettings.SunPosition; - if (m_scene.RegionInfo.EstateSettings.UseGlobalTime) - sun = m_scene.EventManager.GetSunLindenHour(); - } - - m_scene.EventManager.TriggerEstateToolsTimeUpdate( - m_scene.RegionInfo.RegionHandle, - m_scene.RegionInfo.EstateSettings.FixedSun || - m_scene.RegionInfo.RegionSettings.FixedSun, - m_scene.RegionInfo.RegionSettings.UseEstateSun, sun); - - sendDetailedEstateData(remoteClient, invoice); - } - - #endregion - - #region IRegionModule Members - - public void Initialise(Scene scene, IConfigSource source) - { - m_scene = scene; - m_scene.RegisterModuleInterface(this); - m_scene.EventManager.OnNewClient += EventManager_OnNewClient; - m_scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; - } - - - public void PostInitialise() - { - } - - public void Close() - { - } - - public string Name - { - get { return "EstateManagementModule"; } - } - - public bool IsSharedModule - { - get { return false; } - } - - #endregion - - #region Other Functions - - public void changeWaterHeight(float height) - { - setRegionTerrainSettings(height, - (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit, - (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit, - m_scene.RegionInfo.RegionSettings.UseEstateSun, - m_scene.RegionInfo.RegionSettings.FixedSun, - (float)m_scene.RegionInfo.RegionSettings.SunPosition, - m_scene.RegionInfo.EstateSettings.UseGlobalTime, - m_scene.RegionInfo.EstateSettings.FixedSun, - (float)m_scene.RegionInfo.EstateSettings.SunPosition); - - sendRegionInfoPacketToAll(); - } - - #endregion - - private void EventManager_OnNewClient(IClientAPI client) - { - client.OnDetailedEstateDataRequest += sendDetailedEstateData; - client.OnSetEstateFlagsRequest += estateSetRegionInfoHandler; -// client.OnSetEstateTerrainBaseTexture += setEstateTerrainBaseTexture; - client.OnSetEstateTerrainDetailTexture += setEstateTerrainBaseTexture; - client.OnSetEstateTerrainTextureHeights += setEstateTerrainTextureHeights; - client.OnCommitEstateTerrainTextureRequest += handleCommitEstateTerrainTextureRequest; - client.OnSetRegionTerrainSettings += setRegionTerrainSettings; - client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; - client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; - client.OnEstateChangeInfo += handleEstateChangeInfo; - client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; - client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; - client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; - client.OnEstateDebugRegionRequest += handleEstateDebugRegionRequest; - client.OnEstateTeleportOneUserHomeRequest += handleEstateTeleportOneUserHomeRequest; - client.OnEstateTeleportAllUsersHomeRequest += handleEstateTeleportAllUsersHomeRequest; - client.OnRequestTerrain += handleTerrainRequest; - client.OnUploadTerrain += handleUploadTerrain; - - client.OnRegionInfoRequest += HandleRegionInfoRequest; - client.OnEstateCovenantRequest += HandleEstateCovenantRequest; - client.OnLandStatRequest += HandleLandStatRequest; - sendRegionHandshake(client); - } - - public uint GetRegionFlags() - { - RegionFlags flags = RegionFlags.None; - - // Fully implemented - // - if (m_scene.RegionInfo.RegionSettings.AllowDamage) - flags |= RegionFlags.AllowDamage; - if (m_scene.RegionInfo.RegionSettings.BlockTerraform) - flags |= RegionFlags.BlockTerraform; - if (!m_scene.RegionInfo.RegionSettings.AllowLandResell) - flags |= RegionFlags.BlockLandResell; - if (m_scene.RegionInfo.RegionSettings.DisableCollisions) - flags |= RegionFlags.SkipCollisions; - if (m_scene.RegionInfo.RegionSettings.DisableScripts) - flags |= RegionFlags.SkipScripts; - if (m_scene.RegionInfo.RegionSettings.DisablePhysics) - flags |= RegionFlags.SkipPhysics; - if (m_scene.RegionInfo.RegionSettings.BlockFly) - flags |= RegionFlags.NoFly; - if (m_scene.RegionInfo.RegionSettings.RestrictPushing) - flags |= RegionFlags.RestrictPushObject; - if (m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide) - flags |= RegionFlags.AllowParcelChanges; - if (m_scene.RegionInfo.RegionSettings.BlockShowInSearch) - flags |= (RegionFlags)(1 << 29); - - if (m_scene.RegionInfo.RegionSettings.FixedSun) - flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.RegionSettings.Sandbox) - flags |= RegionFlags.Sandbox; - - // Fudge these to always on, so the menu options activate - // - flags |= RegionFlags.AllowLandmark; - flags |= RegionFlags.AllowSetHome; - - // TODO: SkipUpdateInterestList - - // Omitted - // - // Omitted: NullLayer (what is that?) - // Omitted: SkipAgentAction (what does it do?) - - return (uint)flags; - } - - public uint GetEstateFlags() - { - RegionFlags flags = RegionFlags.None; - - if (m_scene.RegionInfo.EstateSettings.FixedSun) - flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.EstateSettings.PublicAccess) - flags |= (RegionFlags.PublicAllowed | - RegionFlags.ExternallyVisible); - if (m_scene.RegionInfo.EstateSettings.AllowVoice) - flags |= RegionFlags.AllowVoice; - if (m_scene.RegionInfo.EstateSettings.AllowDirectTeleport) - flags |= RegionFlags.AllowDirectTeleport; - if (m_scene.RegionInfo.EstateSettings.DenyAnonymous) - flags |= RegionFlags.DenyAnonymous; - if (m_scene.RegionInfo.EstateSettings.DenyIdentified) - flags |= RegionFlags.DenyIdentified; - if (m_scene.RegionInfo.EstateSettings.DenyTransacted) - flags |= RegionFlags.DenyTransacted; - if (m_scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) - flags |= RegionFlags.AbuseEmailToEstateOwner; - if (m_scene.RegionInfo.EstateSettings.BlockDwell) - flags |= RegionFlags.BlockDwell; - if (m_scene.RegionInfo.EstateSettings.EstateSkipScripts) - flags |= RegionFlags.EstateSkipScripts; - if (m_scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) - flags |= RegionFlags.ResetHomeOnTeleport; - if (m_scene.RegionInfo.EstateSettings.TaxFree) - flags |= RegionFlags.TaxFree; - if (m_scene.RegionInfo.EstateSettings.DenyMinors) - flags |= (RegionFlags)(1 << 30); - - return (uint)flags; - } - - public bool IsManager(UUID avatarID) - { - if (avatarID == m_scene.RegionInfo.MasterAvatarAssignedUUID) - return true; - if (avatarID == m_scene.RegionInfo.EstateSettings.EstateOwner) - return true; - - List ems = new List(m_scene.RegionInfo.EstateSettings.EstateManagers); - if (ems.Contains(avatarID)) - return true; - - return false; - } - } -} diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateTerrainXferHandler.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateTerrainXferHandler.cs deleted file mode 100644 index 267178e..0000000 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateTerrainXferHandler.cs +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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 OpenSim 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.IO; -using System.Reflection; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Framework.Communications.Cache; -using OpenSim.Region.Framework.Scenes; - - -namespace OpenSim.Region.Environment.Modules.World.Estate -{ - - public class EstateTerrainXferHandler - { - //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private AssetBase m_asset; - - public delegate void TerrainUploadComplete(string name, byte[] filedata, IClientAPI remoteClient); - - public event TerrainUploadComplete TerrainUploadDone; - - //private string m_description = String.Empty; - //private string m_name = String.Empty; - //private UUID TransactionID = UUID.Zero; - private sbyte type = 0; - - public ulong mXferID; - private TerrainUploadComplete handlerTerrainUploadDone; - - public EstateTerrainXferHandler(IClientAPI pRemoteClient, string pClientFilename) - { - - m_asset = new AssetBase(); - m_asset.Metadata.FullID = UUID.Zero; - m_asset.Metadata.Type = type; - m_asset.Data = new byte[0]; - m_asset.Metadata.Name = pClientFilename; - m_asset.Metadata.Description = "empty"; - m_asset.Metadata.Local = true; - m_asset.Metadata.Temporary = true; - - } - - public ulong XferID - { - get { return mXferID; } - } - - public void RequestStartXfer(IClientAPI pRemoteClient) - { - mXferID = Util.GetNextXferID(); - pRemoteClient.SendXferRequest(mXferID, m_asset.Metadata.Type, m_asset.Metadata.FullID, 0, Utils.StringToBytes(m_asset.Metadata.Name)); - } - - /// - /// Process transfer data received from the client. - /// - /// - /// - /// - public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) - { - if (mXferID == xferID) - { - if (m_asset.Data.Length > 1) - { - byte[] destinationArray = new byte[m_asset.Data.Length + data.Length]; - Array.Copy(m_asset.Data, 0, destinationArray, 0, m_asset.Data.Length); - Array.Copy(data, 0, destinationArray, m_asset.Data.Length, data.Length); - m_asset.Data = destinationArray; - } - else - { - byte[] buffer2 = new byte[data.Length - 4]; - Array.Copy(data, 4, buffer2, 0, data.Length - 4); - m_asset.Data = buffer2; - } - - remoteClient.SendConfirmXfer(xferID, packetID); - - if ((packetID & 0x80000000) != 0) - { - SendCompleteMessage(remoteClient); - - } - } - } - - public void SendCompleteMessage(IClientAPI remoteClient) - { - handlerTerrainUploadDone = TerrainUploadDone; - if (handlerTerrainUploadDone != null) - { - handlerTerrainUploadDone(m_asset.Metadata.Name, m_asset.Data, remoteClient); - } - } - } -} -- cgit v1.1