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); } }
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); } } }
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); } } } }
/** <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); } }