aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs61
1 files changed, 61 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 21d47aa..018e837 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -170,6 +170,9 @@ namespace OpenSim.Region.Framework.Scenes
170 } 170 }
171 private bool m_scripts_enabled; 171 private bool m_scripts_enabled;
172 172
173 // Dynamic ossl function permissions
174 private Dictionary<string, List<UUID>> m_DynaPerms = new Dictionary<string, List<UUID>>();
175
173 public SynchronizeSceneHandler SynchronizeScene; 176 public SynchronizeSceneHandler SynchronizeScene;
174 177
175 /// <summary> 178 /// <summary>
@@ -5893,5 +5896,63 @@ namespace OpenSim.Region.Framework.Scenes
5893 5896
5894 m_eventManager.TriggerExtraSettingChanged(this, name, String.Empty); 5897 m_eventManager.TriggerExtraSettingChanged(this, name, String.Empty);
5895 } 5898 }
5899
5900 public bool AddOsslPerm (UUID key, string function)
5901 {
5902 StackTrace calls = new StackTrace ();
5903 string caller = calls.GetFrame (1).GetMethod ().Name;
5904 if (caller != "osGrantScriptPermissions")
5905 {
5906 m_log.ErrorFormat("[SCENE]: {0} cannot adjust script perms!",caller);
5907 return false;
5908 }
5909
5910 if (string.IsNullOrEmpty(function))
5911 return false;
5912
5913 if (!m_DynaPerms.ContainsKey(function))
5914 {
5915 List<UUID> keys = new List<UUID> ();
5916 keys.Add (key);
5917 m_DynaPerms[function] = keys;
5918 return true;
5919 }
5920
5921 if (!m_DynaPerms[function].Contains(key))
5922 m_DynaPerms[function].Add(key);
5923
5924 return true;
5925 }
5926
5927 public bool GetOsslPerms(UUID avatar, string function)
5928 {
5929 if (m_DynaPerms.ContainsKey(function))
5930 if(m_DynaPerms[function].Contains(avatar))
5931 return true;
5932
5933 return false;
5934 }
5935
5936 public bool RemoveOsslPerm(UUID key, string function)
5937 {
5938 StackTrace calls = new StackTrace ();
5939 string caller = calls.GetFrame (1).GetMethod ().Name;
5940 if (caller != "osRevokeScriptPermissions")
5941 {
5942 m_log.ErrorFormat("[SCENE]: {0} cannot adjust script perms!",caller);
5943 return false;
5944 }
5945
5946 if (m_DynaPerms.ContainsKey (function))
5947 {
5948 if (m_DynaPerms [function].Contains (key))
5949 {
5950 m_DynaPerms [function].Remove (key);
5951 if (m_DynaPerms [function].Count == 0)
5952 m_DynaPerms.Remove (function);
5953 }
5954 }
5955 return true;
5956 }
5896 } 5957 }
5897} 5958}