opensim – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | eva | 1 | using System; |
2 | using System.Collections.Generic; |
||
3 | using System.Reflection; |
||
4 | |||
5 | using Nini.Config; |
||
6 | using log4net; |
||
7 | |||
8 | using OpenMetaverse; |
||
9 | |||
10 | namespace OpenSim.Framework |
||
11 | { |
||
12 | public class AssetPermissions |
||
13 | { |
||
14 | private static readonly ILog m_log = |
||
15 | LogManager.GetLogger( |
||
16 | MethodBase.GetCurrentMethod().DeclaringType); |
||
17 | |||
18 | private bool[] m_DisallowExport, m_DisallowImport; |
||
19 | private string[] m_AssetTypeNames; |
||
20 | |||
21 | public AssetPermissions(IConfig config) |
||
22 | { |
||
23 | Type enumType = typeof(AssetType); |
||
24 | m_AssetTypeNames = Enum.GetNames(enumType); |
||
25 | for (int i = 0; i < m_AssetTypeNames.Length; i++) |
||
26 | m_AssetTypeNames[i] = m_AssetTypeNames[i].ToLower(); |
||
27 | int n = Enum.GetValues(enumType).Length; |
||
28 | m_DisallowExport = new bool[n]; |
||
29 | m_DisallowImport = new bool[n]; |
||
30 | |||
31 | LoadPermsFromConfig(config, "DisallowExport", m_DisallowExport); |
||
32 | LoadPermsFromConfig(config, "DisallowImport", m_DisallowImport); |
||
33 | |||
34 | } |
||
35 | |||
36 | private void LoadPermsFromConfig(IConfig assetConfig, string variable, bool[] bitArray) |
||
37 | { |
||
38 | if (assetConfig == null) |
||
39 | return; |
||
40 | |||
41 | string perms = assetConfig.GetString(variable, String.Empty); |
||
42 | string[] parts = perms.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); |
||
43 | foreach (string s in parts) |
||
44 | { |
||
45 | int index = Array.IndexOf(m_AssetTypeNames, s.Trim().ToLower()); |
||
46 | if (index >= 0) |
||
47 | bitArray[index] = true; |
||
48 | else |
||
49 | m_log.WarnFormat("[Asset Permissions]: Invalid AssetType {0}", s); |
||
50 | } |
||
51 | |||
52 | } |
||
53 | |||
54 | public bool AllowedExport(sbyte type) |
||
55 | { |
||
56 | string assetTypeName = ((AssetType)type).ToString(); |
||
57 | |||
58 | int index = Array.IndexOf(m_AssetTypeNames, assetTypeName.ToLower()); |
||
59 | if (index >= 0 && m_DisallowExport[index]) |
||
60 | { |
||
61 | m_log.DebugFormat("[Asset Permissions]: Export denied: configuration does not allow export of AssetType {0}", assetTypeName); |
||
62 | return false; |
||
63 | } |
||
64 | |||
65 | return true; |
||
66 | } |
||
67 | |||
68 | public bool AllowedImport(sbyte type) |
||
69 | { |
||
70 | string assetTypeName = ((AssetType)type).ToString(); |
||
71 | |||
72 | int index = Array.IndexOf(m_AssetTypeNames, assetTypeName.ToLower()); |
||
73 | if (index >= 0 && m_DisallowImport[index]) |
||
74 | { |
||
75 | m_log.DebugFormat("[Asset Permissions]: Import denied: configuration does not allow import of AssetType {0}", assetTypeName); |
||
76 | return false; |
||
77 | } |
||
78 | |||
79 | return true; |
||
80 | } |
||
81 | |||
82 | |||
83 | } |
||
84 | } |