Modifications to previous IAR commits to bring them more inline with existing OpenSim code conventions. Also include new IAR save switch in console help print out.

mb-throttle-test
AliciaRaven 2014-09-13 04:25:31 +01:00 committed by Justin Clark-Casey (justincc)
parent 5bc3bbbcf3
commit 1e22091193
4 changed files with 24 additions and 21 deletions

View File

@ -57,7 +57,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
public bool SaveAssets { get; set; } public bool SaveAssets { get; set; }
/// <summary> /// <summary>
/// Determine whether this archive will filter content based on inventory permissions. Default is false /// Determines which items will be included in the archive, according to their permissions.
/// Default is null, meaning no permission checks.
/// </summary> /// </summary>
public string FilterContent { get; set; } public string FilterContent { get; set; }
@ -139,7 +140,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
m_assetGatherer = new UuidGatherer(m_scene.AssetService); m_assetGatherer = new UuidGatherer(m_scene.AssetService);
SaveAssets = true; SaveAssets = true;
FilterContent = string.Empty; FilterContent = null;
} }
protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids, bool timedOut) protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids, bool timedOut)
@ -287,7 +288,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
/// <returns>Whether the user is allowed to export the object to an IAR</returns> /// <returns>Whether the user is allowed to export the object to an IAR</returns>
private bool CanUserArchiveObject(UUID UserID, InventoryItemBase InvItem) private bool CanUserArchiveObject(UUID UserID, InventoryItemBase InvItem)
{ {
if (FilterContent == string.Empty) if (FilterContent == null)
return true;// Default To Allow Export return true;// Default To Allow Export
bool permitted = true; bool permitted = true;
@ -317,10 +318,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
SaveAssets = false; SaveAssets = false;
// Set Permission filter if flag is set // Set Permission filter if flag is set
if (options.ContainsKey("perm")) if (options.ContainsKey("checkPermissions"))
{ {
Object temp; Object temp;
if (options.TryGetValue("perm", out temp)) if (options.TryGetValue("checkPermissions", out temp))
FilterContent = temp.ToString().ToUpper(); FilterContent = temp.ToString().ToUpper();
} }

View File

@ -141,7 +141,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
+ "-e|--exclude=<name/uuid> don't save the inventory item in archive" + Environment.NewLine + "-e|--exclude=<name/uuid> don't save the inventory item in archive" + Environment.NewLine
+ "-f|--excludefolder=<folder/uuid> don't save contents of the folder in archive" + Environment.NewLine + "-f|--excludefolder=<folder/uuid> don't save contents of the folder in archive" + Environment.NewLine
+ "-v|--verbose extra debug messages.\n" + "-v|--verbose extra debug messages.\n"
+ "--noassets stops assets being saved to the IAR.", + "--noassets stops assets being saved to the IAR."
+ "--perm=<permissions> stops items with insufficient permissions from being saved to the IAR.\n"
+ " <permissions> can contain one or more of these characters: \"C\" = Copy, \"T\" = Transfer, \"M\" = Modify.\n",
HandleSaveInvConsoleCommand); HandleSaveInvConsoleCommand);
m_aScene = scene; m_aScene = scene;
@ -455,7 +457,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
options["excludefolders"] = new List<String>(); options["excludefolders"] = new List<String>();
((List<String>)options["excludefolders"]).Add(v); ((List<String>)options["excludefolders"]).Add(v);
}); });
ops.Add("perm=", delegate(string v) { options["perm"] = v; }); ops.Add("perm=", delegate(string v) { options["checkPermissions"] = v; });
List<string> mainParams = ops.Parse(cmdparams); List<string> mainParams = ops.Parse(cmdparams);

View File

