From 9671e43497c7bc09903d0ef34a45ee9ad1665927 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 21 Mar 2012 01:02:58 +0000 Subject: Replace "scene debug true false true" console command with "scene debug scripting true" or other parameters as appropriate. This is to allow individual switching of scene debug settings and to provide flexibiltiy for additional settings. --- OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 1adeb88..fc217b0 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -670,7 +670,13 @@ namespace OpenSim.Region.CoreModules.World.Estate Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); - Scene.SetSceneCoreDebug(disableScripts, disableCollisions, disablePhysics); + Scene.SetSceneCoreDebug( + new Dictionary() { + { "scripting", (!disableScripts).ToString() }, + { "collisions", (!disableCollisions).ToString() }, + { "physics", (!disablePhysics).ToString() } + } + ); } private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey) -- cgit v1.1 From 6146e7ef258b10888ad7464b72b75cca701e02c9 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 22 Mar 2012 12:57:12 -0700 Subject: Simple build permissions feature. NOTE: EXPERIMENTAL, DISABLED BY DEFAULT. Turns out that this can't be expressed by cascading Permission modules, so I did it as per this patch. --- .../Region/CoreModules/World/Land/LandObject.cs | 41 +++++++++++++++++++--- .../World/Permissions/PermissionsModule.cs | 34 ++++++++++++++++-- 2 files changed, 69 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index cc42f7f..640a024 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -169,6 +169,11 @@ namespace OpenSim.Region.CoreModules.World.Land return newLand; } + public ILandObject MemberwiseCopy() + { + return (ILandObject)this.MemberwiseClone(); + } + static overrideParcelMaxPrimCountDelegate overrideParcelMaxPrimCount; static overrideSimulatorMaxPrimCountDelegate overrideSimulatorMaxPrimCount; @@ -242,11 +247,13 @@ namespace OpenSim.Region.CoreModules.World.Land m_lastSeqId = seq_id; } + ILandObject landToSend = this; + m_scene.Permissions.LandObjectForClient(remote_client.AgentId, (ILandObject)this, out landToSend); remote_client.SendLandProperties(seq_id, - snap_selection, request_result, this, - (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, - GetParcelMaxPrimCount(), - GetSimulatorMaxPrimCount(), regionFlags); + snap_selection, request_result, landToSend, + (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, + GetParcelMaxPrimCount(), + GetSimulatorMaxPrimCount(), regionFlags); } public void UpdateLandProperties(LandUpdateArgs args, IClientAPI remote_client) @@ -475,6 +482,32 @@ namespace OpenSim.Region.CoreModules.World.Land return false; } + public bool IsAllowedInLand(UUID avatar) + { + ExpireAccessList(); + + if (m_scene.Permissions.IsAdministrator(avatar)) + return true; + + if (m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar)) + return true; + + if (avatar == LandData.OwnerID) + return true; + + if (LandData.ParcelAccessList.FindIndex( + delegate(LandAccessEntry e) + { + if (e.AgentID == avatar && e.Flags == AccessList.Access) + return true; + return false; + }) != -1) + { + return true; + } + return false; + } + public void SendLandUpdateToClient(IClientAPI remote_client) { SendLandProperties(0, false, 0, remote_client); diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 6018c39..f536a0f 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -94,7 +94,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions private bool m_RegionOwnerIsGod = false; private bool m_RegionManagerIsGod = false; private bool m_ParcelOwnerIsGod = false; - + + private bool m_SimpleBuildPermissions = false; + /// /// The set of users that are allowed to create scripts. This is only active if permissions are not being /// bypassed. This overrides normal permissions. @@ -139,7 +141,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true); m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false); m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true); - + + m_SimpleBuildPermissions = myConfig.GetBoolean("simple_build_permissions", false); + m_allowedScriptCreators = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators); m_allowedScriptEditors @@ -206,6 +210,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; + if (m_SimpleBuildPermissions) + m_scene.Permissions.OnSendLandProperties += GenerateLandProperties; + m_scene.AddCommand("Users", this, "bypass permissions", "bypass permissions ", "Bypass permission checks", @@ -824,6 +831,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions permission = true; } + if (m_SimpleBuildPermissions && + (parcel.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && parcel.IsAllowedInLand(user)) + permission = true; + return permission; } @@ -1966,5 +1977,24 @@ namespace OpenSim.Region.CoreModules.World.Permissions return false; } + + private void GenerateLandProperties(UUID userID, ILandObject realLand, out ILandObject landToSend) + { + landToSend = realLand; + if (m_bypassPermissions) return; + + if (m_SimpleBuildPermissions && + !m_scene.Permissions.IsAdministrator(userID) && + !realLand.LandData.OwnerID.Equals(userID) && + ((realLand.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && realLand.IsAllowedInLand(userID))) + { + ILandObject clone = realLand.MemberwiseCopy(); + LandData ldata = realLand.LandData.Copy(); + clone.LandData = ldata; + clone.LandData.Flags |= (uint)(ParcelFlags.AllowAPrimitiveEntry | ParcelFlags.AllowFly | ParcelFlags.AllowOtherScripts | ParcelFlags.CreateObjects); + landToSend = clone; + } + } + } } -- cgit v1.1 From 45b588cf008c514f461bf43c168dcdc9902b7bb9 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 22 Mar 2012 20:10:38 +0000 Subject: Revert "Simple build permissions feature. NOTE: EXPERIMENTAL, DISABLED BY DEFAULT. Turns out that this can't be expressed by cascading Permission modules, so I did it as per this patch." This reverts commit 6146e7ef258b10888ad7464b72b75cca701e02c9. --- .../Region/CoreModules/World/Land/LandObject.cs | 41 +++------------------- .../World/Permissions/PermissionsModule.cs | 34 ++---------------- 2 files changed, 6 insertions(+), 69 deletions(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 640a024..cc42f7f 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -169,11 +169,6 @@ namespace OpenSim.Region.CoreModules.World.Land return newLand; } - public ILandObject MemberwiseCopy() - { - return (ILandObject)this.MemberwiseClone(); - } - static overrideParcelMaxPrimCountDelegate overrideParcelMaxPrimCount; static overrideSimulatorMaxPrimCountDelegate overrideSimulatorMaxPrimCount; @@ -247,13 +242,11 @@ namespace OpenSim.Region.CoreModules.World.Land m_lastSeqId = seq_id; } - ILandObject landToSend = this; - m_scene.Permissions.LandObjectForClient(remote_client.AgentId, (ILandObject)this, out landToSend); remote_client.SendLandProperties(seq_id, - snap_selection, request_result, landToSend, - (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, - GetParcelMaxPrimCount(), - GetSimulatorMaxPrimCount(), regionFlags); + snap_selection, request_result, this, + (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, + GetParcelMaxPrimCount(), + GetSimulatorMaxPrimCount(), regionFlags); } public void UpdateLandProperties(LandUpdateArgs args, IClientAPI remote_client) @@ -482,32 +475,6 @@ namespace OpenSim.Region.CoreModules.World.Land return false; } - public bool IsAllowedInLand(UUID avatar) - { - ExpireAccessList(); - - if (m_scene.Permissions.IsAdministrator(avatar)) - return true; - - if (m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar)) - return true; - - if (avatar == LandData.OwnerID) - return true; - - if (LandData.ParcelAccessList.FindIndex( - delegate(LandAccessEntry e) - { - if (e.AgentID == avatar && e.Flags == AccessList.Access) - return true; - return false; - }) != -1) - { - return true; - } - return false; - } - public void SendLandUpdateToClient(IClientAPI remote_client) { SendLandProperties(0, false, 0, remote_client); diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index f536a0f..6018c39 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -94,9 +94,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions private bool m_RegionOwnerIsGod = false; private bool m_RegionManagerIsGod = false; private bool m_ParcelOwnerIsGod = false; - - private bool m_SimpleBuildPermissions = false; - + /// /// The set of users that are allowed to create scripts. This is only active if permissions are not being /// bypassed. This overrides normal permissions. @@ -141,9 +139,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true); m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false); m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true); - - m_SimpleBuildPermissions = myConfig.GetBoolean("simple_build_permissions", false); - + m_allowedScriptCreators = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators); m_allowedScriptEditors @@ -210,9 +206,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; - if (m_SimpleBuildPermissions) - m_scene.Permissions.OnSendLandProperties += GenerateLandProperties; - m_scene.AddCommand("Users", this, "bypass permissions", "bypass permissions ", "Bypass permission checks", @@ -831,10 +824,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions permission = true; } - if (m_SimpleBuildPermissions && - (parcel.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && parcel.IsAllowedInLand(user)) - permission = true; - return permission; } @@ -1977,24 +1966,5 @@ namespace OpenSim.Region.CoreModules.World.Permissions return false; } - - private void GenerateLandProperties(UUID userID, ILandObject realLand, out ILandObject landToSend) - { - landToSend = realLand; - if (m_bypassPermissions) return; - - if (m_SimpleBuildPermissions && - !m_scene.Permissions.IsAdministrator(userID) && - !realLand.LandData.OwnerID.Equals(userID) && - ((realLand.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && realLand.IsAllowedInLand(userID))) - { - ILandObject clone = realLand.MemberwiseCopy(); - LandData ldata = realLand.LandData.Copy(); - clone.LandData = ldata; - clone.LandData.Flags |= (uint)(ParcelFlags.AllowAPrimitiveEntry | ParcelFlags.AllowFly | ParcelFlags.AllowOtherScripts | ParcelFlags.CreateObjects); - landToSend = clone; - } - } - } } -- cgit v1.1 From b5d0bc24887e177e7b6e982789bfd86f27b84cf0 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 22 Mar 2012 20:25:20 +0000 Subject: Rework Diva's patch to simplify it --- .../Region/CoreModules/World/Land/LandObject.cs | 33 +++++++++++++--------- .../World/Permissions/PermissionsModule.cs | 12 ++++++-- 2 files changed, 29 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index cc42f7f..27f0052 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -448,8 +448,6 @@ namespace OpenSim.Region.CoreModules.World.Land public bool IsRestrictedFromLand(UUID avatar) { - ExpireAccessList(); - if (m_scene.Permissions.IsAdministrator(avatar)) return false; @@ -459,20 +457,27 @@ namespace OpenSim.Region.CoreModules.World.Land if (avatar == LandData.OwnerID) return false; - if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) > 0) + if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) == 0) + return true; + + return (!IsInLandAccessList(avatar)); + } + + public bool IsInLandAccessList(UUID avatar) + { + ExpireAccessList(); + + if (LandData.ParcelAccessList.FindIndex( + delegate(LandAccessEntry e) + { + if (e.AgentID == avatar && e.Flags == AccessList.Access) + return true; + return false; + }) == -1) { - if (LandData.ParcelAccessList.FindIndex( - delegate(LandAccessEntry e) - { - if (e.AgentID == avatar && e.Flags == AccessList.Access) - return true; - return false; - }) == -1) - { - return true; - } + return false; } - return false; + return true; } public void SendLandUpdateToClient(IClientAPI remote_client) diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 6018c39..ac03747 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -94,7 +94,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions private bool m_RegionOwnerIsGod = false; private bool m_RegionManagerIsGod = false; private bool m_ParcelOwnerIsGod = false; - + + private bool m_SimpleBuildPermissions = false; + /// /// The set of users that are allowed to create scripts. This is only active if permissions are not being /// bypassed. This overrides normal permissions. @@ -139,7 +141,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true); m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false); m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true); - + + m_SimpleBuildPermissions = myConfig.GetBoolean("simple_build_permissions", false); + m_allowedScriptCreators = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators); m_allowedScriptEditors @@ -824,6 +828,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions permission = true; } + if (m_SimpleBuildPermissions && + (parcel.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && parcel.IsInLandAccessList(user)) + permission = true; + return permission; } -- cgit v1.1