aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
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
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')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs7
-rw-r--r--OpenSim/Region/ClientStack/RegionApplicationBase.cs5
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs13
-rw-r--r--OpenSim/Region/DataSnapshot/EstateSnapshot.cs14
-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
11 files changed, 81 insertions, 26 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 74f4d44..212567f 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -2693,7 +2693,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2693 2693
2694 //Sending Estate Settings 2694 //Sending Estate Settings
2695 returnblock[0].Parameter = Helpers.StringToField(estateName); 2695 returnblock[0].Parameter = Helpers.StringToField(estateName);
2696 returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString()); 2696 // TODO: remove this cruft once MasterAvatar is fully deprecated
2697 //
2698 if(m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
2699 returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.EstateOwner.ToString());
2700 else
2701 returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString());
2697 returnblock[2].Parameter = Helpers.StringToField(estateID.ToString()); 2702 returnblock[2].Parameter = Helpers.StringToField(estateID.ToString());
2698 2703
2699 returnblock[3].Parameter = Helpers.StringToField(estateFlags.ToString()); 2704 returnblock[3].Parameter = Helpers.StringToField(estateFlags.ToString());
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
index 3e941cf..7a552a6 100644
--- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs
+++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
@@ -135,11 +135,14 @@ namespace OpenSim.Region.ClientStack
135 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised()); 135 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
136 scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight); 136 scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight);
137 137
138 // TODO: Remove this cruft once MasterAvatar is fully deprecated
138 //Master Avatar Setup 139 //Master Avatar Setup
139 UserProfileData masterAvatar; 140 UserProfileData masterAvatar;
140 if (scene.RegionInfo.MasterAvatarAssignedUUID != LLUUID.Zero) 141 if (scene.RegionInfo.MasterAvatarAssignedUUID != LLUUID.Zero)
141 { 142 {
142 masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID); 143 masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID);
144 scene.RegionInfo.MasterAvatarFirstName = masterAvatar.FirstName;
145 scene.RegionInfo.MasterAvatarLastName = masterAvatar.SurName;
143 } 146 }
144 else 147 else
145 { 148 {
@@ -151,7 +154,7 @@ namespace OpenSim.Region.ClientStack
151 154
152 if (masterAvatar != null) 155 if (masterAvatar != null)
153 { 156 {
154 m_log.Info("[PARCEL]: Found master avatar [" + masterAvatar.ID.ToString() + "]"); 157 m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [" + masterAvatar.ID.ToString() + "]", scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName);
155 scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID; 158 scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID;
156 } 159 }
157 else 160 else
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 410b4ac..f1e420e 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -123,15 +123,10 @@ namespace OpenSim.Region.Communications.OGS1
123 GridParams["server_uri"] = regionInfo.ServerURI; 123 GridParams["server_uri"] = regionInfo.ServerURI;
124 GridParams["region_secret"] = regionInfo.regionSecret; 124 GridParams["region_secret"] = regionInfo.regionSecret;
125 125
126 // part of an initial brutish effort to provide accurate information (as per the xml region spec) 126 if(regionInfo.MasterAvatarAssignedUUID != LLUUID.Zero)
127 // wrt the ownership of a given region 127 GridParams["master_avatar_uuid"] = regionInfo.MasterAvatarAssignedUUID.ToString();
128 // the (very bad) assumption is that this value is being read and handled inconsistently or 128 else
129 // not at all. Current strategy is to put the code in place to support the validity of this information 129 GridParams["master_avatar_uuid"] = regionInfo.EstateSettings.EstateOwner.ToString();
130 // and to roll forward debugging any issues from that point
131 //
132 // this particular section of the mod attempts to supply a value from the region's xml file to the grid
133 // server for the UUID of the region's owner (master avatar)
134 GridParams["master_avatar_uuid"] = regionInfo.MasterAvatarAssignedUUID.ToString();
135 130
136 // Package into an XMLRPC Request 131 // Package into an XMLRPC Request
137 ArrayList SendParams = new ArrayList(); 132 ArrayList SendParams = new ArrayList();
diff --git a/OpenSim/Region/DataSnapshot/EstateSnapshot.cs b/OpenSim/Region/DataSnapshot/EstateSnapshot.cs
index 99a4a0d..eccdcf1 100644
--- a/OpenSim/Region/DataSnapshot/EstateSnapshot.cs
+++ b/OpenSim/Region/DataSnapshot/EstateSnapshot.cs
@@ -28,6 +28,7 @@
28using System; 28using System;
29using System.Xml; 29using System.Xml;
30using libsecondlife; 30using libsecondlife;
31using OpenSim.Framework;
31using OpenSim.Region.DataSnapshot.Interfaces; 32using OpenSim.Region.DataSnapshot.Interfaces;
32using OpenSim.Region.Environment.Scenes; 33using OpenSim.Region.Environment.Scenes;
33 34
@@ -50,15 +51,20 @@ namespace OpenSim.Region.DataSnapshot.Providers
50 public XmlNode RequestSnapshotData(XmlDocument factory) 51 public XmlNode RequestSnapshotData(XmlDocument factory)
51 { 52 {
52 //Estate data section - contains who owns a set of sims and the name of the set. 53 //Estate data section - contains who owns a set of sims and the name of the set.
53 //In Opensim all the estate names are the same as the Master Avatar (owner of the sim)
54 //Now in DataSnapshotProvider module form! 54 //Now in DataSnapshotProvider module form!
55 XmlNode estatedata = factory.CreateNode(XmlNodeType.Element, "estate", ""); 55 XmlNode estatedata = factory.CreateNode(XmlNodeType.Element, "estate", "");
56 56
57 LLUUID ownerid = m_scene.RegionInfo.MasterAvatarAssignedUUID; 57 LLUUID ownerid = m_scene.RegionInfo.MasterAvatarAssignedUUID;
58 if (m_scene.RegionInfo.EstateSettings.EstateOwner != LLUUID.Zero)
59 ownerid = m_scene.RegionInfo.EstateSettings.EstateOwner;
60
61 // Can't fail because if it weren't in cache, we wouldn't be here
62 //
63 UserProfileData userProfile = m_scene.CommsManager.UserService.GetUserProfile(ownerid);
58 64
59 //TODO: Change to query userserver about the master avatar UUID ? 65 //TODO: Change to query userserver about the master avatar UUID ?
60 String firstname = m_scene.RegionInfo.MasterAvatarFirstName; 66 String firstname = userProfile.FirstName;
61 String lastname = m_scene.RegionInfo.MasterAvatarLastName; 67 String lastname = userProfile.SurName;
62 68
63 //TODO: Fix the marshalling system to have less copypasta gruntwork 69 //TODO: Fix the marshalling system to have less copypasta gruntwork
64 XmlNode user = factory.CreateNode(XmlNodeType.Element, "user", ""); 70 XmlNode user = factory.CreateNode(XmlNodeType.Element, "user", "");
@@ -113,4 +119,4 @@ namespace OpenSim.Region.DataSnapshot.Providers
113 119
114 #endregion 120 #endregion
115 } 121 }
116} \ No newline at end of file 122}
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 {