From 462ad336dcd59dfc4325aed9e6d635aa866cd094 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 2 Nov 2012 00:02:10 +0000 Subject: Move check to allow only deletion of maptiles up to AssetServerDeleteHandler from AssetService. This allows us to use a common check for both AssetService and XAssetService. It also allows future console commands to delete an asset. As before, deletion of maptile assets is not allowed remotely unless this is explicitly configured. --- .../Server/Handlers/Asset/AssetServerDeleteHandler.cs | 17 ++++++++++++++--- OpenSim/Services/AssetService/AssetService.cs | 17 ++--------------- OpenSim/Services/AssetService/XAssetService.cs | 18 ++---------------- 3 files changed, 18 insertions(+), 34 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs b/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs index 0cfe5b1..9a8aee6 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs @@ -44,7 +44,7 @@ namespace OpenSim.Server.Handlers.Asset { public class AssetServerDeleteHandler : BaseStreamHandler { - // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private IAssetService m_AssetService; protected bool m_allowDelete; @@ -65,11 +65,22 @@ namespace OpenSim.Server.Handlers.Asset if (p.Length > 0 && m_allowDelete) { - result = m_AssetService.Delete(p[0]); + string assetID = p[0]; + + AssetBase asset = m_AssetService.Get(assetID); + if (asset != null && (int)(asset.Flags & AssetFlags.Maptile) != 0) + { + result = m_AssetService.Delete(assetID); + } + else + { + m_log.DebugFormat( + "[ASSET SERVER DELETE HANDLER]: Request to delete asset {0}, but flags are not Maptile", assetID); + } } XmlSerializer xs = new XmlSerializer(typeof(bool)); return ServerUtils.SerializeResult(xs, result); } } -} +} \ No newline at end of file diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index b1f0f7e..e7eb6fe 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -70,7 +70,7 @@ namespace OpenSim.Services.AssetService if (assetLoaderEnabled) { - m_log.DebugFormat("[ASSET]: Loading default asset set from {0}", loaderArgs); + m_log.DebugFormat("[ASSET SERVICE]: Loading default asset set from {0}", loaderArgs); m_AssetLoader.ForEachDefaultXmlAsset( loaderArgs, @@ -197,20 +197,7 @@ namespace OpenSim.Services.AssetService if (!UUID.TryParse(id, out assetID)) return false; - AssetBase asset = m_Database.GetAsset(assetID); - if (asset == null) - return false; - - if ((int)(asset.Flags & AssetFlags.Maptile) != 0) - { - return m_Database.Delete(id); - } - else - { - m_log.DebugFormat("[ASSET SERVICE]: Request to delete asset {0}, but flags are not Maptile", id); - } - - return false; + return m_Database.Delete(id); } } } \ No newline at end of file diff --git a/OpenSim/Services/AssetService/XAssetService.cs b/OpenSim/Services/AssetService/XAssetService.cs index e62bcb5..a1d10ed 100644 --- a/OpenSim/Services/AssetService/XAssetService.cs +++ b/OpenSim/Services/AssetService/XAssetService.cs @@ -194,21 +194,7 @@ namespace OpenSim.Services.AssetService if (!UUID.TryParse(id, out assetID)) return false; - AssetBase asset = m_Database.GetAsset(assetID); - if (asset == null) - return false; - - if ((int)(asset.Flags & AssetFlags.Maptile) != 0) - { - return m_Database.Delete(id); - } - else - { - m_log.DebugFormat("[XASSET SERVICE]: Request to delete asset {0}, but flags are not Maptile", id); - } - - return false; + return m_Database.Delete(id); } } -} - +} \ No newline at end of file -- cgit v1.1 From ce7beb6f20cb09e19e0f695f445cfa860b9e9c78 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 2 Nov 2012 01:41:38 +0000 Subject: Add [AssetService] AllowRemoteDeleteAllTypes (default false). This allows a closed grid to delete asset types other than maptile remotely. Only operational if AllowRemoteDelete = true also. Defaults to false - do not enable if anybody other than you can make asset service requests. --- .../Server/Handlers/Asset/AssetServerConnector.cs | 17 +++++++- .../Handlers/Asset/AssetServerDeleteHandler.cs | 50 ++++++++++++++++------ 2 files changed, 52 insertions(+), 15 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index 4123f49..ff45d94 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -67,10 +67,25 @@ namespace OpenSim.Server.Handlers.Asset throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName)); bool allowDelete = serverConfig.GetBoolean("AllowRemoteDelete", false); + bool allowDeleteAllTypes = serverConfig.GetBoolean("AllowRemoteDeleteAllTypes", false); + + AllowedRemoteDeleteTypes allowedRemoteDeleteTypes; + + if (!allowDelete) + { + allowedRemoteDeleteTypes = AllowedRemoteDeleteTypes.None; + } + else + { + if (allowDeleteAllTypes) + allowedRemoteDeleteTypes = AllowedRemoteDeleteTypes.All; + else + allowedRemoteDeleteTypes = AllowedRemoteDeleteTypes.MapTile; + } server.AddStreamHandler(new AssetServerGetHandler(m_AssetService)); server.AddStreamHandler(new AssetServerPostHandler(m_AssetService)); - server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowDelete)); + server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowedRemoteDeleteTypes)); MainConsole.Instance.Commands.AddCommand("Assets", false, "show asset", diff --git a/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs b/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs index 9a8aee6..986394b 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerDeleteHandler.cs @@ -42,18 +42,32 @@ using OpenSim.Framework.Servers.HttpServer; namespace OpenSim.Server.Handlers.Asset { + /// + /// Remote deletes allowed. + /// + public enum AllowedRemoteDeleteTypes + { + None, + MapTile, + All + } + public class AssetServerDeleteHandler : BaseStreamHandler { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private IAssetService m_AssetService; - protected bool m_allowDelete; - public AssetServerDeleteHandler(IAssetService service, bool allowDelete) : + /// + /// Asset types that can be deleted remotely. + /// + private AllowedRemoteDeleteTypes m_allowedTypes; + + public AssetServerDeleteHandler(IAssetService service, AllowedRemoteDeleteTypes allowedTypes) : base("DELETE", "/assets") { m_AssetService = service; - m_allowDelete = allowDelete; + m_allowedTypes = allowedTypes; } public override byte[] Handle(string path, Stream request, @@ -63,19 +77,27 @@ namespace OpenSim.Server.Handlers.Asset string[] p = SplitParams(path); - if (p.Length > 0 && m_allowDelete) + if (p.Length > 0) { - string assetID = p[0]; - - AssetBase asset = m_AssetService.Get(assetID); - if (asset != null && (int)(asset.Flags & AssetFlags.Maptile) != 0) - { - result = m_AssetService.Delete(assetID); - } - else + if (m_allowedTypes != AllowedRemoteDeleteTypes.None) { - m_log.DebugFormat( - "[ASSET SERVER DELETE HANDLER]: Request to delete asset {0}, but flags are not Maptile", assetID); + string assetID = p[0]; + + AssetBase asset = m_AssetService.Get(assetID); + if (asset != null) + { + if (m_allowedTypes == AllowedRemoteDeleteTypes.All + || (int)(asset.Flags & AssetFlags.Maptile) != 0) + { + result = m_AssetService.Delete(assetID); + } + else + { + m_log.DebugFormat( + "[ASSET SERVER DELETE HANDLER]: Request to delete asset {0}, but type is {1} and allowed remote delete types are {2}", + assetID, (AssetFlags)asset.Flags, m_allowedTypes); + } + } } } -- cgit v1.1 From 2e106cd5de63caf3d4eaeda8ac9a6ab0007a6b14 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Fri, 2 Nov 2012 03:07:53 -0700 Subject: Change to earlier commit for TargetVelocity to support distributed physics. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 5f2a6b1..96bca3e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -523,7 +523,7 @@ namespace OpenSim.Region.Framework.Scenes { if (PhysicsActor != null) { - m_velocity = PhysicsActor.TargetVelocity; + m_velocity = PhysicsActor.Velocity; // m_log.DebugFormat( // "[SCENE PRESENCE]: Set velocity {0} for {1} in {2} via getting Velocity!", @@ -538,7 +538,7 @@ namespace OpenSim.Region.Framework.Scenes { try { - PhysicsActor.Velocity = value; + PhysicsActor.TargetVelocity = value; } catch (Exception e) { -- cgit v1.1 From 7412795a0bedae060e9f2bce2fa12e0497916f6e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 2 Nov 2012 08:05:56 -0700 Subject: HG: flip all configs to HG2.0. PLEASE CHECK YOUR EXISTING HG CONFIGS AGAINST THESE. --- .../Framework/EntityTransfer/HGEntityTransferModule.cs | 4 ++-- .../Framework/InventoryAccess/HGInventoryAccessModule.cs | 4 +++- .../Services/HypergridService/HGSuitcaseInventoryService.cs | 10 +++++----- 3 files changed, 10 insertions(+), 8 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 679be18..e37d429 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs @@ -259,8 +259,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0) { // this user is going to another grid - // check if HyperGrid teleport is allowed, based on user level - if (sp.UserLevel < m_levelHGTeleport) + // for local users, check if HyperGrid teleport is allowed, based on user level + if (Scene.UserManagementModule.IsLocalGridUser(sp.UUID) && sp.UserLevel < m_levelHGTeleport) { m_log.WarnFormat("[HG ENTITY TRANSFER MODULE]: Unable to HG teleport agent due to insufficient UserLevel."); reason = "Hypergrid teleport not allowed"; diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 80257bd..6bb758e 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -92,7 +92,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess m_HomeURI = thisModuleConfig.GetString("HomeURI", m_HomeURI); m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true); m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty); - m_RestrictInventoryAccessAbroad = thisModuleConfig.GetBoolean("RestrictInventoryAccessAbroad", false); + m_RestrictInventoryAccessAbroad = thisModuleConfig.GetBoolean("RestrictInventoryAccessAbroad", true); } else m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!"); @@ -351,6 +351,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess private void ProcessInventoryForArriving(IClientAPI client) { + // No-op for now, but we may need to do something for freign users inventory } // @@ -397,6 +398,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess private void ProcessInventoryForLeaving(IClientAPI client) { + // No-op for now } #endregion diff --git a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs index 556a0da..677bd7b 100644 --- a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs +++ b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs @@ -71,7 +71,7 @@ namespace OpenSim.Services.HypergridService m_ConfigName = configName; if (m_Database == null) - m_log.WarnFormat("[XXX]: m_Database is null!"); + m_log.ErrorFormat("[HG SUITCASE INVENTORY SERVICE]: m_Database is null!"); // // Try reading the [InventoryService] section, if it exists @@ -301,7 +301,7 @@ namespace OpenSim.Services.HypergridService public override bool AddFolder(InventoryFolderBase folder) { - m_log.WarnFormat("[HG SUITCASE INVENTORY SERVICE]: AddFolder {0} {1}", folder.Name, folder.ParentID); + //m_log.WarnFormat("[HG SUITCASE INVENTORY SERVICE]: AddFolder {0} {1}", folder.Name, folder.ParentID); // Let's do a bit of sanity checking, more than the base service does // make sure the given folder's parent folder exists under the suitcase tree of this user @@ -323,7 +323,7 @@ namespace OpenSim.Services.HypergridService public override bool UpdateFolder(InventoryFolderBase folder) { - m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Update folder {0}, version {1}", folder.ID, folder.Version); + //m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: Update folder {0}, version {1}", folder.ID, folder.Version); if (!IsWithinSuitcaseTree(folder.Owner, folder.ID)) { m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: folder {0} not within Suitcase tree", folder.Name); @@ -584,7 +584,7 @@ namespace OpenSim.Services.HypergridService { if (a.Wearables[i][j].ItemID == itemID) { - m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: item {0} is a wearable", itemID); + //m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: item {0} is a wearable", itemID); return true; } } @@ -593,7 +593,7 @@ namespace OpenSim.Services.HypergridService // Check attachments if (a.GetAttachmentForItem(itemID) != null) { - m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: item {0} is an attachment", itemID); + //m_log.DebugFormat("[HG SUITCASE INVENTORY SERVICE]: item {0} is an attachment", itemID); return true; } -- cgit v1.1