aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorBlueWall2015-02-27 11:05:15 -0500
committerBlueWall2015-02-27 11:05:15 -0500
commita3681f3052fb5e98e31e7051329a5b748a8bdd8d (patch)
tree44a4c6beed75c2eb829a7770c2fa4a9498068a31 /OpenSim/Region/Framework
parentWhen an avatar is walking across a region border, force the first AgentUpdate... (diff)
downloadopensim-SC_OLD-a3681f3052fb5e98e31e7051329a5b748a8bdd8d.zip
opensim-SC_OLD-a3681f3052fb5e98e31e7051329a5b748a8bdd8d.tar.gz
opensim-SC_OLD-a3681f3052fb5e98e31e7051329a5b748a8bdd8d.tar.bz2
opensim-SC_OLD-a3681f3052fb5e98e31e7051329a5b748a8bdd8d.tar.xz
Adding dynamic ossl permission control
Add permission by identifying uuid (owner/creator/group) and function. Revoke permission in the same manner. Permission adjustments immediately effect running scripts ability to call os functions. osGrantScriptPermissions(UUID key,string function) Threat Level Severe osRevokeScriptPermissions(UUID key,string function) Threat Level Severe work sponsored by: Rage
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}