aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie Thielker2008-08-14 18:08:22 +0000
committerMelanie Thielker2008-08-14 18:08:22 +0000
commitc2f1771c63108c78b799a4f107cabe7e33984866 (patch)
tree40b76fc02e6ec938d841f3d51f11417131cfb850 /OpenSim/Region
parentMantis #1953 (diff)
downloadopensim-SC-c2f1771c63108c78b799a4f107cabe7e33984866.zip
opensim-SC-c2f1771c63108c78b799a4f107cabe7e33984866.tar.gz
opensim-SC-c2f1771c63108c78b799a4f107cabe7e33984866.tar.bz2
opensim-SC-c2f1771c63108c78b799a4f107cabe7e33984866.tar.xz
Make the estate owner work. Changes permissions checks to allow the
estate owner user the ability to add and remove estate managers, and have EM rights outside of that.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs31
-rw-r--r--OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs12
-rw-r--r--OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs8
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs6
-rw-r--r--OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs2
6 files changed, 31 insertions, 30 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 245f533..bfc7b41 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -5465,14 +5465,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5465 switch (Helpers.FieldToUTF8String(messagePacket.MethodData.Method)) 5465 switch (Helpers.FieldToUTF8String(messagePacket.MethodData.Method))
5466 { 5466 {
5467 case "getinfo": 5467 case "getinfo":
5468 5468 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5469 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId))
5470 { 5469 {
5471 OnDetailedEstateDataRequest(this, messagePacket.MethodData.Invoice); 5470 OnDetailedEstateDataRequest(this, messagePacket.MethodData.Invoice);
5472 } 5471 }
5473 break; 5472 break;
5474 case "setregioninfo": 5473 case "setregioninfo":
5475 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5474 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5476 { 5475 {
5477 OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter), convertParamStringToBool(messagePacket.ParamList[1].Parameter), 5476 OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter), convertParamStringToBool(messagePacket.ParamList[1].Parameter),
5478 convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter), 5477 convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter),
@@ -5485,7 +5484,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5485 5484
5486 break; 5485 break;
5487// case "texturebase": 5486// case "texturebase":
5488// if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5487// if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5489// { 5488// {
5490// foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) 5489// foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
5491// { 5490// {
@@ -5500,7 +5499,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5500// } 5499// }
5501// break; 5500// break;
5502 case "texturedetail": 5501 case "texturedetail":
5503 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5502 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5504 { 5503 {
5505 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) 5504 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
5506 { 5505 {
@@ -5518,7 +5517,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5518 5517
5519 break; 5518 break;
5520 case "textureheights": 5519 case "textureheights":
5521 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5520 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5522 { 5521 {
5523 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) 5522 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
5524 { 5523 {
@@ -5539,7 +5538,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5539 OnCommitEstateTerrainTextureRequest(this); 5538 OnCommitEstateTerrainTextureRequest(this);
5540 break; 5539 break;
5541 case "setregionterrain": 5540 case "setregionterrain":
5542 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5541 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5543 { 5542 {
5544 if (messagePacket.ParamList.Length != 9) 5543 if (messagePacket.ParamList.Length != 9)
5545 { 5544 {
@@ -5578,7 +5577,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5578 5577
5579 break; 5578 break;
5580 case "restart": 5579 case "restart":
5581 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5580 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5582 { 5581 {
5583 // There's only 1 block in the estateResetSim.. and that's the number of seconds till restart. 5582 // There's only 1 block in the estateResetSim.. and that's the number of seconds till restart.
5584 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) 5583 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
@@ -5592,7 +5591,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5592 } 5591 }
5593 break; 5592 break;
5594 case "estatechangecovenantid": 5593 case "estatechangecovenantid":
5595 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5594 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5596 { 5595 {
5597 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) 5596 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
5598 { 5597 {
@@ -5602,7 +5601,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5602 } 5601 }
5603 break; 5602 break;
5604 case "estateaccessdelta": // Estate access delta manages the banlist and allow list too. 5603 case "estateaccessdelta": // Estate access delta manages the banlist and allow list too.
5605 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5604 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5606 { 5605 {
5607 int estateAccessType = Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter)); 5606 int estateAccessType = Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter));
5608 OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter))); 5607 OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter)));
@@ -5610,7 +5609,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5610 } 5609 }
5611 break; 5610 break;
5612 case "simulatormessage": 5611 case "simulatormessage":
5613 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5612 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5614 { 5613 {
5615 LLUUID invoice = messagePacket.MethodData.Invoice; 5614 LLUUID invoice = messagePacket.MethodData.Invoice;
5616 LLUUID SenderID = new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter)); 5615 LLUUID SenderID = new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter));
@@ -5621,7 +5620,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5621 } 5620 }
5622 break; 5621 break;
5623 case "instantmessage": 5622 case "instantmessage":
5624 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5623 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5625 { 5624 {
5626 if (messagePacket.ParamList.Length < 5) 5625 if (messagePacket.ParamList.Length < 5)
5627 break; 5626 break;
@@ -5634,7 +5633,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5634 } 5633 }
5635 break; 5634 break;
5636 case "setregiondebug": 5635 case "setregiondebug":
5637 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5636 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5638 { 5637 {
5639 LLUUID invoice = messagePacket.MethodData.Invoice; 5638 LLUUID invoice = messagePacket.MethodData.Invoice;
5640 LLUUID SenderID = messagePacket.AgentData.AgentID; 5639 LLUUID SenderID = messagePacket.AgentData.AgentID;
@@ -5646,7 +5645,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5646 } 5645 }
5647 break; 5646 break;
5648 case "teleporthomeuser": 5647 case "teleporthomeuser":
5649 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5648 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5650 { 5649 {
5651 LLUUID invoice = messagePacket.MethodData.Invoice; 5650 LLUUID invoice = messagePacket.MethodData.Invoice;
5652 LLUUID SenderID = messagePacket.AgentData.AgentID; 5651 LLUUID SenderID = messagePacket.AgentData.AgentID;
@@ -5672,7 +5671,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5672 } 5671 }
5673 break; 5672 break;
5674 case "terrain": 5673 case "terrain":
5675 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5674 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5676 { 5675 {
5677 handlerBakeTerrain = OnBakeTerrain; 5676 handlerBakeTerrain = OnBakeTerrain;
5678 if (handlerBakeTerrain != null) 5677 if (handlerBakeTerrain != null)
@@ -5683,7 +5682,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5683 break; 5682 break;
5684 5683
5685 case "estatechangeinfo": 5684 case "estatechangeinfo":
5686 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) 5685 if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId, false))
5687 { 5686 {
5688 LLUUID invoice = messagePacket.MethodData.Invoice; 5687 LLUUID invoice = messagePacket.MethodData.Invoice;
5689 LLUUID SenderID = messagePacket.AgentData.AgentID; 5688 LLUUID SenderID = messagePacket.AgentData.AgentID;
diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
index 1be587a..d22aac6 100644
--- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs
@@ -218,7 +218,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
218 switch (estateAccessType) 218 switch (estateAccessType)
219 { 219 {
220 case 64: 220 case 64:
221 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) 221 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId, false) || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
222 { 222 {
223 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; 223 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
224 224
@@ -267,7 +267,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
267 } 267 }
268 break; 268 break;
269 case 128: 269 case 128:
270 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) 270 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId, false) || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
271 { 271 {
272 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; 272 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
273 273
@@ -303,9 +303,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
303 break; 303 break;
304 case 256: 304 case 256:
305 305
306 // This needs to be updated for SuperEstateOwnerUser.. a non existing user in the estatesettings.xml 306 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId, true) || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
307 // So make sure you really trust your region owners. because they can add other estate manaagers to your other estates
308 if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
309 { 307 {
310 m_scene.RegionInfo.EstateSettings.AddEstateManager(user); 308 m_scene.RegionInfo.EstateSettings.AddEstateManager(user);
311 m_scene.RegionInfo.EstateSettings.Save(); 309 m_scene.RegionInfo.EstateSettings.Save();
@@ -318,9 +316,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
318 316
319 break; 317 break;
320 case 512: 318 case 512:
321 // This needs to be updated for SuperEstateOwnerUser.. a non existing user in the estatesettings.xml 319 if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId, true) || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
322 // So make sure you really trust your region owners. because they can add other estate manaagers to your other estates
323 if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions())
324 { 320 {
325 m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); 321 m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
326 m_scene.RegionInfo.EstateSettings.Save(); 322 m_scene.RegionInfo.EstateSettings.Save();
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
index 0dfcb44..25ea282 100644
--- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
@@ -626,11 +626,17 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
626 return GenericCommunicationPermission(user, target); 626 return GenericCommunicationPermission(user, target);
627 } 627 }
628 628
629 private bool CanIssueEstateCommand(LLUUID user, Scene requestFromScene) 629 private bool CanIssueEstateCommand(LLUUID user, Scene requestFromScene, bool ownerCommand)
630 { 630 {
631 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 631 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
632 if (m_bypassPermissions) return m_bypassPermissionsValue; 632 if (m_bypassPermissions) return m_bypassPermissionsValue;
633 633
634 if (m_scene.RegionInfo.EstateSettings.IsEstateOwner(user))
635 return true;
636
637 if (ownerCommand)
638 return false;
639
634 return GenericEstatePermission(user); 640 return GenericEstatePermission(user);
635 } 641 }
636 642
diff --git a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
index c7d1ce2..0b2cc9e 100644
--- a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
@@ -761,7 +761,7 @@ namespace OpenSim.Region.Environment.Scenes
761 #endregion 761 #endregion
762 762
763 #region CAN ISSUE ESTATE COMMAND 763 #region CAN ISSUE ESTATE COMMAND
764 public delegate bool CanIssueEstateCommand(LLUUID user, Scene requestFromScene); 764 public delegate bool CanIssueEstateCommand(LLUUID user, Scene requestFromScene, bool ownerCommand);
765 private List<CanIssueEstateCommand> CanIssueEstateCommandCheckFunctions = new List<CanIssueEstateCommand>(); 765 private List<CanIssueEstateCommand> CanIssueEstateCommandCheckFunctions = new List<CanIssueEstateCommand>();
766 766
767 public void addCheckIssueEstateCommand(CanIssueEstateCommand delegateFunc) 767 public void addCheckIssueEstateCommand(CanIssueEstateCommand delegateFunc)
@@ -775,11 +775,11 @@ namespace OpenSim.Region.Environment.Scenes
775 CanIssueEstateCommandCheckFunctions.Remove(delegateFunc); 775 CanIssueEstateCommandCheckFunctions.Remove(delegateFunc);
776 } 776 }
777 777
778 public bool ExternalChecksCanIssueEstateCommand(LLUUID user) 778 public bool ExternalChecksCanIssueEstateCommand(LLUUID user, bool ownerCommand)
779 { 779 {
780 foreach (CanIssueEstateCommand check in CanIssueEstateCommandCheckFunctions) 780 foreach (CanIssueEstateCommand check in CanIssueEstateCommandCheckFunctions)
781 { 781 {
782 if (check(user, m_scene) == false) 782 if (check(user, m_scene, ownerCommand) == false)
783 { 783 {
784 return false; 784 return false;
785 } 785 }
diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs
index ca12a42..687d5e1 100644
--- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs
@@ -282,7 +282,7 @@ namespace OpenSim.Region.ScriptEngine.Common
282 public int osRegionRestart(double seconds) 282 public int osRegionRestart(double seconds)
283 { 283 {
284 m_host.AddScriptLPS(1); 284 m_host.AddScriptLPS(1);
285 if (World.ExternalChecks.ExternalChecksCanIssueEstateCommand(m_host.OwnerID)) 285 if (World.ExternalChecks.ExternalChecksCanIssueEstateCommand(m_host.OwnerID, false))
286 { 286 {
287 World.Restart((float)seconds); 287 World.Restart((float)seconds);
288 return 1; 288 return 1;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 914aeac..2e87754 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -121,7 +121,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
121 } 121 }
122 122
123 m_host.AddScriptLPS(1); 123 m_host.AddScriptLPS(1);
124 if (World.ExternalChecks.ExternalChecksCanIssueEstateCommand(m_host.OwnerID)) 124 if (World.ExternalChecks.ExternalChecksCanIssueEstateCommand(m_host.OwnerID, false))
125 { 125 {
126 World.Restart((float)seconds); 126 World.Restart((float)seconds);
127 return 1; 127 return 1;