aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
diff options
context:
space:
mode:
authorDiva Canto2012-03-22 12:57:12 -0700
committerDiva Canto2012-03-22 12:57:12 -0700
commit6146e7ef258b10888ad7464b72b75cca701e02c9 (patch)
tree6603496c5758359b808f8719a641977660aca0fb /OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.zip
opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.gz
opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.bz2
opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.xz
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.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs34
1 files changed, 32 insertions, 2 deletions
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
94 private bool m_RegionOwnerIsGod = false; 94 private bool m_RegionOwnerIsGod = false;
95 private bool m_RegionManagerIsGod = false; 95 private bool m_RegionManagerIsGod = false;
96 private bool m_ParcelOwnerIsGod = false; 96 private bool m_ParcelOwnerIsGod = false;
97 97
98 private bool m_SimpleBuildPermissions = false;
99
98 /// <value> 100 /// <value>
99 /// The set of users that are allowed to create scripts. This is only active if permissions are not being 101 /// The set of users that are allowed to create scripts. This is only active if permissions are not being
100 /// bypassed. This overrides normal permissions. 102 /// bypassed. This overrides normal permissions.
@@ -139,7 +141,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
139 m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true); 141 m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true);
140 m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false); 142 m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false);
141 m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true); 143 m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true);
142 144
145 m_SimpleBuildPermissions = myConfig.GetBoolean("simple_build_permissions", false);
146
143 m_allowedScriptCreators 147 m_allowedScriptCreators
144 = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators); 148 = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators);
145 m_allowedScriptEditors 149 m_allowedScriptEditors
@@ -206,6 +210,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
206 m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; 210 m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia;
207 m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; 211 m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia;
208 212
213 if (m_SimpleBuildPermissions)
214 m_scene.Permissions.OnSendLandProperties += GenerateLandProperties;
215
209 m_scene.AddCommand("Users", this, "bypass permissions", 216 m_scene.AddCommand("Users", this, "bypass permissions",
210 "bypass permissions <true / false>", 217 "bypass permissions <true / false>",
211 "Bypass permission checks", 218 "Bypass permission checks",
@@ -824,6 +831,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions
824 permission = true; 831 permission = true;
825 } 832 }
826 833
834 if (m_SimpleBuildPermissions &&
835 (parcel.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && parcel.IsAllowedInLand(user))
836 permission = true;
837
827 return permission; 838 return permission;
828 } 839 }
829 840
@@ -1966,5 +1977,24 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1966 1977
1967 return false; 1978 return false;
1968 } 1979 }
1980
1981 private void GenerateLandProperties(UUID userID, ILandObject realLand, out ILandObject landToSend)
1982 {
1983 landToSend = realLand;
1984 if (m_bypassPermissions) return;
1985
1986 if (m_SimpleBuildPermissions &&
1987 !m_scene.Permissions.IsAdministrator(userID) &&
1988 !realLand.LandData.OwnerID.Equals(userID) &&
1989 ((realLand.LandData.Flags & (uint)ParcelFlags.UseAccessList) == 0 && realLand.IsAllowedInLand(userID)))
1990 {
1991 ILandObject clone = realLand.MemberwiseCopy();
1992 LandData ldata = realLand.LandData.Copy();
1993 clone.LandData = ldata;
1994 clone.LandData.Flags |= (uint)(ParcelFlags.AllowAPrimitiveEntry | ParcelFlags.AllowFly | ParcelFlags.AllowOtherScripts | ParcelFlags.CreateObjects);
1995 landToSend = clone;
1996 }
1997 }
1998
1969 } 1999 }
1970} 2000}