diff options
author | Justin Clark-Casey (justincc) | 2011-07-23 01:59:14 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-07-23 01:59:14 +0100 |
commit | 667b54f5a2a04fa5a2859397868d270eab3913f1 (patch) | |
tree | bf91543d5c0c4aa6f1a25873be6acb86144675bc /OpenSim | |
parent | Fix problem where sculpts were not getting physical proxies (diff) | |
download | opensim-SC_OLD-667b54f5a2a04fa5a2859397868d270eab3913f1.zip opensim-SC_OLD-667b54f5a2a04fa5a2859397868d270eab3913f1.tar.gz opensim-SC_OLD-667b54f5a2a04fa5a2859397868d270eab3913f1.tar.bz2 opensim-SC_OLD-667b54f5a2a04fa5a2859397868d270eab3913f1.tar.xz |
Don't load current/next/everyone/base permissions from the library item xml files - always use PermissionMask.All instead (which was the existing default).
Library items always need the same permissions, so it doesn't make sense to load them from the xml files. This just opens the door to permissions mistakes.
Diffstat (limited to 'OpenSim')
5 files changed, 33 insertions, 29 deletions
diff --git a/OpenSim/Framework/InventoryFolderImpl.cs b/OpenSim/Framework/InventoryFolderImpl.cs index 29c7682..139776b 100644 --- a/OpenSim/Framework/InventoryFolderImpl.cs +++ b/OpenSim/Framework/InventoryFolderImpl.cs | |||
@@ -27,13 +27,15 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Reflection; | ||
31 | using log4net; | ||
30 | using OpenMetaverse; | 32 | using OpenMetaverse; |
31 | 33 | ||
32 | namespace OpenSim.Framework | 34 | namespace OpenSim.Framework |
33 | { | 35 | { |
34 | public class InventoryFolderImpl : InventoryFolderBase | 36 | public class InventoryFolderImpl : InventoryFolderBase |
35 | { | 37 | { |
36 | //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 38 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
37 | 39 | ||
38 | public static readonly string PATH_DELIMITER = "/"; | 40 | public static readonly string PATH_DELIMITER = "/"; |
39 | 41 | ||
@@ -402,6 +404,10 @@ namespace OpenSim.Framework | |||
402 | { | 404 | { |
403 | foreach (InventoryItemBase item in Items.Values) | 405 | foreach (InventoryItemBase item in Items.Values) |
404 | { | 406 | { |
407 | // m_log.DebugFormat( | ||
408 | // "[INVENTORY FOLDER IMPL]: Returning item {0} {1}, OwnerPermissions {2:X}", | ||
409 | // item.Name, item.ID, item.CurrentPermissions); | ||
410 | |||
405 | itemList.Add(item); | 411 | itemList.Add(item); |
406 | } | 412 | } |
407 | } | 413 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index b714f2b..4933147 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -984,11 +984,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
984 | public virtual bool CanGetAgentInventoryItem(IClientAPI remoteClient, UUID itemID, UUID requestID) | 984 | public virtual bool CanGetAgentInventoryItem(IClientAPI remoteClient, UUID itemID, UUID requestID) |
985 | { | 985 | { |
986 | InventoryItemBase assetRequestItem = GetItem(remoteClient.AgentId, itemID); | 986 | InventoryItemBase assetRequestItem = GetItem(remoteClient.AgentId, itemID); |
987 | |||
987 | if (assetRequestItem == null) | 988 | if (assetRequestItem == null) |
988 | { | 989 | { |
989 | ILibraryService lib = m_Scene.RequestModuleInterface<ILibraryService>(); | 990 | ILibraryService lib = m_Scene.RequestModuleInterface<ILibraryService>(); |
991 | |||
990 | if (lib != null) | 992 | if (lib != null) |
991 | assetRequestItem = lib.LibraryRootFolder.FindItem(itemID); | 993 | assetRequestItem = lib.LibraryRootFolder.FindItem(itemID); |
994 | |||
992 | if (assetRequestItem == null) | 995 | if (assetRequestItem == null) |
993 | return false; | 996 | return false; |
994 | } | 997 | } |
@@ -1019,6 +1022,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
1019 | m_log.WarnFormat( | 1022 | m_log.WarnFormat( |
1020 | "[CLIENT]: {0} requested asset {1} from item {2} but this does not match item's asset {3}", | 1023 | "[CLIENT]: {0} requested asset {1} from item {2} but this does not match item's asset {3}", |
1021 | Name, requestID, itemID, assetRequestItem.AssetID); | 1024 | Name, requestID, itemID, assetRequestItem.AssetID); |
1025 | |||
1022 | return false; | 1026 | return false; |
1023 | } | 1027 | } |
1024 | 1028 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs index d570608..2ef4457 100644 --- a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs +++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs | |||
@@ -185,6 +185,7 @@ namespace OpenSim.Region.CoreModules.Framework.Library | |||
185 | archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName, false); | 185 | archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName, false); |
186 | archread.Execute(); | 186 | archread.Execute(); |
187 | } | 187 | } |
188 | |||
188 | foreach (InventoryNodeBase node in nodes) | 189 | foreach (InventoryNodeBase node in nodes) |
189 | FixPerms(node); | 190 | FixPerms(node); |
190 | } | 191 | } |
@@ -197,18 +198,23 @@ namespace OpenSim.Region.CoreModules.Framework.Library | |||
197 | archread.Close(); | 198 | archread.Close(); |
198 | } | 199 | } |
199 | } | 200 | } |
200 | |||
201 | } | 201 | } |
202 | 202 | ||
203 | private void FixPerms(InventoryNodeBase node) | 203 | private void FixPerms(InventoryNodeBase node) |
204 | { | 204 | { |
205 | m_log.DebugFormat("[LIBRARY MODULE]: Fixing perms for {0} {1}", node.Name, node.ID); | ||
206 | |||
205 | if (node is InventoryItemBase) | 207 | if (node is InventoryItemBase) |
206 | { | 208 | { |
207 | InventoryItemBase item = (InventoryItemBase)node; | 209 | InventoryItemBase item = (InventoryItemBase)node; |
210 | // item.BasePermissions = (uint)PermissionMask.All; | ||
208 | item.BasePermissions = 0x7FFFFFFF; | 211 | item.BasePermissions = 0x7FFFFFFF; |
209 | item.EveryOnePermissions = 0x7FFFFFFF; | 212 | item.EveryOnePermissions = 0x7FFFFFFF; |
210 | item.CurrentPermissions = 0x7FFFFFFF; | 213 | item.CurrentPermissions = 0x7FFFFFFF; |
211 | item.NextPermissions = 0x7FFFFFFF; | 214 | item.NextPermissions = 0x7FFFFFFF; |
215 | // item.EveryOnePermissions = (uint)PermissionMask.Copy; | ||
216 | // item.CurrentPermissions = (uint)PermissionMask.None; | ||
217 | // item.NextPermissions = (uint)PermissionMask.All; | ||
212 | } | 218 | } |
213 | } | 219 | } |
214 | 220 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 30421d4..afc1a4f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -724,7 +724,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
724 | newName = item.Name; | 724 | newName = item.Name; |
725 | } | 725 | } |
726 | 726 | ||
727 | if (remoteClient.AgentId == oldAgentID || (LibraryService != null && LibraryService.LibraryRootFolder != null && oldAgentID == LibraryService.LibraryRootFolder.Owner)) | 727 | if (remoteClient.AgentId == oldAgentID |
728 | || (LibraryService != null | ||
729 | && LibraryService.LibraryRootFolder != null | ||
730 | && oldAgentID == LibraryService.LibraryRootFolder.Owner)) | ||
728 | { | 731 | { |
729 | CreateNewInventoryItem( | 732 | CreateNewInventoryItem( |
730 | remoteClient, item.CreatorId, item.CreatorData, newFolderID, newName, item.Flags, callbackID, asset, (sbyte)item.InvType, | 733 | remoteClient, item.CreatorId, item.CreatorData, newFolderID, newName, item.Flags, callbackID, asset, (sbyte)item.InvType, |
diff --git a/OpenSim/Services/InventoryService/LibraryService.cs b/OpenSim/Services/InventoryService/LibraryService.cs index 383f311..b46add3 100644 --- a/OpenSim/Services/InventoryService/LibraryService.cs +++ b/OpenSim/Services/InventoryService/LibraryService.cs | |||
@@ -93,26 +93,6 @@ namespace OpenSim.Services.InventoryService | |||
93 | LoadLibraries(pLibrariesLocation); | 93 | LoadLibraries(pLibrariesLocation); |
94 | } | 94 | } |
95 | 95 | ||
96 | public InventoryItemBase CreateItem(UUID inventoryID, UUID assetID, string name, string description, | ||
97 | int assetType, int invType, UUID parentFolderID) | ||
98 | { | ||
99 | InventoryItemBase item = new InventoryItemBase(); | ||
100 | item.Owner = libOwner; | ||
101 | item.CreatorId = libOwner.ToString(); | ||
102 | item.ID = inventoryID; | ||
103 | item.AssetID = assetID; | ||
104 | item.Description = description; | ||
105 | item.Name = name; | ||
106 | item.AssetType = assetType; | ||
107 | item.InvType = invType; | ||
108 | item.Folder = parentFolderID; | ||
109 | item.BasePermissions = 0x7FFFFFFF; | ||
110 | item.EveryOnePermissions = 0x7FFFFFFF; | ||
111 | item.CurrentPermissions = 0x7FFFFFFF; | ||
112 | item.NextPermissions = 0x7FFFFFFF; | ||
113 | return item; | ||
114 | } | ||
115 | |||
116 | /// <summary> | 96 | /// <summary> |
117 | /// Use the asset set information at path to load assets | 97 | /// Use the asset set information at path to load assets |
118 | /// </summary> | 98 | /// </summary> |
@@ -193,22 +173,27 @@ namespace OpenSim.Services.InventoryService | |||
193 | item.Description = config.GetString("description", item.Name); | 173 | item.Description = config.GetString("description", item.Name); |
194 | item.InvType = config.GetInt("inventoryType", 0); | 174 | item.InvType = config.GetInt("inventoryType", 0); |
195 | item.AssetType = config.GetInt("assetType", item.InvType); | 175 | item.AssetType = config.GetInt("assetType", item.InvType); |
196 | item.CurrentPermissions = (uint)config.GetLong("currentPermissions", 0x7FFFFFFF); | 176 | item.CurrentPermissions = (uint)PermissionMask.All; |
197 | item.NextPermissions = (uint)config.GetLong("nextPermissions", 0x7FFFFFFF); | 177 | item.NextPermissions = (uint)PermissionMask.All; |
198 | item.EveryOnePermissions = (uint)config.GetLong("everyonePermissions", 0x7FFFFFFF); | 178 | item.EveryOnePermissions = (uint)PermissionMask.All; |
199 | item.BasePermissions = (uint)config.GetLong("basePermissions", 0x7FFFFFFF); | 179 | // item.EveryOnePermissions = (uint)PermissionMask.All - (uint)PermissionMask.Modify; |
200 | item.Flags = (uint)config.GetInt("flags", 0); | 180 | item.BasePermissions = (uint)PermissionMask.All; |
201 | 181 | ||
202 | if (libraryFolders.ContainsKey(item.Folder)) | 182 | if (libraryFolders.ContainsKey(item.Folder)) |
203 | { | 183 | { |
204 | InventoryFolderImpl parentFolder = libraryFolders[item.Folder]; | 184 | InventoryFolderImpl parentFolder = libraryFolders[item.Folder]; |
185 | |||
205 | try | 186 | try |
206 | { | 187 | { |
188 | // m_log.DebugFormat( | ||
189 | // "[LIBRARY INVENTORY]: Adding item {0} {1}, OwnerPermissions {2:X} to {3}", | ||
190 | // item.Name, item.ID, item.CurrentPermissions, item.Folder); | ||
191 | |||
207 | parentFolder.Items.Add(item.ID, item); | 192 | parentFolder.Items.Add(item.ID, item); |
208 | } | 193 | } |
209 | catch (Exception) | 194 | catch (Exception) |
210 | { | 195 | { |
211 | m_log.WarnFormat("[LIBRARY INVENTORY] Item {1} [{0}] not added, duplicate item", item.ID, item.Name); | 196 | m_log.WarnFormat("[LIBRARY INVENTORY]: Item {1} [{0}] not added, duplicate item", item.ID, item.Name); |
212 | } | 197 | } |
213 | } | 198 | } |
214 | else | 199 | else |