From 6c71a04da8150f7948df7a43f532e525d44cc4e7 Mon Sep 17 00:00:00 2001 From: mingchen Date: Thu, 8 May 2008 19:37:57 +0000 Subject: *Added all the permission checks to the sceneexternalchecks and modified permission module to follow this. *This makes permission checking much more modular; allows restrictive and granting module to be made without modifying the existing permission module --- .../Environment/Scenes/SceneExternalChecks.cs | 581 +++++++++++++++++++-- 1 file changed, 541 insertions(+), 40 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs') diff --git a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs index 2d3e8e4..4e579b6 100644 --- a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs +++ b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Text; using libsecondlife; using OpenSim.Framework; +using OpenSim.Region.Environment.Interfaces; namespace OpenSim.Region.Environment.Scenes { @@ -42,63 +43,563 @@ namespace OpenSim.Region.Environment.Scenes m_scene = scene; } - #region REZ OBJECT - public delegate bool CanRezObject(int objectCount, LLUUID owner, IScene scene, LLVector3 objectPosition); - private List CanRezObjectCheckFunctions = new List(); + #region Object Permission Checks - public void addCheckRezObject(CanRezObject delegateFunc) - { - if(!CanRezObjectCheckFunctions.Contains(delegateFunc)) - CanRezObjectCheckFunctions.Add(delegateFunc); - } - public void removeCheckRezObject(CanRezObject delegateFunc) - { - if (CanRezObjectCheckFunctions.Contains(delegateFunc)) - CanRezObjectCheckFunctions.Remove(delegateFunc); - } + #region REZ OBJECT + public delegate bool CanRezObject(int objectCount, LLUUID owner, LLVector3 objectPosition, Scene scene); + private List CanRezObjectCheckFunctions = new List(); - public bool ExternalChecksCanRezObject(int objectCount, LLUUID owner, LLVector3 objectPosition) - { - foreach (CanRezObject check in CanRezObjectCheckFunctions) + public void addCheckRezObject(CanRezObject delegateFunc) + { + if(!CanRezObjectCheckFunctions.Contains(delegateFunc)) + CanRezObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckRezObject(CanRezObject delegateFunc) + { + if (CanRezObjectCheckFunctions.Contains(delegateFunc)) + CanRezObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanRezObject(int objectCount, LLUUID owner, LLVector3 objectPosition) { - if (check(objectCount, owner, m_scene, objectPosition) == false) + foreach (CanRezObject check in CanRezObjectCheckFunctions) { - return false; + if (check(objectCount, owner,objectPosition, m_scene) == false) + { + return false; + } } + return true; } - return true; - } + + #endregion + + #region DEREZ OBJECT + public delegate bool CanDeRezObject(LLUUID objectID, LLUUID deleter, Scene scene); + private List CanDeRezObjectCheckFunctions = new List(); + + public void addCheckDeRezObject(CanDeRezObject delegateFunc) + { + if (!CanDeRezObjectCheckFunctions.Contains(delegateFunc)) + CanDeRezObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckDeRezObject(CanDeRezObject delegateFunc) + { + if (CanDeRezObjectCheckFunctions.Contains(delegateFunc)) + CanDeRezObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanDeRezObject(LLUUID objectID, LLUUID deleter) + { + foreach (CanDeRezObject check in CanDeRezObjectCheckFunctions) + { + if (check(objectID,deleter,m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region TAKE OBJECT + public delegate bool CanTakeObject(LLUUID objectID, LLUUID stealer, Scene scene); + private List CanTakeObjectCheckFunctions = new List(); + + public void addCheckTakeObject(CanTakeObject delegateFunc) + { + if (!CanTakeObjectCheckFunctions.Contains(delegateFunc)) + CanTakeObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckTakeObject(CanTakeObject delegateFunc) + { + if (CanTakeObjectCheckFunctions.Contains(delegateFunc)) + CanTakeObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanTakeObject(LLUUID objectID, LLUUID stealer) + { + foreach (CanTakeObject check in CanTakeObjectCheckFunctions) + { + if (check(objectID, stealer, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region COPY OBJECT + public delegate bool CanCopyObject(int objectCount, LLUUID objectID, LLUUID owner, Scene scene, LLVector3 objectPosition); + private List CanCopyObjectCheckFunctions = new List(); + + public void addCheckCopyObject(CanCopyObject delegateFunc) + { + if (!CanCopyObjectCheckFunctions.Contains(delegateFunc)) + CanCopyObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckCopyObject(CanCopyObject delegateFunc) + { + if (CanCopyObjectCheckFunctions.Contains(delegateFunc)) + CanCopyObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanCopyObject(int objectCount, LLUUID objectID, LLUUID owner, LLVector3 objectPosition) + { + foreach (CanCopyObject check in CanCopyObjectCheckFunctions) + { + if (check(objectCount, objectID, owner, m_scene, objectPosition) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region EDIT OBJECT + public delegate bool CanEditObject(LLUUID objectID, LLUUID editorID, Scene scene); + private List CanEditObjectCheckFunctions = new List(); + + public void addCheckEditObject(CanEditObject delegateFunc) + { + if (!CanEditObjectCheckFunctions.Contains(delegateFunc)) + CanEditObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckEditObject(CanEditObject delegateFunc) + { + if (CanEditObjectCheckFunctions.Contains(delegateFunc)) + CanEditObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanEditObject(LLUUID objectID, LLUUID editorID) + { + foreach (CanEditObject check in CanEditObjectCheckFunctions) + { + if (check(objectID, editorID, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region MOVE OBJECT + public delegate bool CanMoveObject(LLUUID objectID, LLUUID moverID, Scene scene); + private List CanMoveObjectCheckFunctions = new List(); + + public void addCheckMoveObject(CanMoveObject delegateFunc) + { + if (!CanMoveObjectCheckFunctions.Contains(delegateFunc)) + CanMoveObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckMoveObject(CanMoveObject delegateFunc) + { + if (CanMoveObjectCheckFunctions.Contains(delegateFunc)) + CanMoveObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanMoveObject(LLUUID objectID, LLUUID moverID) + { + foreach (CanMoveObject check in CanMoveObjectCheckFunctions) + { + if (check(objectID,moverID,m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region RETURN OBJECT + public delegate bool CanReturnObject(LLUUID objectID, LLUUID returnerID, Scene scene); + private List CanReturnObjectCheckFunctions = new List(); + + public void addCheckReturnObject(CanReturnObject delegateFunc) + { + if (!CanReturnObjectCheckFunctions.Contains(delegateFunc)) + CanReturnObjectCheckFunctions.Add(delegateFunc); + } + public void removeCheckReturnObject(CanReturnObject delegateFunc) + { + if (CanReturnObjectCheckFunctions.Contains(delegateFunc)) + CanReturnObjectCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanReturnObject(LLUUID objectID, LLUUID returnerID) + { + foreach (CanReturnObject check in CanReturnObjectCheckFunctions) + { + if (check(objectID,returnerID,m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion #endregion - #region RUN SCRIPT - public delegate bool CanRunScript(LLUUID script, LLUUID owner, IScene scene); - private List CanRunScriptCheckFunctions = new List(); + #region Misc Permission Checks - public void addCheckRunScript(CanRunScript delegateFunc) - { - if (!CanRunScriptCheckFunctions.Contains(delegateFunc)) - CanRunScriptCheckFunctions.Add(delegateFunc); - } - public void removeCheckRunScript(CanRunScript delegateFunc) - { - if (CanRunScriptCheckFunctions.Contains(delegateFunc)) - CanRunScriptCheckFunctions.Remove(delegateFunc); - } + #region INSTANT MESSAGE + public delegate bool CanInstantMessage(LLUUID user, LLUUID target, Scene startScene); + private List CanInstantMessageCheckFunctions = new List(); - public bool ExternalChecksCanRunScript(LLUUID script, LLUUID owner) - { - foreach (CanRunScript check in CanRunScriptCheckFunctions) + public void addCheckInstantMessage(CanInstantMessage delegateFunc) + { + if (!CanInstantMessageCheckFunctions.Contains(delegateFunc)) + CanInstantMessageCheckFunctions.Add(delegateFunc); + } + public void removeCheckInstantMessage(CanInstantMessage delegateFunc) + { + if (CanInstantMessageCheckFunctions.Contains(delegateFunc)) + CanInstantMessageCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanInstantMessage(LLUUID user, LLUUID target) { - if (check(script,owner,m_scene) == false) + foreach (CanInstantMessage check in CanInstantMessageCheckFunctions) { - return false; + if (check(user,target,m_scene) == false) + { + return false; + } } + return true; } - return true; - } + + #endregion + + #region INVENTORY TRANSFER + public delegate bool CanInventoryTransfer(LLUUID user, LLUUID target, Scene startScene); + private List CanInventoryTransferCheckFunctions = new List(); + + public void addCheckInventoryTransfer(CanInventoryTransfer delegateFunc) + { + if (!CanInventoryTransferCheckFunctions.Contains(delegateFunc)) + CanInventoryTransferCheckFunctions.Add(delegateFunc); + } + public void removeCheckInventoryTransfer(CanInventoryTransfer delegateFunc) + { + if (CanInventoryTransferCheckFunctions.Contains(delegateFunc)) + CanInventoryTransferCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanInventoryTransfer(LLUUID user, LLUUID target) + { + foreach (CanInventoryTransfer check in CanInventoryTransferCheckFunctions) + { + if (check(user, target, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region EDIT SCRIPT + public delegate bool CanEditScript(LLUUID script, LLUUID user, Scene scene); + private List CanEditScriptCheckFunctions = new List(); + + public void addCheckEditScript(CanEditScript delegateFunc) + { + if (!CanEditScriptCheckFunctions.Contains(delegateFunc)) + CanEditScriptCheckFunctions.Add(delegateFunc); + } + public void removeCheckEditScript(CanEditScript delegateFunc) + { + if (CanEditScriptCheckFunctions.Contains(delegateFunc)) + CanEditScriptCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanEditScript(LLUUID script, LLUUID user) + { + foreach (CanEditScript check in CanEditScriptCheckFunctions) + { + if (check(script, user, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region RUN SCRIPT + public delegate bool CanRunScript(LLUUID script, LLUUID user, Scene scene); + private List CanRunScriptCheckFunctions = new List(); + + public void addCheckRunScript(CanRunScript delegateFunc) + { + if (!CanRunScriptCheckFunctions.Contains(delegateFunc)) + CanRunScriptCheckFunctions.Add(delegateFunc); + } + public void removeCheckRunScript(CanRunScript delegateFunc) + { + if (CanRunScriptCheckFunctions.Contains(delegateFunc)) + CanRunScriptCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanRunScript(LLUUID script, LLUUID user) + { + foreach (CanRunScript check in CanRunScriptCheckFunctions) + { + if (check(script, user, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region TERRAFORM LAND + public delegate bool CanTerraformLandCommand(LLUUID user, LLVector3 position, Scene requestFromScene); + private List CanTerraformLandCommandCheckFunctions = new List(); + + public void addCheckTerraformLandCommand(CanTerraformLandCommand delegateFunc) + { + if (!CanTerraformLandCommandCheckFunctions.Contains(delegateFunc)) + CanTerraformLandCommandCheckFunctions.Add(delegateFunc); + } + public void removeCheckTerraformLandCommand(CanTerraformLandCommand delegateFunc) + { + if (CanTerraformLandCommandCheckFunctions.Contains(delegateFunc)) + CanTerraformLandCommandCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanTerraformLand(LLUUID user, LLVector3 pos) + { + foreach (CanTerraformLandCommand check in CanTerraformLandCommandCheckFunctions) + { + if (check(user, pos, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region RUN CONSOLE COMMAND + public delegate bool CanRunConsoleCommand(LLUUID user, Scene requestFromScene); + private List CanRunConsoleCommandCheckFunctions = new List(); + + public void addCheckRunConsoleCommand(CanRunConsoleCommand delegateFunc) + { + if (!CanRunConsoleCommandCheckFunctions.Contains(delegateFunc)) + CanRunConsoleCommandCheckFunctions.Add(delegateFunc); + } + public void removeCheckRunConsoleCommand(CanRunConsoleCommand delegateFunc) + { + if (CanRunConsoleCommandCheckFunctions.Contains(delegateFunc)) + CanRunConsoleCommandCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanRunConsoleCommand(LLUUID user) + { + foreach (CanRunConsoleCommand check in CanRunConsoleCommandCheckFunctions) + { + if (check(user, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region CAN BE GODLIKE + public delegate bool CanBeGodLike(LLUUID user, Scene requestFromScene); + private List CanBeGodLikeCheckFunctions = new List(); + + public void addCheckBeGodLike(CanBeGodLike delegateFunc) + { + if (!CanBeGodLikeCheckFunctions.Contains(delegateFunc)) + CanBeGodLikeCheckFunctions.Add(delegateFunc); + } + public void removeCheckBeGodLike(CanBeGodLike delegateFunc) + { + if (CanBeGodLikeCheckFunctions.Contains(delegateFunc)) + CanBeGodLikeCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanBeGodLike(LLUUID user) + { + foreach (CanBeGodLike check in CanBeGodLikeCheckFunctions) + { + if (check(user, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion #endregion + #region Parcel and Estate Permission Checks + #region EDIT ESTATE TERRAIN + public delegate bool CanEditEstateTerrain(LLUUID user, Scene scene); + private List CanEditEstateTerrainCheckFunctions = new List(); + + public void addCheckEditEstateTerrain(CanEditEstateTerrain delegateFunc) + { + if (!CanEditEstateTerrainCheckFunctions.Contains(delegateFunc)) + CanEditEstateTerrainCheckFunctions.Add(delegateFunc); + } + public void removeCheckEditEstateTerrain(CanEditEstateTerrain delegateFunc) + { + if (CanEditEstateTerrainCheckFunctions.Contains(delegateFunc)) + CanEditEstateTerrainCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanEditEstateTerrain(LLUUID user) + { + foreach (CanEditEstateTerrain check in CanEditEstateTerrainCheckFunctions) + { + if (check(user, m_scene) == false) + { + return false; + } + } + return true; + } + + #endregion + + #region RESTART SIM + public delegate bool CanRestartSim(LLUUID user, Scene scene); + private List CanRestartSimCheckFunctions = new List(); + + public void addCheckRestartSim(CanRestartSim delegateFunc) + { + if (!CanRestartSimCheckFunctions.Contains(delegateFunc)) + CanRestartSimCheckFunctions.Add(delegateFunc); + } + public void removeCheckRestartSim(CanRestartSim delegateFunc) + { + if (CanRestartSimCheckFunctions.Contains(delegateFunc)) + CanRestartSimCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanRestartSim(LLUUID user) + { + foreach (CanRestartSim check in CanRestartSimCheckFunctions) + { + if (check(user, m_scene) == false) + { + return false; + } + } + return true; + } + #endregion + + #region EDIT PARCEL + public delegate bool CanEditParcel(LLUUID user, ILandObject parcel, Scene scene); + private List CanEditParcelCheckFunctions = new List(); + + public void addCheckEditParcel(CanEditParcel delegateFunc) + { + if (!CanEditParcelCheckFunctions.Contains(delegateFunc)) + CanEditParcelCheckFunctions.Add(delegateFunc); + } + public void removeCheckEditParcel(CanEditParcel delegateFunc) + { + if (CanEditParcelCheckFunctions.Contains(delegateFunc)) + CanEditParcelCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanEditParcel(LLUUID user, ILandObject parcel) + { + foreach (CanEditParcel check in CanEditParcelCheckFunctions) + { + if (check(user, parcel, m_scene) == false) + { + return false; + } + } + return true; + } + #endregion + + #region SELL PARCEL + public delegate bool CanSellParcel(LLUUID user, ILandObject parcel, Scene scene); + private List CanSellParcelCheckFunctions = new List(); + + public void addCheckSellParcel(CanSellParcel delegateFunc) + { + if (!CanSellParcelCheckFunctions.Contains(delegateFunc)) + CanSellParcelCheckFunctions.Add(delegateFunc); + } + public void removeCheckSellParcel(CanSellParcel delegateFunc) + { + if (CanSellParcelCheckFunctions.Contains(delegateFunc)) + CanSellParcelCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanSellParcel(LLUUID user, ILandObject parcel) + { + foreach (CanSellParcel check in CanSellParcelCheckFunctions) + { + if (check(user, parcel, m_scene) == false) + { + return false; + } + } + return true; + } + #endregion + + #region ABANDON PARCEL + public delegate bool CanAbandonParcel(LLUUID user, ILandObject parcel, Scene scene); + private List CanAbandonParcelCheckFunctions = new List(); + + public void addCheckAbandonParcel(CanAbandonParcel delegateFunc) + { + if (!CanAbandonParcelCheckFunctions.Contains(delegateFunc)) + CanAbandonParcelCheckFunctions.Add(delegateFunc); + } + public void removeCheckAbandonParcel(CanAbandonParcel delegateFunc) + { + if (CanAbandonParcelCheckFunctions.Contains(delegateFunc)) + CanAbandonParcelCheckFunctions.Remove(delegateFunc); + } + + public bool ExternalChecksCanAbandonParcel(LLUUID user, ILandObject parcel) + { + foreach (CanAbandonParcel check in CanAbandonParcelCheckFunctions) + { + if (check(user, parcel, m_scene) == false) + { + return false; + } + } + return true; + } + #endregion + #endregion + + } } -- cgit v1.1