aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/EstateSettings.cs11
-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
7 files changed, 42 insertions, 30 deletions
diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs
index 8a00f9d..8b076fe 100644
--- a/OpenSim/Framework/EstateSettings.cs
+++ b/OpenSim/Framework/EstateSettings.cs
@@ -312,9 +312,20 @@ namespace OpenSim.Framework
312 312
313 public bool IsEstateManager(LLUUID avatarID) 313 public bool IsEstateManager(LLUUID avatarID)
314 { 314 {
315 if (IsEstateOwner(avatarID))
316 return true;
317
315 return l_EstateManagers.Contains(avatarID); 318 return l_EstateManagers.Contains(avatarID);
316 } 319 }
317 320
321 public bool IsEstateOwner(LLUUID avatarID)
322 {
323 if (avatarID == m_EstateOwner)
324 return true;
325
326 return false;
327 }
328
318 public bool IsBanned(LLUUID avatarID) 329 public bool IsBanned(LLUUID avatarID)
319 { 330 {
320 foreach (EstateBan ban in l_EstateBans) 331 foreach (EstateBan ban in l_EstateBans)
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;