@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
/// Determines which objects will be included in the archive, according to their permissions. /// Determines which objects will be included in the archive, according to their permissions.
/// Default is null, meaning no permission checks. /// Default is null, meaning no permission checks.
/// </summary> /// </summary>
public string CheckPermissions { get; set; } public string FilterContent { get; set; }
protected Scene m_rootScene; protected Scene m_rootScene;
protected Stream m_saveStream; protected Stream m_saveStream;
@ -131,7 +131,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
MultiRegionFormat = false; MultiRegionFormat = false;
SaveAssets = true; SaveAssets = true;
CheckPermissions = null; FilterContent = null;
} }
/// <summary> /// <summary>
@ -150,7 +150,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
Object temp; Object temp;
if (options.TryGetValue("checkPermissions", out temp)) if (options.TryGetValue("checkPermissions", out temp))
CheckPermissions = (string)temp; FilterContent = (string)temp;
// Find the regions to archive // Find the regions to archive
@ -238,7 +238,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
if (!sceneObject.IsDeleted && !sceneObject.IsAttachment) if (!sceneObject.IsDeleted && !sceneObject.IsAttachment)
{ {
if (!CanUserArchiveObject(scene.RegionInfo.EstateSettings.EstateOwner, sceneObject, CheckPermissions, permissionsModule)) if (!CanUserArchiveObject(scene.RegionInfo.EstateSettings.EstateOwner, sceneObject, FilterContent, permissionsModule))
{ {
// The user isn't allowed to copy/transfer this object, so it will not be included in the OAR. // The user isn't allowed to copy/transfer this object, so it will not be included in the OAR.
++numObjectsSkippedPermissions; ++numObjectsSkippedPermissions;
@ -296,12 +296,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
/// </summary> /// </summary>
/// <param name="user">The user</param> /// <param name="user">The user</param>
/// <param name="objGroup">The object group</param> /// <param name="objGroup">The object group</param>
/// <param name="checkPermissions">Which permissions to check: "C" = Copy, "T" = Transfer</param> /// <param name="filterContent">Which permissions to check: "C" = Copy, "T" = Transfer</param>
/// <param name="permissionsModule">The scene's permissions module</param> /// <param name="permissionsModule">The scene's permissions module</param>
/// <returns>Whether the user is allowed to export the object to an OAR</returns> /// <returns>Whether the user is allowed to export the object to an OAR</returns>
private bool CanUserArchiveObject(UUID user, SceneObjectGroup objGroup, string checkPermissions, IPermissionsModule permissionsModule) private bool CanUserArchiveObject(UUID user, SceneObjectGroup objGroup, string filterContent, IPermissionsModule permissionsModule)
{ {
if (checkPermissions == null) if (filterContent == null)
return true; return true;
if (permissionsModule == null) if (permissionsModule == null)
@ -343,9 +343,9 @@ namespace OpenSim.Region.CoreModules.World.Archiver
canTransfer |= (obj.EveryoneMask & (uint)PermissionMask.Copy) != 0; canTransfer |= (obj.EveryoneMask & (uint)PermissionMask.Copy) != 0;
bool partPermitted = true; bool partPermitted = true;
if (checkPermissions.Contains("C") && !canCopy) if (filterContent.Contains("C") && !canCopy)
partPermitted = false; partPermitted = false;
if (checkPermissions.Contains("T") && !canTransfer) if (filterContent.Contains("T") && !canTransfer)
partPermitted = false; partPermitted = false;
// If the user is the Creator of the object then it can always be included in the OAR // If the user is the Creator of the object then it can always be included in the OAR

View File

@ -42,10 +42,10 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="invPath">The inventory path saved</param> /// <param name="invPath">The inventory path saved</param>
/// <param name="savePath">The stream to which the archive was saved</param> /// <param name="savePath">The stream to which the archive was saved</param>
/// <param name="reportedException">Contains the exception generated if the save did not succeed</param> /// <param name="reportedException">Contains the exception generated if the save did not succeed</param>
/// <param name="SaveCount">Number of inventory items saved to archive</param> /// <param name="saveCount">Number of inventory items saved to archive</param>
/// <param name="FilterCount">Number of inventory items skipped due to perm filter option</param> /// <param name="filterCount">Number of inventory items skipped due to perm filter option</param>
public delegate void InventoryArchiveSaved( public delegate void InventoryArchiveSaved(
UUID id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, Exception reportedException, int SaveCount, int FilterCount); UUID id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, Exception reportedException, int saveCount, int filterCount);
/// <summary> /// <summary>
/// Used for the OnInventoryArchiveLoaded event. /// Used for the OnInventoryArchiveLoaded event.
@ -56,9 +56,9 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="invPath">The inventory path loaded</param> /// <param name="invPath">The inventory path loaded</param>
/// <param name="savePath">The stream from which the archive was loaded</param> /// <param name="savePath">The stream from which the archive was loaded</param>
/// <param name="reportedException">Contains the exception generated if the load did not succeed</param> /// <param name="reportedException">Contains the exception generated if the load did not succeed</param>
/// <param name="LoadCount">Number of inventory items loaded from archive</param> /// <param name="loadCount">Number of inventory items loaded from archive</param>
public delegate void InventoryArchiveLoaded( public delegate void InventoryArchiveLoaded(
UUID id, bool succeeded, UserAccount userInfo, string invPath, Stream loadStream, Exception reportedException, int LoadCount); UUID id, bool succeeded, UserAccount userInfo, string invPath, Stream loadStream, Exception reportedException, int loadCount);
public interface IInventoryArchiverModule public interface IInventoryArchiverModule