aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
authorMelanie Thielker2008-08-15 13:13:39 +0000
committerMelanie Thielker2008-08-15 13:13:39 +0000
commitdfc553d0a4c25d6c1f491b228e89402c0415acda (patch)
tree63653f47cc17365ec828f2e5507b7fd75c0388be /OpenSim/Region/Environment
parentMinor formatting cleanup. (diff)
downloadopensim-SC_OLD-dfc553d0a4c25d6c1f491b228e89402c0415acda.zip
opensim-SC_OLD-dfc553d0a4c25d6c1f491b228e89402c0415acda.tar.gz
opensim-SC_OLD-dfc553d0a4c25d6c1f491b228e89402c0415acda.tar.bz2
opensim-SC_OLD-dfc553d0a4c25d6c1f491b228e89402c0415acda.tar.xz
Fix up master avatar handling for estate owners. Introduces a new
hierarchical rights structure. MasterAvatar: Owner of the region server (may be null), net gods (users with GodLevel 200), Estate owner (from database). Look at Opensim.ini.example to enable net gods. Estate owner will default to master avatar.
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs2
-rw-r--r--OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs9
-rw-r--r--OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs15
-rw-r--r--OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs13
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs17
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs10
7 files changed, 57 insertions, 11 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
index 2b1a4ed..e6597c3 100644
--- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs
@@ -137,6 +137,8 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
137 // Try to retain the original creator/owner/lastowner if their uuid is present on this grid 137 // Try to retain the original creator/owner/lastowner if their uuid is present on this grid
138 // otherwise, use the master avatar uuid instead 138 // otherwise, use the master avatar uuid instead
139 LLUUID masterAvatarId = m_scene.RegionInfo.MasterAvatarAssignedUUID; 139 LLUUID masterAvatarId = m_scene.RegionInfo.MasterAvatarAssignedUUID;
140 if (m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
141 masterAvatarId = m_scene.RegionInfo.EstateSettings.EstateOwner;
140 foreach (SceneObjectPart part in sceneObject.Children.Values) 142 foreach (SceneObjectPart part in sceneObject.Children.Values)
141 { 143 {
142 if (!resolveUserUuid(part.CreatorID)) 144 if (!resolveUserUuid(part.CreatorID))
diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
index d22aac6..1e622be 100644
--- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
@@ -212,6 +212,8 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
212 { 212 {
213 // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. 213 // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc.
214 214
215 if (user == m_scene.RegionInfo.EstateSettings.EstateOwner)
216 return; // never process EO
215 if (user == m_scene.RegionInfo.MasterAvatarAssignedUUID) 217 if (user == m_scene.RegionInfo.MasterAvatarAssignedUUID)
216 return; // never process owner 218 return; // never process owner
217 219
@@ -557,7 +559,10 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
557 559
558 args.regionFlags = GetRegionFlags(); 560 args.regionFlags = GetRegionFlags();
559 args.regionName = m_scene.RegionInfo.RegionName; 561 args.regionName = m_scene.RegionInfo.RegionName;
560 args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; 562 if (m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
563 args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner;
564 else
565 args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID;
561 args.terrainBase0 = LLUUID.Zero; 566 args.terrainBase0 = LLUUID.Zero;
562 args.terrainBase1 = LLUUID.Zero; 567 args.terrainBase1 = LLUUID.Zero;
563 args.terrainBase2 = LLUUID.Zero; 568 args.terrainBase2 = LLUUID.Zero;
@@ -811,6 +816,8 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
811 { 816 {
812 if (avatarID == m_scene.RegionInfo.MasterAvatarAssignedUUID) 817 if (avatarID == m_scene.RegionInfo.MasterAvatarAssignedUUID)
813 return true; 818 return true;
819 if (avatarID == m_scene.RegionInfo.EstateSettings.EstateOwner)
820 return true;
814 821
815 List<LLUUID> ems = new List<LLUUID>(m_scene.RegionInfo.EstateSettings.EstateManagers); 822 List<LLUUID> ems = new List<LLUUID>(m_scene.RegionInfo.EstateSettings.EstateManagers);
816 if (ems.Contains(avatarID)) 823 if (ems.Contains(avatarID))
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
index ca03035..d5cb0eb 100644
--- a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
@@ -162,7 +162,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
162 ILandObject fullSimParcel = new LandObject(LLUUID.Zero, false, m_scene); 162 ILandObject fullSimParcel = new LandObject(LLUUID.Zero, false, m_scene);
163 163
164 fullSimParcel.setLandBitmap(fullSimParcel.getSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); 164 fullSimParcel.setLandBitmap(fullSimParcel.getSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
165 fullSimParcel.landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; 165 if(m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
166 fullSimParcel.landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
167 else
168 fullSimParcel.landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID;
166 fullSimParcel.landData.ClaimDate = Util.UnixTimeSinceEpoch(); 169 fullSimParcel.landData.ClaimDate = Util.UnixTimeSinceEpoch();
167 AddLandObject(fullSimParcel); 170 AddLandObject(fullSimParcel);
168 } 171 }
@@ -931,7 +934,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
931 { 934 {
932 if (m_scene.ExternalChecks.ExternalChecksCanAbandonParcel(remote_client.AgentId, landList[local_id])) 935 if (m_scene.ExternalChecks.ExternalChecksCanAbandonParcel(remote_client.AgentId, landList[local_id]))
933 { 936 {
934 landList[local_id].landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; 937 if(m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
938 landList[local_id].landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
939 else
940 landList[local_id].landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID;
935 m_scene.Broadcast(SendParcelOverlay); 941 m_scene.Broadcast(SendParcelOverlay);
936 landList[local_id].sendLandUpdateToClient(remote_client); 942 landList[local_id].sendLandUpdateToClient(remote_client);
937 } 943 }
@@ -945,7 +951,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
945 { 951 {
946 if (m_scene.ExternalChecks.ExternalChecksCanReclaimParcel(remote_client.AgentId, landList[local_id])) 952 if (m_scene.ExternalChecks.ExternalChecksCanReclaimParcel(remote_client.AgentId, landList[local_id]))
947 { 953 {
948 landList[local_id].landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; 954 if(m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
955 landList[local_id].landData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
956 else
957 landList[local_id].landData.OwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID;
949 landList[local_id].landData.ClaimDate = Util.UnixTimeSinceEpoch(); 958 landList[local_id].landData.ClaimDate = Util.UnixTimeSinceEpoch();
950 m_scene.Broadcast(SendParcelOverlay); 959 m_scene.Broadcast(SendParcelOverlay);
951 landList[local_id].sendLandUpdateToClient(remote_client); 960 landList[local_id].sendLandUpdateToClient(remote_client);
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
index 0fbd4fb..6f72767 100644
--- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
@@ -32,6 +32,7 @@ using System.Collections;
32using System.Collections.Generic; 32using System.Collections.Generic;
33using System.Reflection; 33using System.Reflection;
34using log4net; 34using log4net;
35using OpenSim.Framework;
35using OpenSim.Region.Environment.Interfaces; 36using OpenSim.Region.Environment.Interfaces;
36using OpenSim.Region.Environment.Modules.Framework; 37using OpenSim.Region.Environment.Modules.Framework;
37using OpenSim.Region.Environment.Modules.Framework.InterfaceCommander; 38using OpenSim.Region.Environment.Modules.Framework.InterfaceCommander;
@@ -63,6 +64,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
63 private bool m_bypassPermissions = false; 64 private bool m_bypassPermissions = false;
64 private bool m_bypassPermissionsValue = true; 65 private bool m_bypassPermissionsValue = true;
65 private bool m_debugPermissions = false; 66 private bool m_debugPermissions = false;
67 private bool m_allowGridGods = false;
66 68
67 #endregion 69 #endregion
68 70
@@ -136,6 +138,8 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
136 if (!modules.Contains("DefaultPermissionsModule")) 138 if (!modules.Contains("DefaultPermissionsModule"))
137 return; 139 return;
138 140
141 m_allowGridGods = myConfig.GetBoolean("allow_grid_gods", false);
142
139 m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", true); 143 m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", true);
140 144
141 if (m_bypassPermissions) 145 if (m_bypassPermissions)
@@ -231,11 +235,6 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
231 235
232 protected bool IsAdministrator(LLUUID user) 236 protected bool IsAdministrator(LLUUID user)
233 { 237 {
234// m_log.DebugFormat(
235// "[PERMISSIONS]: Is adminstrator called for {0} where region master avatar is {1}",
236// user, m_scene.RegionInfo.MasterAvatarAssignedUUID);
237
238 // If there is no master avatar, return false
239 if (m_scene.RegionInfo.MasterAvatarAssignedUUID != LLUUID.Zero) 238 if (m_scene.RegionInfo.MasterAvatarAssignedUUID != LLUUID.Zero)
240 { 239 {
241 if (m_scene.RegionInfo.MasterAvatarAssignedUUID == user) 240 if (m_scene.RegionInfo.MasterAvatarAssignedUUID == user)
@@ -246,7 +245,9 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
246 if (m_scene.RegionInfo.EstateSettings.EstateOwner == user) 245 if (m_scene.RegionInfo.EstateSettings.EstateOwner == user)
247 return true; 246 return true;
248 } 247 }
249 248 UserProfileData userProfile = m_scene.CommsManager.UserService.GetUserProfile(user);
249 if((userProfile.GodLevel) >= 200 && m_allowGridGods)
250 return true;
250 return false; 251 return false;
251 } 252 }
252 253
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index ca77f2b..3f62610 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -116,6 +116,8 @@ namespace OpenSim.Region.Environment.Scenes
116 { 116 {
117 userlevel = 1; 117 userlevel = 1;
118 } 118 }
119 // TODO: remove this cruft once MasterAvatar is fully deprecated
120 //
119 if (m_regInfo.MasterAvatarAssignedUUID == AgentID) 121 if (m_regInfo.MasterAvatarAssignedUUID == AgentID)
120 { 122 {
121 userlevel = 2; 123 userlevel = 2;
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 22251e9..00d8298 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -3777,5 +3777,22 @@ namespace OpenSim.Region.Environment.Scenes
3777 //Console.WriteLine("Terrain packet unacked, resending patch: " + patchX + " , " + patchY); 3777 //Console.WriteLine("Terrain packet unacked, resending patch: " + patchX + " , " + patchY);
3778 client.SendLayerData(patchX, patchY, Heightmap.GetFloatsSerialised()); 3778 client.SendLayerData(patchX, patchY, Heightmap.GetFloatsSerialised());
3779 } 3779 }
3780
3781// public bool IsAdministrator(LLUUID user)
3782// {
3783// if(RegionInfo.MasterAvatarAssignedUUID != LLUUID.Zero)
3784// {
3785// if(RegionInfo.MasterAvatarAssignedUUID == user)
3786// return true;
3787// }
3788//
3789// UserProfileData userProfile =
3790// CommsManager.UserService.GetUserProfile(user);
3791//
3792// if(userProfile.GodLevel >= 200)
3793// return true;
3794//
3795// return false;
3796// }
3780 } 3797 }
3781} 3798}
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index d8d534e..b4cf70a 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -2017,7 +2017,15 @@ namespace OpenSim.Region.Environment.Scenes
2017 { 2017 {
2018 if (godStatus) 2018 if (godStatus)
2019 { 2019 {
2020 m_godlevel = 250; 2020 // TODO: remove this cruft once the master avatar is fully
2021 // deprecated. For now, assign god level 200 to anyone
2022 // who is granted god powers, but has no god level set.
2023 //
2024 UserProfileData userProfile = m_scene.CommsManager.UserService.GetUserProfile(agentID);
2025 if(userProfile.GodLevel > 0)
2026 m_godlevel = userProfile.GodLevel;
2027 else
2028 m_godlevel = 200;
2021 } 2029 }
2022 else 2030 else
2023 { 2031 {