Ejemplo n.º 1
0
        public bool CanRunScript(UGUI agent, Vector3 location, UUID scriptassetid)
        {
            ParcelInfo pinfo;

            if (!Parcels.TryGetValue(location, out pinfo))
            {
                return(false);
            }

            if ((pinfo.Flags & ParcelFlags.AllowOtherScripts) != 0)
            {
                return(true);
            }
            else if (agent.EqualsGrid(pinfo.Owner) || IsPossibleGod(agent))
            {
                return(true);
            }
            else if ((pinfo.Flags & ParcelFlags.AllowGroupScripts) != 0 &&
                     pinfo.Group.IsSet &&
                     IsGroupMember(agent, pinfo.Group))
            {
                return(true);
            }
            else if (WhiteListedRunScriptAssetIds.Contains(scriptassetid))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public void Startup(ConfigurationLoader loader)
        {
            m_Scenes                 = loader.Scenes;
            m_Scenes.OnRegionAdd    += RegionAdded;
            m_Scenes.OnRegionRemove += RegionRemoved;

            /* register missing scenes */
            foreach (SceneInterface si in m_Scenes.Values)
            {
                if (!m_RegisteredScenes.Contains(si))
                {
                    RegionAdded(si);
                }
            }
        }
Ejemplo n.º 3
0
        private void UpdateGodAgentsList(RwLockedList <UGUI> list, UUID regionId, string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                list.Clear();
            }
            else
            {
                string[] god_agents_list = value.Split(new char[] { ',' });
                var      new_gods        = new List <UGUI>();
                foreach (string god_agent in god_agents_list)
                {
                    UGUI uui;
                    try
                    {
                        uui = new UGUI(god_agent);
                    }
                    catch
                    {
                        m_Log.WarnFormat("Invalid UUI '{1}' found in {0}/god_agents variable", regionId.ToString(), god_agent);
                        continue;
                    }
                    new_gods.Add(uui);
                }

                foreach (UGUI god in new List <UGUI>(list))
                {
                    if (!new_gods.Contains(god))
                    {
                        list.Remove(god);
                    }
                }

                foreach (UGUI god in new_gods)
                {
                    if (!list.Contains(god))
                    {
                        list.Add(god);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /** <summary>special call variant for supporting assetid based overrides</summary> */
        public bool CanRez(UUID rezzerid, UGUI agent, Vector3 location, UUID assetID, UUID rezzingassetid)
        {
            ParcelInfo pinfo;

            if (BlackListedRezzableAssetIds.Contains(assetID))
            {
                OnRezzingDenied?.Invoke(ID, agent, rezzerid, RezDenialReason.Blacklisted, rezzingassetid, assetID);
                return(false);
            }

            if (!Parcels.TryGetValue(location, out pinfo))
            {
                OnRezzingDenied?.Invoke(ID, agent, rezzerid, RezDenialReason.ParcelNotFound, rezzingassetid, assetID);
                return(false);
            }

            if ((pinfo.Flags & ParcelFlags.CreateObjects) != 0 && !WhiteListedRezzingScriptAssetIds.Contains(rezzingassetid))
            {
                return(true);
            }
            else if (assetID != UUID.Zero && WhiteListedRezzableAssetIds.Contains(assetID))
            {
                /* white listed asset */
                return(true);
            }
            else if (agent.EqualsGrid(pinfo.Owner) || IsPossibleGod(agent))
            {
                return(true);
            }
            else if ((pinfo.Flags & ParcelFlags.CreateGroupObjects) != 0 &&
                     pinfo.Group.IsSet &&
                     HasGroupPower(agent, pinfo.Group, GroupPowers.AllowRez))
            {
                return(true);
            }
            else
            {
                OnRezzingDenied?.Invoke(ID, agent, rezzerid, RezDenialReason.ParcelNotAllowed, rezzingassetid, assetID);
                return(false);
            }
        }