mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
a few changes to permissions folding... we are testing. at this point only use master for TESTING also
This commit is contained in:
@@ -1340,33 +1340,38 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public uint MaskEffectivePermissions()
|
||||
{
|
||||
// used to propagate permissions restrictions outwards
|
||||
// Modify does not propagate outwards.
|
||||
uint mask=0x7fffffff;
|
||||
|
||||
|
||||
foreach (TaskInventoryItem item in m_items.Values)
|
||||
{
|
||||
if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0)
|
||||
mask &= ~((uint)PermissionMask.Copy >> 13);
|
||||
mask &= ~((uint)PermissionMask.FoldedCopy);
|
||||
if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Transfer) == 0)
|
||||
mask &= ~((uint)PermissionMask.Transfer >> 13);
|
||||
if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Modify) == 0)
|
||||
mask &= ~((uint)PermissionMask.Modify >> 13);
|
||||
mask &= ~((uint)PermissionMask.FoldedTransfer);
|
||||
if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Export) == 0)
|
||||
mask &= ~((uint)PermissionMask.FoldedExport);
|
||||
|
||||
// this breaks some SL legal use cases
|
||||
// there should be no folding from task inventory
|
||||
/*
|
||||
if (item.InvType == (int)InventoryType.Object)
|
||||
{
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0)
|
||||
mask &= ~((uint)PermissionMask.Copy >> 13);
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0)
|
||||
mask &= ~((uint)PermissionMask.Transfer >> 13);
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0)
|
||||
mask &= ~((uint)PermissionMask.Modify >> 13);
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0)
|
||||
mask &= ~((uint)PermissionMask.FoldedCopy);
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0)
|
||||
mask &= ~((uint)PermissionMask.FoldedTransfer);
|
||||
if ((item.CurrentPermissions & (uint)PermissionMask.FoldedExport) == 0)
|
||||
mask &= ~((uint)PermissionMask.FoldedExport);
|
||||
}
|
||||
|
||||
*/
|
||||
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
||||
mask &= ~(uint)PermissionMask.Copy;
|
||||
if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0)
|
||||
mask &= ~(uint)PermissionMask.Transfer;
|
||||
if ((item.CurrentPermissions & (uint)PermissionMask.Modify) == 0)
|
||||
mask &= ~(uint)PermissionMask.Modify;
|
||||
if ((item.CurrentPermissions & (uint)PermissionMask.Export) == 0)
|
||||
mask &= ~((uint)PermissionMask.Export);
|
||||
}
|
||||
return mask;
|
||||
}
|
||||
@@ -1375,19 +1380,24 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
foreach (TaskInventoryItem item in m_items.Values)
|
||||
{
|
||||
if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0)
|
||||
|
||||
// this breaks legal SL use cases
|
||||
// there should be no unfold into task inventory
|
||||
/*
|
||||
if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0)
|
||||
{
|
||||
// m_log.DebugFormat (
|
||||
// "[SCENE OBJECT PART INVENTORY]: Applying next permissions {0} to {1} in {2} with current {3}, base {4}, everyone {5}",
|
||||
// item.NextPermissions, item.Name, m_part.Name, item.CurrentPermissions, item.BasePermissions, item.EveryonePermissions);
|
||||
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0)
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0)
|
||||
item.CurrentPermissions &= ~(uint)PermissionMask.Copy;
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0)
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0)
|
||||
item.CurrentPermissions &= ~(uint)PermissionMask.Transfer;
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0)
|
||||
if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedModify)) == 0)
|
||||
item.CurrentPermissions &= ~(uint)PermissionMask.Modify;
|
||||
}
|
||||
*/
|
||||
item.CurrentPermissions &= item.NextPermissions;
|
||||
item.BasePermissions &= item.NextPermissions;
|
||||
item.EveryonePermissions &= item.NextPermissions;
|
||||
|
||||
Reference in New Issue
Block a user