HG: If OutboundPermission is set to false, let's enforce stricter permissions by not allowing objects to be taken to inventory.
parent
b857353fc9
commit
dcfeb95e98
|
@ -62,6 +62,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
private string m_ThisGatekeeper;
|
private string m_ThisGatekeeper;
|
||||||
private bool m_RestrictInventoryAccessAbroad;
|
private bool m_RestrictInventoryAccessAbroad;
|
||||||
|
|
||||||
|
private bool m_bypassPermissions = true;
|
||||||
|
|
||||||
// private bool m_Initialized = false;
|
// private bool m_Initialized = false;
|
||||||
|
|
||||||
#region INonSharedRegionModule
|
#region INonSharedRegionModule
|
||||||
|
@ -100,6 +102,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!");
|
m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!");
|
||||||
|
|
||||||
|
m_bypassPermissions = !Util.GetConfigVarFromSections<bool>(source, "serverside_object_permissions",
|
||||||
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,6 +120,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem;
|
scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem;
|
||||||
scene.EventManager.OnTeleportStart += TeleportStart;
|
scene.EventManager.OnTeleportStart += TeleportStart;
|
||||||
scene.EventManager.OnTeleportFail += TeleportFail;
|
scene.EventManager.OnTeleportFail += TeleportFail;
|
||||||
|
|
||||||
|
// We're fgoing to enforce some stricter permissions if Outbound is false
|
||||||
|
scene.Permissions.OnTakeObject += CanTakeObject;
|
||||||
|
scene.Permissions.OnTakeCopyObject += CanTakeObject;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -417,5 +428,25 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Permissions
|
||||||
|
|
||||||
|
private bool CanTakeObject(UUID objectID, UUID stealer, Scene scene)
|
||||||
|
{
|
||||||
|
if (m_bypassPermissions) return true;
|
||||||
|
|
||||||
|
if (!m_OutboundPermission && !UserManagementModule.IsLocalGridUser(stealer))
|
||||||
|
{
|
||||||
|
SceneObjectGroup sog = null;
|
||||||
|
if (m_Scene.TryGetSceneObjectGroup(objectID, out sog) && sog.OwnerID == stealer)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2068,7 +2068,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
// If we don't have permission, stop right here
|
// If we don't have permission, stop right here
|
||||||
if (!permissionToTakeCopy)
|
if (!permissionToTakeCopy)
|
||||||
|
{
|
||||||
|
remoteClient.SendAlertMessage("You don't have permission to take the object");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
permissionToTake = true;
|
permissionToTake = true;
|
||||||
// Don't delete
|
// Don't delete
|
||||||
|
|
Loading…
Reference in New Issue