1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360 |
- /*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- using System;
- using System.Collections.Generic;
- using System.Reflection;
- using System.Text;
- using log4net;
- using OpenMetaverse;
- using OpenSim.Framework;
- using OpenSim.Region.Framework.Interfaces;
- namespace OpenSim.Region.Framework.Scenes
- {
- #region Delegates
- public delegate uint GenerateClientFlagsHandler(SceneObjectPart part, ScenePresence sp, uint curEffectivePerms);
- public delegate void SetBypassPermissionsHandler(bool value);
- public delegate bool BypassPermissionsHandler();
- public delegate bool PropagatePermissionsHandler();
- public delegate bool RezObjectHandler(int objectCount, UUID owner, Vector3 objectPosition);
- public delegate bool DeleteObjectHandlerByIDs(UUID objectID, UUID deleter);
- public delegate bool DeleteObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool TransferObjectHandler(UUID objectID, UUID recipient);
- public delegate bool TakeObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool SellGroupObjectHandler(UUID userID, UUID groupID);
- public delegate bool SellObjectHandlerByUserID(SceneObjectGroup sog, UUID userID, byte saleType);
- public delegate bool SellObjectHandler(SceneObjectGroup sog, ScenePresence sp, byte saleType);
- public delegate bool TakeCopyObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool DuplicateObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool EditObjectByIDsHandler(UUID objectID, UUID editorID);
- public delegate bool EditObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool EditObjectPermsHandler(SceneObjectGroup sog, UUID editorID);
- public delegate bool EditObjectInventoryHandler(UUID objectID, UUID editorID);
- public delegate bool MoveObjectHandler(SceneObjectGroup sog, ScenePresence sp);
- public delegate bool ObjectEntryHandler(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint);
- public delegate bool ObjectEnterWithScriptsHandler(SceneObjectGroup sog, ILandObject land);
- public delegate bool ReturnObjectsHandler(ILandObject land, ScenePresence sp, List<SceneObjectGroup> objects);
- public delegate bool InstantMessageHandler(UUID user, UUID target);
- public delegate bool InventoryTransferHandler(UUID user, UUID target);
- public delegate bool ViewScriptHandler(UUID script, UUID objectID, UUID user);
- public delegate bool ViewNotecardHandler(UUID script, UUID objectID, UUID user);
- public delegate bool EditScriptHandler(UUID script, UUID objectID, UUID user);
- public delegate bool EditNotecardHandler(UUID notecard, UUID objectID, UUID user);
- public delegate bool RunScriptHandlerByIDs(UUID script, UUID objectID, UUID user);
- public delegate bool RunScriptHandler(TaskInventoryItem item, SceneObjectPart part);
- public delegate bool CompileScriptHandler(UUID ownerUUID, int scriptType);
- public delegate bool StartScriptHandler(UUID script, UUID user);
- public delegate bool StopScriptHandler(UUID script, UUID user);
- public delegate bool ResetScriptHandler(UUID prim, UUID script, UUID user);
- public delegate bool TerraformLandHandler(UUID user, Vector3 position);
- public delegate bool RunConsoleCommandHandler(UUID user);
- public delegate bool IssueEstateCommandHandler(UUID user, bool ownerCommand);
- public delegate bool IsGodHandler(UUID user);
- public delegate bool IsGridGodHandler(UUID user);
- public delegate bool IsAdministratorHandler(UUID user);
- public delegate bool IsEstateManagerHandler(UUID user);
- public delegate bool EditParcelHandler(UUID user, ILandObject parcel);
- public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, bool allowManager);
- public delegate bool SellParcelHandler(UUID user, ILandObject parcel);
- public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel);
- public delegate bool ReclaimParcelHandler(UUID user, ILandObject parcel);
- public delegate bool DeedParcelHandler(UUID user, ILandObject parcel);
- public delegate bool DeedObjectHandler(ScenePresence sp, SceneObjectGroup sog, UUID targetGroupID);
- public delegate bool BuyLandHandler(UUID user, ILandObject parcel);
- public delegate bool LinkObjectHandler(UUID user, UUID objectID);
- public delegate bool DelinkObjectHandler(UUID user, UUID objectID);
- public delegate bool CreateObjectInventoryHandler(int invType, UUID objectID, UUID userID);
- public delegate bool CopyObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID);
- public delegate bool DoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart sourcePart, SceneObjectPart destPart);
- public delegate bool DoDropInObjectInv(InventoryItemBase item, ScenePresence sp, SceneObjectPart destPart);
- public delegate bool DeleteObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID);
- public delegate bool TransferObjectInventoryHandler(UUID itemID, UUID objectID, UUID userID);
- public delegate bool CreateUserInventoryHandler(int invType, UUID userID);
- public delegate bool EditUserInventoryHandler(UUID itemID, UUID userID);
- public delegate bool CopyUserInventoryHandler(UUID itemID, UUID userID);
- public delegate bool DeleteUserInventoryHandler(UUID itemID, UUID userID);
- public delegate bool TransferUserInventoryHandler(UUID itemID, UUID userID, UUID recipientID);
- public delegate bool TeleportHandler(UUID userID, Scene scene);
- public delegate bool ControlPrimMediaHandler(UUID userID, UUID primID, int face);
- public delegate bool InteractWithPrimMediaHandler(UUID userID, UUID primID, int face);
- #endregion
- public class ScenePermissions
- {
- // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private Scene m_scene;
- public ScenePermissions(Scene scene)
- {
- m_scene = scene;
- }
- #region Events
- public event GenerateClientFlagsHandler OnGenerateClientFlags;
- public event SetBypassPermissionsHandler OnSetBypassPermissions;
- public event BypassPermissionsHandler OnBypassPermissions;
- public event PropagatePermissionsHandler OnPropagatePermissions;
- public event RezObjectHandler OnRezObject;
- public event DeleteObjectHandlerByIDs OnDeleteObjectByIDs;
- public event DeleteObjectHandler OnDeleteObject;
- public event TransferObjectHandler OnTransferObject;
- public event TakeObjectHandler OnTakeObject;
- public event SellGroupObjectHandler OnSellGroupObject;
- public event SellObjectHandlerByUserID OnSellObjectByUserID;
- public event SellObjectHandler OnSellObject;
- public event TakeCopyObjectHandler OnTakeCopyObject;
- public event DuplicateObjectHandler OnDuplicateObject;
- public event EditObjectByIDsHandler OnEditObjectByIDs;
- public event EditObjectHandler OnEditObject;
- public event EditObjectPermsHandler OnEditObjectPerms;
- public event EditObjectInventoryHandler OnEditObjectInventory;
- public event MoveObjectHandler OnMoveObject;
- public event ObjectEntryHandler OnObjectEntry;
- public event ObjectEnterWithScriptsHandler OnObjectEnterWithScripts;
- public event ReturnObjectsHandler OnReturnObjects;
- public event InstantMessageHandler OnInstantMessage;
- public event InventoryTransferHandler OnInventoryTransfer;
- public event ViewScriptHandler OnViewScript;
- public event ViewNotecardHandler OnViewNotecard;
- public event EditScriptHandler OnEditScript;
- public event EditNotecardHandler OnEditNotecard;
- public event RunScriptHandlerByIDs OnRunScriptByIDs;
- public event RunScriptHandler OnRunScript;
- public event CompileScriptHandler OnCompileScript;
- public event StartScriptHandler OnStartScript;
- public event StopScriptHandler OnStopScript;
- public event ResetScriptHandler OnResetScript;
- public event TerraformLandHandler OnTerraformLand;
- public event RunConsoleCommandHandler OnRunConsoleCommand;
- public event IssueEstateCommandHandler OnIssueEstateCommand;
- public event IsGridGodHandler OnIsGridGod;
- public event IsAdministratorHandler OnIsAdministrator;
- public event IsEstateManagerHandler OnIsEstateManager;
- // public event EditParcelHandler OnEditParcel;
- public event EditParcelPropertiesHandler OnEditParcelProperties;
- public event SellParcelHandler OnSellParcel;
- public event AbandonParcelHandler OnAbandonParcel;
- public event ReclaimParcelHandler OnReclaimParcel;
- public event DeedParcelHandler OnDeedParcel;
- public event DeedObjectHandler OnDeedObject;
- public event BuyLandHandler OnBuyLand;
- public event LinkObjectHandler OnLinkObject;
- public event DelinkObjectHandler OnDelinkObject;
- public event CreateObjectInventoryHandler OnCreateObjectInventory;
- public event CopyObjectInventoryHandler OnCopyObjectInventory;
- public event DoObjectInvToObjectInv OnDoObjectInvToObjectInv;
- public event DoDropInObjectInv OnDropInObjectInv;
- public event DeleteObjectInventoryHandler OnDeleteObjectInventory;
- public event TransferObjectInventoryHandler OnTransferObjectInventory;
- public event CreateUserInventoryHandler OnCreateUserInventory;
- public event EditUserInventoryHandler OnEditUserInventory;
- public event CopyUserInventoryHandler OnCopyUserInventory;
- public event DeleteUserInventoryHandler OnDeleteUserInventory;
- public event TransferUserInventoryHandler OnTransferUserInventory;
- public event TeleportHandler OnTeleport;
- public event ControlPrimMediaHandler OnControlPrimMedia;
- public event InteractWithPrimMediaHandler OnInteractWithPrimMedia;
- #endregion
- #region Object Permission Checks
- public uint GenerateClientFlags( SceneObjectPart part, ScenePresence sp)
- {
- // libomv will moan about PrimFlags.ObjectYouOfficer being
- // obsolete...
- #pragma warning disable 0612
- const PrimFlags DEFAULT_FLAGS =
- PrimFlags.ObjectModify |
- PrimFlags.ObjectCopy |
- PrimFlags.ObjectMove |
- PrimFlags.ObjectTransfer |
- PrimFlags.ObjectYouOwner |
- PrimFlags.ObjectAnyOwner |
- PrimFlags.ObjectOwnerModify;
- #pragma warning restore 0612
- if (part == null)
- return 0;
- uint perms = part.GetEffectiveObjectFlags() | (uint)DEFAULT_FLAGS;
- GenerateClientFlagsHandler handlerGenerateClientFlags = OnGenerateClientFlags;
- if (handlerGenerateClientFlags != null)
- {
- Delegate[] list = handlerGenerateClientFlags.GetInvocationList();
- foreach (GenerateClientFlagsHandler check in list)
- {
- perms &= check(part, sp, perms);
- }
- }
- return perms;
- }
- public void SetBypassPermissions(bool value)
- {
- SetBypassPermissionsHandler handler = OnSetBypassPermissions;
- if (handler != null)
- handler(value);
- }
- public bool BypassPermissions()
- {
- BypassPermissionsHandler handler = OnBypassPermissions;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (BypassPermissionsHandler h in list)
- {
- if (h() == false)
- return false;
- }
- }
- return true;
- }
- public bool PropagatePermissions()
- {
- PropagatePermissionsHandler handler = OnPropagatePermissions;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (PropagatePermissionsHandler h in list)
- {
- if (h() == false)
- return false;
- }
- }
- return true;
- }
- #region REZ OBJECT
- public bool CanRezObject(int objectCount, UUID owner, Vector3 objectPosition)
- {
- RezObjectHandler handler = OnRezObject;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (RezObjectHandler h in list)
- {
- if (h(objectCount, owner,objectPosition) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region DELETE OBJECT
- public bool CanDeleteObject(UUID objectID, UUID deleter)
- {
- bool result = true;
- DeleteObjectHandlerByIDs handler = OnDeleteObjectByIDs;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (DeleteObjectHandlerByIDs h in list)
- {
- if (h(objectID, deleter) == false)
- {
- result = false;
- break;
- }
- }
- }
- return result;
- }
- public bool CanDeleteObject(SceneObjectGroup sog, IClientAPI client)
- {
- DeleteObjectHandler handler = OnDeleteObject;
- if (handler != null)
- {
- if(sog == null || client == null || client.SceneAgent == null)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (DeleteObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanTransferObject(UUID objectID, UUID recipient)
- {
- TransferObjectHandler handler = OnTransferObject;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (TransferObjectHandler h in list)
- {
- if (h(objectID, recipient) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region TAKE OBJECT
- public bool CanTakeObject(SceneObjectGroup sog, ScenePresence sp)
- {
- TakeObjectHandler handler = OnTakeObject;
- if (handler != null)
- {
- if(sog == null || sp == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (TakeObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- // m_log.DebugFormat(
- // "[SCENE PERMISSIONS]: CanTakeObject() fired for object {0}, taker {1}, result {2}",
- // objectID, AvatarTakingUUID, result);
- return true;
- }
- #endregion
- #region SELL GROUP OBJECT
- public bool CanSellGroupObject(UUID userID, UUID groupID)
- {
- SellGroupObjectHandler handler = OnSellGroupObject;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (SellGroupObjectHandler h in list)
- {
- if (h(userID, groupID) == false)
- return false;
- }
- }
- //m_log.DebugFormat(
- // "[SCENE PERMISSIONS]: CanSellGroupObject() fired for user {0}, group {1}, result {2}",
- // userID, groupID, result);
- return true;
- }
- #endregion
- #region SELL OBJECT
- public bool CanSellObject(IClientAPI client, SceneObjectGroup sog, byte saleType)
- {
- SellObjectHandler handler = OnSellObject;
- if (handler != null)
- {
- if(sog == null || client == null || client.SceneAgent == null)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (SellObjectHandler h in list)
- {
- if (h(sog, sp, saleType) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanSellObject(UUID userID, SceneObjectGroup sog, byte saleType)
- {
- SellObjectHandlerByUserID handler = OnSellObjectByUserID;
- if (handler != null)
- {
- if(sog == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (SellObjectHandlerByUserID h in list)
- {
- if (h(sog, userID, saleType) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region TAKE COPY OBJECT
- public bool CanTakeCopyObject(SceneObjectGroup sog, ScenePresence sp)
- {
- TakeCopyObjectHandler handler = OnTakeCopyObject;
- if (handler != null)
- {
- if(sog == null || sp == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (TakeCopyObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- // m_log.DebugFormat(
- // "[SCENE PERMISSIONS]: CanTakeCopyObject() fired for object {0}, user {1}, result {2}",
- // objectID, userID, result);
- return true;
- }
- #endregion
- #region DUPLICATE OBJECT
- public bool CanDuplicateObject(SceneObjectGroup sog, UUID agentID)
- {
- DuplicateObjectHandler handler = OnDuplicateObject;
- if (handler != null)
- {
- if(sog == null || sog.IsDeleted)
- return false;
- ScenePresence sp = m_scene.GetScenePresence(agentID);
- if(sp == null || sp.IsDeleted)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (DuplicateObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region persence EDIT or MOVE OBJECT
- private const uint CANSELECTMASK = (uint)(
- PrimFlags.ObjectMove |
- PrimFlags.ObjectModify |
- PrimFlags.ObjectOwnerModify
- );
- public bool CanChangeSelectedState(SceneObjectPart part, ScenePresence sp)
- {
- uint perms = GenerateClientFlags(part, sp);
- return (perms & CANSELECTMASK) != 0;
- }
- #endregion
- #region EDIT OBJECT
- public bool CanEditObject(UUID objectID, UUID editorID)
- {
- EditObjectByIDsHandler handler = OnEditObjectByIDs;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditObjectByIDsHandler h in list)
- {
- if (h(objectID, editorID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanEditObject(SceneObjectGroup sog, IClientAPI client)
- {
- EditObjectHandler handler = OnEditObject;
- if (handler != null)
- {
- if(sog == null || client == null || client.SceneAgent == null)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (EditObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanEditObjectPermissions(SceneObjectGroup sog, UUID editorID)
- {
- EditObjectPermsHandler handler = OnEditObjectPerms;
- if (handler != null)
- {
- if(sog == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (EditObjectPermsHandler h in list)
- {
- if (h(sog, editorID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanEditObjectInventory(UUID objectID, UUID editorID)
- {
- EditObjectInventoryHandler handler = OnEditObjectInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditObjectInventoryHandler h in list)
- {
- if (h(objectID, editorID) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region MOVE OBJECT
- public bool CanMoveObject(SceneObjectGroup sog, IClientAPI client)
- {
- MoveObjectHandler handler = OnMoveObject;
- if (handler != null)
- {
- if(sog == null || client == null || client.SceneAgent == null)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (MoveObjectHandler h in list)
- {
- if (h(sog, sp) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region OBJECT ENTRY
- public bool CanObjectEntry(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint)
- {
- ObjectEntryHandler handler = OnObjectEntry;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ObjectEntryHandler h in list)
- {
- if (h(sog, enteringRegion, newPoint) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanObjectEnterWithScripts(SceneObjectGroup sog, ILandObject land)
- {
- ObjectEnterWithScriptsHandler handler = OnObjectEnterWithScripts;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ObjectEnterWithScriptsHandler h in list)
- {
- if (h(sog, land) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region RETURN OBJECT
- public bool CanReturnObjects(ILandObject land, IClientAPI client, List<SceneObjectGroup> objects)
- {
- ReturnObjectsHandler handler = OnReturnObjects;
- if (handler != null)
- {
- if(objects == null)
- return false;
-
- ScenePresence sp = null;
- if(client != null && client.SceneAgent != null)
- sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (ReturnObjectsHandler h in list)
- {
- if (h(land, sp, objects) == false)
- return false;
- }
- }
- // m_log.DebugFormat(
- // "[SCENE PERMISSIONS]: CanReturnObjects() fired for user {0} for {1} objects on {2}, result {3}",
- // user, objects.Count, land.LandData.Name, result);
- return true;
- }
- #endregion
- #region INSTANT MESSAGE
- public bool CanInstantMessage(UUID user, UUID target)
- {
- InstantMessageHandler handler = OnInstantMessage;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (InstantMessageHandler h in list)
- {
- if (h(user, target) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region INVENTORY TRANSFER
- public bool CanInventoryTransfer(UUID user, UUID target)
- {
- InventoryTransferHandler handler = OnInventoryTransfer;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (InventoryTransferHandler h in list)
- {
- if (h(user, target) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region VIEW SCRIPT
- public bool CanViewScript(UUID script, UUID objectID, UUID user)
- {
- ViewScriptHandler handler = OnViewScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ViewScriptHandler h in list)
- {
- if (h(script, objectID, user) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanViewNotecard(UUID script, UUID objectID, UUID user)
- {
- ViewNotecardHandler handler = OnViewNotecard;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ViewNotecardHandler h in list)
- {
- if (h(script, objectID, user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region EDIT SCRIPT
- public bool CanEditScript(UUID script, UUID objectID, UUID user)
- {
- EditScriptHandler handler = OnEditScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditScriptHandler h in list)
- {
- if (h(script, objectID, user) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanEditNotecard(UUID script, UUID objectID, UUID user)
- {
- EditNotecardHandler handler = OnEditNotecard;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditNotecardHandler h in list)
- {
- if (h(script, objectID, user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region RUN SCRIPT (When Script Placed in Object)
- public bool CanRunScript(UUID script, UUID objectID, UUID user)
- {
- RunScriptHandlerByIDs handler = OnRunScriptByIDs;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (RunScriptHandlerByIDs h in list)
- {
- if (h(script, objectID, user) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanRunScript(TaskInventoryItem item, SceneObjectPart part)
- {
- RunScriptHandler handler = OnRunScript;
- if (handler != null)
- {
- if(item == null || part == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (RunScriptHandler h in list)
- {
- if (h(item, part) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region COMPILE SCRIPT (When Script needs to get (re)compiled)
- public bool CanCompileScript(UUID ownerUUID, int scriptType)
- {
- CompileScriptHandler handler = OnCompileScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (CompileScriptHandler h in list)
- {
- if (h(ownerUUID, scriptType) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region START SCRIPT (When Script run box is Checked after placed in object)
- public bool CanStartScript(UUID script, UUID user)
- {
- StartScriptHandler handler = OnStartScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (StartScriptHandler h in list)
- {
- if (h(script, user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region STOP SCRIPT (When Script run box is unchecked after placed in object)
- public bool CanStopScript(UUID script, UUID user)
- {
- StopScriptHandler handler = OnStopScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (StopScriptHandler h in list)
- {
- if (h(script, user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region RESET SCRIPT
- public bool CanResetScript(UUID prim, UUID script, UUID user)
- {
- ResetScriptHandler handler = OnResetScript;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ResetScriptHandler h in list)
- {
- if (h(prim, script, user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region TERRAFORM LAND
- public bool CanTerraformLand(UUID user, Vector3 pos)
- {
- TerraformLandHandler handler = OnTerraformLand;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (TerraformLandHandler h in list)
- {
- if (h(user, pos) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region RUN CONSOLE COMMAND
- public bool CanRunConsoleCommand(UUID user)
- {
- RunConsoleCommandHandler handler = OnRunConsoleCommand;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (RunConsoleCommandHandler h in list)
- {
- if (h(user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region CAN ISSUE ESTATE COMMAND
- public bool CanIssueEstateCommand(UUID user, bool ownerCommand)
- {
- IssueEstateCommandHandler handler = OnIssueEstateCommand;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (IssueEstateCommandHandler h in list)
- {
- if (h(user, ownerCommand) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region CAN BE GODLIKE
- public bool IsGod(UUID user)
- {
- IsAdministratorHandler handler = OnIsAdministrator;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (IsAdministratorHandler h in list)
- {
- if (h(user) == false)
- return false;
- }
- }
- return true;
- }
- public bool IsGridGod(UUID user)
- {
- IsGridGodHandler handler = OnIsGridGod;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (IsGridGodHandler h in list)
- {
- if (h(user) == false)
- return false;
- }
- }
- return true;
- }
- public bool IsAdministrator(UUID user)
- {
- IsAdministratorHandler handler = OnIsAdministrator;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (IsAdministratorHandler h in list)
- {
- if (h(user) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- public bool IsEstateManager(UUID user)
- {
- IsEstateManagerHandler handler = OnIsEstateManager;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (IsEstateManagerHandler h in list)
- {
- if (h(user) == false)
- return false;
- }
- }
- return true;
- }
- #region EDIT PARCEL
- public bool CanEditParcelProperties(UUID user, ILandObject parcel, GroupPowers p, bool allowManager)
- {
- EditParcelPropertiesHandler handler = OnEditParcelProperties;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditParcelPropertiesHandler h in list)
- {
- if (h(user, parcel, p, allowManager) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region SELL PARCEL
- public bool CanSellParcel(UUID user, ILandObject parcel)
- {
- SellParcelHandler handler = OnSellParcel;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (SellParcelHandler h in list)
- {
- if (h(user, parcel) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- #region ABANDON PARCEL
- public bool CanAbandonParcel(UUID user, ILandObject parcel)
- {
- AbandonParcelHandler handler = OnAbandonParcel;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (AbandonParcelHandler h in list)
- {
- if (h(user, parcel) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- public bool CanReclaimParcel(UUID user, ILandObject parcel)
- {
- ReclaimParcelHandler handler = OnReclaimParcel;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ReclaimParcelHandler h in list)
- {
- if (h(user, parcel) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDeedParcel(UUID user, ILandObject parcel)
- {
- DeedParcelHandler handler = OnDeedParcel;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (DeedParcelHandler h in list)
- {
- if (h(user, parcel) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDeedObject(IClientAPI client, SceneObjectGroup sog, UUID targetGroupID)
- {
- DeedObjectHandler handler = OnDeedObject;
- if (handler != null)
- {
- if(sog == null || client == null || client.SceneAgent == null || targetGroupID == UUID.Zero)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- Delegate[] list = handler.GetInvocationList();
- foreach (DeedObjectHandler h in list)
- {
- if (h(sp, sog, targetGroupID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanBuyLand(UUID user, ILandObject parcel)
- {
- BuyLandHandler handler = OnBuyLand;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (BuyLandHandler h in list)
- {
- if (h(user, parcel) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanLinkObject(UUID user, UUID objectID)
- {
- LinkObjectHandler handler = OnLinkObject;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (LinkObjectHandler h in list)
- {
- if (h(user, objectID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDelinkObject(UUID user, UUID objectID)
- {
- DelinkObjectHandler handler = OnDelinkObject;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (DelinkObjectHandler h in list)
- {
- if (h(user, objectID) == false)
- return false;
- }
- }
- return true;
- }
- #endregion
- /// Check whether the specified user is allowed to directly create the given inventory type in a prim's
- /// inventory (e.g. the New Script button in the 1.21 Linden Lab client).
- /// </summary>
- /// <param name="invType"></param>
- /// <param name="objectID"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public bool CanCreateObjectInventory(int invType, UUID objectID, UUID userID)
- {
- CreateObjectInventoryHandler handler = OnCreateObjectInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (CreateObjectInventoryHandler h in list)
- {
- if (h(invType, objectID, userID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanCopyObjectInventory(UUID itemID, UUID objectID, UUID userID)
- {
- CopyObjectInventoryHandler handler = OnCopyObjectInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (CopyObjectInventoryHandler h in list)
- {
- if (h(itemID, objectID, userID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart sourcePart, SceneObjectPart destPart)
- {
- DoObjectInvToObjectInv handler = OnDoObjectInvToObjectInv;
- if (handler != null)
- {
- if (sourcePart == null || destPart == null || item == null)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (DoObjectInvToObjectInv h in list)
- {
- if (h(item, sourcePart, destPart) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDropInObjectInv(InventoryItemBase item, IClientAPI client, SceneObjectPart destPart)
- {
- DoDropInObjectInv handler = OnDropInObjectInv;
- if (handler != null)
- {
- if (client == null || client.SceneAgent == null|| destPart == null || item == null)
- return false;
- ScenePresence sp = client.SceneAgent as ScenePresence;
- if(sp == null || sp.IsDeleted)
- return false;
- Delegate[] list = handler.GetInvocationList();
- foreach (DoDropInObjectInv h in list)
- {
- if (h(item, sp, destPart) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID)
- {
- DeleteObjectInventoryHandler handler = OnDeleteObjectInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (DeleteObjectInventoryHandler h in list)
- {
- if (h(itemID, objectID, userID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanTransferObjectInventory(UUID itemID, UUID objectID, UUID userID)
- {
- TransferObjectInventoryHandler handler = OnTransferObjectInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (TransferObjectInventoryHandler h in list)
- {
- if (h(itemID, objectID, userID) == false)
- return false;
- }
- }
- return true;
- }
- /// <summary>
- /// Check whether the specified user is allowed to create the given inventory type in their inventory.
- /// </summary>
- /// <param name="invType"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public bool CanCreateUserInventory(int invType, UUID userID)
- {
- CreateUserInventoryHandler handler = OnCreateUserInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (CreateUserInventoryHandler h in list)
- {
- if (h(invType, userID) == false)
- return false;
- }
- }
- return true;
- }
- /// <summary>
- /// Check whether the specified user is allowed to edit the given inventory item within their own inventory.
- /// </summary>
- /// <param name="itemID"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public bool CanEditUserInventory(UUID itemID, UUID userID)
- {
- EditUserInventoryHandler handler = OnEditUserInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (EditUserInventoryHandler h in list)
- {
- if (h(itemID, userID) == false)
- return false;
- }
- }
- return true;
- }
- /// <summary>
- /// Check whether the specified user is allowed to copy the given inventory item from their own inventory.
- /// </summary>
- /// <param name="itemID"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public bool CanCopyUserInventory(UUID itemID, UUID userID)
- {
- CopyUserInventoryHandler handler = OnCopyUserInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (CopyUserInventoryHandler h in list)
- {
- if (h(itemID, userID) == false)
- return false;
- }
- }
- return true;
- }
- /// <summary>
- /// Check whether the specified user is allowed to edit the given inventory item within their own inventory.
- /// </summary>
- /// <param name="itemID"></param>
- /// <param name="userID"></param>
- /// <returns></returns>
- public bool CanDeleteUserInventory(UUID itemID, UUID userID)
- {
- DeleteUserInventoryHandler handler = OnDeleteUserInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (DeleteUserInventoryHandler h in list)
- {
- if (h(itemID, userID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanTransferUserInventory(UUID itemID, UUID userID, UUID recipientID)
- {
- TransferUserInventoryHandler handler = OnTransferUserInventory;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (TransferUserInventoryHandler h in list)
- {
- if (h(itemID, userID, recipientID) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanTeleport(UUID userID)
- {
- TeleportHandler handler = OnTeleport;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (TeleportHandler h in list)
- {
- if (h(userID, m_scene) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanControlPrimMedia(UUID userID, UUID primID, int face)
- {
- ControlPrimMediaHandler handler = OnControlPrimMedia;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (ControlPrimMediaHandler h in list)
- {
- if (h(userID, primID, face) == false)
- return false;
- }
- }
- return true;
- }
- public bool CanInteractWithPrimMedia(UUID userID, UUID primID, int face)
- {
- InteractWithPrimMediaHandler handler = OnInteractWithPrimMedia;
- if (handler != null)
- {
- Delegate[] list = handler.GetInvocationList();
- foreach (InteractWithPrimMediaHandler h in list)
- {
- if (h(userID, primID, face) == false)
- return false;
- }
- }
- return true;
- }
- }
- }
|