diff options
author | BlueWall | 2015-02-27 11:05:15 -0500 |
---|---|---|
committer | BlueWall | 2015-02-27 11:05:15 -0500 |
commit | a3681f3052fb5e98e31e7051329a5b748a8bdd8d (patch) | |
tree | 44a4c6beed75c2eb829a7770c2fa4a9498068a31 /OpenSim/Region/Framework | |
parent | When an avatar is walking across a region border, force the first AgentUpdate... (diff) | |
download | opensim-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.cs | 61 |
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 | } |