mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 06:06:06 +08:00
Export permission, part two. Setting export perms for textures and clothing works. Setting perms for prims also works but they don't propagate correctly yet.
NOT FOR PRODUCTIN USE. Your database will need to be updated before you can use this!
This commit is contained in:
@@ -470,8 +470,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
private uint _category;
|
||||
private Int32 _creationDate;
|
||||
private uint _parentID = 0;
|
||||
private uint _baseMask = (uint)PermissionMask.All;
|
||||
private uint _ownerMask = (uint)PermissionMask.All;
|
||||
private uint _baseMask = (uint)(PermissionMask.All | PermissionMask.Export);
|
||||
private uint _ownerMask = (uint)(PermissionMask.All | PermissionMask.Export);
|
||||
private uint _groupMask = (uint)PermissionMask.None;
|
||||
private uint _everyoneMask = (uint)PermissionMask.None;
|
||||
private uint _nextOwnerMask = (uint)(PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer);
|
||||
@@ -4319,10 +4319,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public void TrimPermissions()
|
||||
{
|
||||
BaseMask &= (uint)PermissionMask.All;
|
||||
OwnerMask &= (uint)PermissionMask.All;
|
||||
BaseMask &= (uint)(PermissionMask.All | PermissionMask.Export);
|
||||
OwnerMask &= (uint)(PermissionMask.All | PermissionMask.Export);
|
||||
GroupMask &= (uint)PermissionMask.All;
|
||||
EveryoneMask &= (uint)PermissionMask.All;
|
||||
EveryoneMask &= (uint)(PermissionMask.All | PermissionMask.Export);
|
||||
NextOwnerMask &= (uint)PermissionMask.All;
|
||||
}
|
||||
|
||||
@@ -4425,10 +4425,22 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
baseMask;
|
||||
break;
|
||||
case 8:
|
||||
// Trying to set export permissions - extra checks
|
||||
if (set && (mask & (uint)PermissionMask.Export) != 0)
|
||||
{
|
||||
if ((OwnerMask & (uint)PermissionMask.Export) == 0 || (BaseMask & (uint)PermissionMask.Export) == 0 || (NextOwnerMask & (uint)PermissionMask.All) != (uint)PermissionMask.All)
|
||||
mask &= ~(uint)PermissionMask.Export;
|
||||
}
|
||||
EveryoneMask = ApplyMask(EveryoneMask, set, mask) &
|
||||
baseMask;
|
||||
break;
|
||||
case 16:
|
||||
// Force full perm if export
|
||||
if ((EveryoneMask & (uint)PermissionMask.Export) != 0)
|
||||
{
|
||||
NextOwnerMask = (uint)PermissionMask.All;
|
||||
break;
|
||||
}
|
||||
NextOwnerMask = ApplyMask(NextOwnerMask, set, mask) &
|
||||
baseMask;
|
||||
// Prevent the client from creating no copy, no transfer
|
||||
@@ -5225,9 +5237,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public void ApplyNextOwnerPermissions()
|
||||
{
|
||||
BaseMask &= NextOwnerMask;
|
||||
// Export needs to be preserved in the base and everyone
|
||||
// mask, but removed in the owner mask as a next owner
|
||||
// can never change the export status
|
||||
BaseMask &= NextOwnerMask | (uint)PermissionMask.Export;
|
||||
OwnerMask &= NextOwnerMask;
|
||||
EveryoneMask &= NextOwnerMask;
|
||||
EveryoneMask &= NextOwnerMask | (uint)PermissionMask.Export;
|
||||
|
||||
Inventory.ApplyNextOwnerPermissions();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user